diff options
| author | 2014-12-06 17:33:25 -0500 | |
|---|---|---|
| committer | 2014-12-06 17:33:25 -0500 | |
| commit | 7167ce41b61d2ba2cdb526777a4233eb84a3b66a (patch) | |
| tree | a35c14143716e1f2c98f808c81f89426045a946f /SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.h | |
Imported Upstream version 2.99.6upstream/2.99.6
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.h')
| -rw-r--r-- | SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.h | 205 |
1 files changed, 205 insertions, 0 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.h b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.h new file mode 100644 index 0000000..b368c08 --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.h @@ -0,0 +1,205 @@ +#ifndef DBTREE_H +#define DBTREE_H + +#include "db/db.h" +#include "common/extactioncontainer.h" +#include "mainwindow.h" +#include "dbtree/dbtreeitem.h" +#include "guiSQLiteStudio_global.h" +#include <QDockWidget> + +class WidgetCover; +class QAction; +class QMenu; +class DbTreeModel; +class QStandardItem; +class QTimer; +class TableWindow; +class ViewWindow; +class UserInputFilter; +class DbTreeView; + +namespace Ui { + class DbTree; +} + +CFG_KEY_LIST(DbTree, QObject::tr("Database list"), + CFG_KEY_ENTRY(DEL_SELECTED, Qt::Key_Delete, QObject::tr("Delete selected item")) + CFG_KEY_ENTRY(CLEAR_FILTER, Qt::Key_Escape, QObject::tr("Clear filter contents")) + CFG_KEY_ENTRY(REFRESH_SCHEMA, Qt::Key_F5, QObject::tr("Refresh schema")) + CFG_KEY_ENTRY(REFRESH_SCHEMAS, Qt::SHIFT + Qt::Key_F5, QObject::tr("Refresh all schemas")) + CFG_KEY_ENTRY(ADD_DB, Qt::CTRL + Qt::Key_O, QObject::tr("Add database")) + CFG_KEY_ENTRY(SELECT_ALL, Qt::CTRL + Qt::Key_A, QObject::tr("Select all items")) + CFG_KEY_ENTRY(COPY, Qt::CTRL + Qt::Key_C, QObject::tr("Copy selected item(s)")) + CFG_KEY_ENTRY(PASTE, Qt::CTRL + Qt::Key_V, QObject::tr("Paste from clipboard")) +) + +class GUI_API_EXPORT DbTree : public QDockWidget, public ExtActionContainer +{ + Q_OBJECT + Q_ENUMS(Action) + + public: + friend class DbTreeView; + + enum Action + { + COPY, + PASTE, + SELECT_ALL, + DEL_SELECTED, + CREATE_GROUP, + DELETE_GROUP, + RENAME_GROUP, + ADD_DB, + EDIT_DB, + DELETE_DB, + CONNECT_TO_DB, + DISCONNECT_FROM_DB, + IMPORT_INTO_DB, + EXPORT_DB, + CONVERT_DB, + VACUUM_DB, + INTEGRITY_CHECK, + ADD_TABLE, + EDIT_TABLE, + DEL_TABLE, + EXPORT_TABLE, + IMPORT_TABLE, + POPULATE_TABLE, + ADD_INDEX, + EDIT_INDEX, + DEL_INDEX, + ADD_TRIGGER, + EDIT_TRIGGER, + DEL_TRIGGER, + ADD_VIEW, + EDIT_VIEW, + DEL_VIEW, + ADD_COLUMN, + EDIT_COLUMN, + DEL_COLUMN, + CLEAR_FILTER, + REFRESH_SCHEMAS, + REFRESH_SCHEMA, + CREATE_SIMILAR_TABLE, + _separator // Never use it directly, it's just for menu setup + }; + + enum ToolBar + { + }; + + explicit DbTree(QWidget *parent = 0); + ~DbTree(); + + static void staticInit(); + + void init(); + void updateActionStates(const QStandardItem* item); + void setupActionsForMenu(DbTreeItem* currItem, QMenu* contextMenu); + QVariant saveSession(); + void restoreSession(const QVariant& sessionValue); + DbTreeModel* getModel() const; + DbTreeView* getView() const; + void showWidgetCover(); + void hideWidgetCover(); + void setSelectedItem(DbTreeItem* item); + bool isMimeDataValidForItem(const QMimeData* mimeData, const DbTreeItem* item); + QToolBar* getToolBar(int toolbar) const; + + static bool isItemDraggable(const DbTreeItem* item); + + protected: + void createActions(); + void setupDefShortcuts(); + + private: + void setActionEnabled(int action, bool enabled); + Db* getSelectedDb(); + Db* getSelectedOpenDb(); + TableWindow* openTable(DbTreeItem* item); + TableWindow* openTable(Db* db, const QString& database, const QString& table); + TableWindow* newTable(DbTreeItem* item); + ViewWindow* openView(DbTreeItem* item); + ViewWindow* openView(Db* db, const QString& database, const QString& view); + ViewWindow* newView(DbTreeItem* item); + void editIndex(DbTreeItem* item); + void editTrigger(DbTreeItem* item); + void delSelectedObject(); + void filterUndeletableItems(QList<DbTreeItem*>& items); + void filterItemsWithParentInList(QList<DbTreeItem*>& items); + void deleteItem(DbTreeItem* item); + static bool areDbTreeItemsValidForItem(QList<DbTreeItem*> srcItems, const DbTreeItem* dstItem); + static bool areUrlsValidForItem(const QList<QUrl>& srcUrls, const DbTreeItem* dstItem); + + static void initDndTypes(); + + Ui::DbTree *ui = nullptr; + DbTreeModel* treeModel = nullptr; + WidgetCover* widgetCover = nullptr; + + static QHash<DbTreeItem::Type,QList<DbTreeItem::Type>> allowedTypesInside; + static QSet<DbTreeItem::Type> draggableTypes; + static const constexpr int ITEM_TEXT_LIMIT = 300; + + public slots: + void refreshSchema(Db* db); + void refreshSchemas(); + void interrupt(); + + private slots: + void copy(); + void paste(); + void selectAll(); + void createGroup(); + void deleteGroup(); + void renameGroup(); + void addDb(); + void editDb(); + void removeDb(); + void connectToDb(); + void disconnectFromDb(); + void import(); + void exportDb(); + void addTable(); + void editTable(); + void delTable(); + void addIndex(); + void editIndex(); + void delIndex(); + void addTrigger(); + void editTrigger(); + void delTrigger(); + void addView(); + void editView(); + void delView(); + void exportTable(); + void importTable(); + void populateTable(); + void addColumn(); + void editColumn(); + void delColumn(); + void convertDb(); + void vacuumDb(); + void integrityCheck(); + void createSimilarTable(); + void addColumn(DbTreeItem* item); + void editColumn(DbTreeItem* item); + void delColumn(DbTreeItem* item); + void currentChanged(const QModelIndex & current, const QModelIndex & previous); + void deleteSelected(); + void deleteItems(const QList<DbTreeItem*>& itemsToDelete); + void refreshSchema(); + void updateActionsForCurrent(); + void dbConnected(Db* db); + void dbDisconnected(Db* db); + void updateDbIcon(Db* db); + void refreshFont(); +}; + +int qHash(DbTree::Action action); + +#define DBTREE MainWindow::getInstance()->getDbTree() + +#endif // DBTREE_H |
