00001 #include <QtCore/QHash> 00002 #include <QtCore/QModelIndex> 00003 #include <QtCore/QString> 00004 00005 #include "ACE/ui_MainWindow_BASE.h" 00006 #include "ACE/accesstocool.h" 00007 00008 class QTreeView; 00009 class QCloseEvent; 00010 class QDockWidget; 00011 class FolderTreeModel; 00012 class FolderTableModel; 00013 class FolderTableDockWidget; 00014 class FolderTableView; 00015 class ConnectionDialog; 00016 class FilterBuilderDockWidget; 00017 class FolderOpenDialog; 00018 00019 00020 class MainWindow : public QMainWindow, private Ui::MainWindow_BASE 00021 { 00022 Q_OBJECT 00023 00024 public: 00025 MainWindow( QWidget* parent = 0 ); 00026 ~MainWindow(); 00027 00028 private: 00029 QHash< QModelIndex, FolderTableModel* > folderTableModels; // ModelIndex is for folder tree 00030 QHash< const FolderTableModel*, FolderTableDockWidget* > folderTableDockWidgets; 00031 QHash< FolderTreeModel*, QTreeView* > folderTreeViews; 00032 ConnectionDialog* connectionDialog; 00033 FolderOpenDialog* folderOpenDialog; 00034 FilterBuilderDockWidget* filterBuilderDockWidget; 00035 QWidget* defaultConnectionTab; 00036 unsigned int connectionCounter; 00037 00038 void setConnections(); 00039 void initialise_ACE_Settings(); 00040 void closeEvent( QCloseEvent* event ); 00041 void loadGUISettings(); 00042 void saveGUISettings(); 00043 bool commitAll( bool ask = false, FolderTableModel* thisModelOnly = NULL ); 00044 void removeFolder( FolderTableModel* theModel, QModelIndex treeIndex = QModelIndex() ); 00045 // Test routines 00046 void testRoutine(); 00047 00048 public slots: 00049 void slotCreateFolderTable( const QModelIndex& fTreeIndex ); 00050 void slotCreateFolderTree( cool::IDatabasePtr dbPtr, const QString connectionString ); 00051 void slotConnectionOpen(); 00052 void slotConnectionDisconnect(); 00053 void slotFolderCommit(); 00054 void slotFolderCommitAll(); 00055 void slotFolderFilter( bool enabled ); 00056 void slotTableModified( const FolderTableModel* modifiedModel, const bool changed ); 00057 void slotCheckButtons( bool force = true ); 00058 void slotRemoveFolder( FolderTableModel* theModel ); 00059 // void slotRemoveFolderTable( const QModelIndex& fTreeIndex ); 00060 // void slotRemoveFolderTree( int tabPos ); 00061 00062 00063 }; 00064