~ubuntu-branches/ubuntu/maverick/datakiosk/maverick

« back to all changes in this revision

Viewing changes to src/src/datatablebox.h

  • Committer: Bazaar Package Importer
  • Author(s): Jonathan Riddell
  • Date: 2005-06-27 22:48:06 UTC
  • Revision ID: james.westby@ubuntu.com-20050627224806-8farkci1dc2onhbs
Tags: upstream-0.7
ImportĀ upstreamĀ versionĀ 0.7

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/***************************************************************************
 
2
 *   Copyright (C) 2005 by Adam Treat                                      *
 
3
 *   treat@kde.org                                                         *
 
4
 *                                                                         *
 
5
 *   Copyright (C) 2004 by Scott Wheeler                                   *
 
6
 *   wheeler@kde.org                                                       *
 
7
 *                                                                         *
 
8
 *   This program is free software; you can redistribute it and/or modify  *
 
9
 *   it under the terms of the GNU General Public License as published by  *
 
10
 *   the Free Software Foundation; either version 2 of the License, or     *
 
11
 *   (at your option) any later version.                                   *
 
12
 *                                                                         *
 
13
 ***************************************************************************/
 
14
 
 
15
#ifndef DATATABLEBOX_H
 
16
#define DATATABLEBOX_H
 
17
 
 
18
#include "project.h"
 
19
#include "datatable.h"
 
20
 
 
21
#include <kdebug.h>
 
22
#include <klistview.h>
 
23
 
 
24
#include <qptrdict.h>
 
25
 
 
26
class DataClip;
 
27
class DataTable;
 
28
class DataTableItem;
 
29
class ViewMode;
 
30
class DataTableSearch;
 
31
class SearchDataTable;
 
32
 
 
33
class KPopupMenu;
 
34
class KSelectAction;
 
35
 
 
36
/**
 
37
 * This is the data table selection box that is by default on the right side of
 
38
 * DataKiosk's main widget (DataTableSplitter).
 
39
 */
 
40
 
 
41
class DataTableBox : public KListView, public Project
 
42
{
 
43
    Q_OBJECT
 
44
 
 
45
public:
 
46
    class Item;
 
47
    typedef QValueList<Item *> ItemList;
 
48
 
 
49
    friend class Item;
 
50
    friend class TreeViewMode;
 
51
 
 
52
    DataTableBox( QWidget *parent, QWidgetStack *dataTableStack,
 
53
                  const char *name = 0 );
 
54
 
 
55
    virtual ~DataTableBox();
 
56
 
 
57
    virtual void initialize();
 
58
    //UGLY HACK
 
59
    virtual void uglyInitialize();
 
60
 
 
61
    virtual void newProject();
 
62
    virtual void closeProject();
 
63
    virtual void clipboard();
 
64
    virtual void raise( DataTable *dataTable );
 
65
    virtual void raise( DataReport *dataReport );
 
66
    virtual void removeTable();
 
67
    virtual void sortTables();
 
68
    virtual void removeReport();
 
69
 
 
70
    virtual void editSearch();
 
71
    virtual void removeSearch();
 
72
    virtual void invokeSearch( const QString &search );
 
73
 
 
74
    virtual void advancedSearchRequested();
 
75
 
 
76
    Item *dropItem() const
 
77
    {
 
78
        return m_dropItem;
 
79
    }
 
80
 
 
81
    bool hasSelection();
 
82
 
 
83
public slots:
 
84
    //UGLY HACK
 
85
    virtual void slotInitialize()
 
86
    {
 
87
        initialize();
 
88
    }
 
89
    virtual DataTable *currentDataTable() const;
 
90
    virtual DataReport *currentDataReport() const;
 
91
    virtual DataTable *rootOfCurrentDataTable();
 
92
    virtual DataTableList dataTablesInCurrentTree();
 
93
    virtual DataTableList dataTablesInDataTableTree( DataTable* dataTable );
 
94
    virtual DataTableList childrenOfDataTable( DataTable* dataTable );
 
95
    virtual void scrollTableUp();
 
96
    virtual void scrollTableDown();
 
97
 
 
98
protected:
 
99
    virtual void setSplashMessage( const QString &txt );
 
100
    virtual void setupDataTable( DataTable *dataTable, const QString &iconName );
 
101
    virtual void setupDataTable( DataTable *dataTable, const QString &iconName, Item *parentItem );
 
102
    virtual void setupDataTable( DataTable *dataTable, const QString &iconName, DataTable *parentTable );
 
103
    virtual void setIconName( DataTable* dataTable, const QString &iconName );
 
104
    virtual void setupDataReport( DataReport *dataReport, const QString &iconName, Item *parentItem );
 
105
    virtual void setupDataReport( DataReport *dataReport, const QString &iconName, DataTable *parentTable );
 
106
    virtual void setIconName( DataReport* dataReport, const QString &iconName );
 
107
 
 
108
signals:
 
109
    void searchEdited();
 
110
    void searchRemoved();
 
111
    void searchInvoked( const QString &search );
 
112
    void advancedSearchClicked();
 
113
    void splashMessage( const QString &txt, int alignment, const QColor &color );
 
114
 
 
115
private:
 
116
    void readConfig();
 
117
    void saveConfig();
 
118
 
 
119
    virtual void contentsMousePressEvent( QMouseEvent *e );
 
120
    virtual void contentsMouseReleaseEvent( QMouseEvent *e );
 
121
    virtual void keyPressEvent( QKeyEvent *e );
 
122
    virtual void keyReleaseEvent( QKeyEvent *e );
 
123
 
 
124
    QValueList<Item *> selectedItems();
 
125
    void setSingleItem( QListViewItem *item );
 
126
 
 
127
    void setupItem( Item *item );
 
128
    void performTreeViewSetup();
 
129
    int viewModeIndex() const
 
130
    {
 
131
        return m_viewModeIndex;
 
132
    }
 
133
    ViewMode *viewMode() const
 
134
    {
 
135
        return m_viewModes[ m_viewModeIndex ];
 
136
    }
 
137
 
 
138
private slots:
 
139
    /**
 
140
     * Catches QListBox::currentChanged(QListBoxItem *), does a cast and then re-emits
 
141
     * the signal as currentChanged(Item *).
 
142
     */
 
143
    void slotItemDestroyed( Item* item );
 
144
    void slotWidgetChanged();
 
145
    void slotShowContextMenu( QListViewItem *item, const QPoint &point, int );
 
146
    void slotSetViewMode( int index );
 
147
    void clipOnWindowShown();
 
148
 
 
149
private:
 
150
    KPopupMenu *m_listMenu;
 
151
    DataClip *m_clipboard;
 
152
    KPopupMenu *m_reportMenu;
 
153
    QPtrDict<Item> m_dataTableDict;
 
154
    int m_viewModeIndex;
 
155
    QValueList<ViewMode *> m_viewModes;
 
156
    KAction *m_k3bAction;
 
157
    bool m_hasSelection;
 
158
    bool m_doingMultiSelect;
 
159
    bool m_treeViewSetup;
 
160
    Item *m_dropItem;
 
161
    bool m_clipShown;
 
162
};
 
163
 
 
164
 
 
165
 
 
166
class DataTableBox::Item : public QObject, public KListViewItem
 
167
{
 
168
    friend class DataTableBox;
 
169
    friend class ViewMode;
 
170
    friend class CompactViewMode;
 
171
    friend class TreeViewMode;
 
172
 
 
173
    Q_OBJECT
 
174
 
 
175
    // moc won't let me create private QObject subclasses and Qt won't let me
 
176
    // make the destructor protected, so here's the closest hack that will
 
177
    // compile.
 
178
 
 
179
public:
 
180
    virtual ~Item();
 
181
 
 
182
protected:
 
183
    Item( DataTableBox *listBox, const QString &icon, const QString &text, QWidget *l = 0 );
 
184
    Item( Item *parent, const QString &icon, const QString &text, QWidget *l = 0 );
 
185
 
 
186
    QWidget *itemWidget() const
 
187
    {
 
188
        return m_widget;
 
189
    }
 
190
    DataTableBox *listView() const
 
191
    {
 
192
        return static_cast<DataTableBox *>( KListViewItem::listView() );
 
193
    }
 
194
    QString iconName() const
 
195
    {
 
196
        return m_iconName;
 
197
    }
 
198
 
 
199
    void setIconName( const QString &iconName )
 
200
    {
 
201
        m_iconName = iconName;
 
202
    }
 
203
 
 
204
    QString text() const
 
205
    {
 
206
        return m_text;
 
207
    }
 
208
    virtual int compare( QListViewItem *i, int col, bool ) const;
 
209
    virtual void paintCell( QPainter *p, const QColorGroup &colorGroup, int column, int width, int align );
 
210
    virtual void paintFocus( QPainter *, const QColorGroup &, const QRect & )
 
211
    {}
 
212
    virtual void setText( int column, const QString &text );
 
213
 
 
214
    virtual QString text( int column ) const
 
215
    {
 
216
        return KListViewItem::text( column );
 
217
    }
 
218
 
 
219
    virtual void setup();
 
220
 
 
221
public slots:
 
222
    void repaintRequested();
 
223
    void slotSetName( const QString &name );
 
224
 
 
225
signals:
 
226
    void itemDestroyed( Item *item );
 
227
 
 
228
private:
 
229
    // setup() was already taken.
 
230
    void init();
 
231
 
 
232
    QWidget *m_widget;
 
233
    QString m_text;
 
234
    QString m_iconName;
 
235
    static Item *m_collectionItem;
 
236
};
 
237
 
 
238
#endif