1
/***************************************************************************
2
* Copyright (C) 2005 by Adam Treat *
5
* Copyright (C) 2004 by Scott Wheeler *
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. *
13
***************************************************************************/
15
#ifndef DATATABLEBOX_H
16
#define DATATABLEBOX_H
19
#include "datatable.h"
22
#include <klistview.h>
30
class DataTableSearch;
31
class SearchDataTable;
37
* This is the data table selection box that is by default on the right side of
38
* DataKiosk's main widget (DataTableSplitter).
41
class DataTableBox : public KListView, public Project
47
typedef QValueList<Item *> ItemList;
50
friend class TreeViewMode;
52
DataTableBox( QWidget *parent, QWidgetStack *dataTableStack,
53
const char *name = 0 );
55
virtual ~DataTableBox();
57
virtual void initialize();
59
virtual void uglyInitialize();
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();
70
virtual void editSearch();
71
virtual void removeSearch();
72
virtual void invokeSearch( const QString &search );
74
virtual void advancedSearchRequested();
76
Item *dropItem() const
85
virtual void slotInitialize()
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();
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 );
110
void searchRemoved();
111
void searchInvoked( const QString &search );
112
void advancedSearchClicked();
113
void splashMessage( const QString &txt, int alignment, const QColor &color );
119
virtual void contentsMousePressEvent( QMouseEvent *e );
120
virtual void contentsMouseReleaseEvent( QMouseEvent *e );
121
virtual void keyPressEvent( QKeyEvent *e );
122
virtual void keyReleaseEvent( QKeyEvent *e );
124
QValueList<Item *> selectedItems();
125
void setSingleItem( QListViewItem *item );
127
void setupItem( Item *item );
128
void performTreeViewSetup();
129
int viewModeIndex() const
131
return m_viewModeIndex;
133
ViewMode *viewMode() const
135
return m_viewModes[ m_viewModeIndex ];
140
* Catches QListBox::currentChanged(QListBoxItem *), does a cast and then re-emits
141
* the signal as currentChanged(Item *).
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();
150
KPopupMenu *m_listMenu;
151
DataClip *m_clipboard;
152
KPopupMenu *m_reportMenu;
153
QPtrDict<Item> m_dataTableDict;
155
QValueList<ViewMode *> m_viewModes;
156
KAction *m_k3bAction;
158
bool m_doingMultiSelect;
159
bool m_treeViewSetup;
166
class DataTableBox::Item : public QObject, public KListViewItem
168
friend class DataTableBox;
169
friend class ViewMode;
170
friend class CompactViewMode;
171
friend class TreeViewMode;
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
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 );
186
QWidget *itemWidget() const
190
DataTableBox *listView() const
192
return static_cast<DataTableBox *>( KListViewItem::listView() );
194
QString iconName() const
199
void setIconName( const QString &iconName )
201
m_iconName = iconName;
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 & )
212
virtual void setText( int column, const QString &text );
214
virtual QString text( int column ) const
216
return KListViewItem::text( column );
219
virtual void setup();
222
void repaintRequested();
223
void slotSetName( const QString &name );
226
void itemDestroyed( Item *item );
229
// setup() was already taken.
235
static Item *m_collectionItem;