diff options
| author | 2017-02-09 04:36:04 -0500 | |
|---|---|---|
| committer | 2017-02-09 04:36:04 -0500 | |
| commit | d9aa870e5d509cc7309ab82dd102a937ab58613a (patch) | |
| tree | d92d03d76b5c390b335f1cfd761f1a0b59ec8496 /SQLiteStudio3/guiSQLiteStudio/dbtree | |
| parent | 68ee4cbcbe424b95969c70346283a9f217f63825 (diff) | |
Imported Upstream version 3.1.1+dfsg1upstream/3.1.1+dfsg1
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/dbtree')
| -rw-r--r-- | SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.cpp | 64 | ||||
| -rw-r--r-- | SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.h | 3 | ||||
| -rw-r--r-- | SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.ui | 2 | ||||
| -rw-r--r-- | SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.cpp | 4 | ||||
| -rw-r--r-- | SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.h | 2 |
5 files changed, 51 insertions, 24 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.cpp b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.cpp index fbe0a38..018eeb6 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.cpp @@ -976,6 +976,13 @@ QString DbTree::getSelectedViewName() const return view; } +QList<DbTreeItem *> DbTree::getSelectedItems(DbTreeItem::Type itemType) +{ + return getSelectedItems([itemType](DbTreeItem* item) + { + return item->getType() == itemType; + }); +} void DbTree::refreshSchema(Db* db) { @@ -1498,7 +1505,7 @@ void DbTree::resetAutoincrement() if (res->isError()) notifyError(tr("An error occurred while trying to reset autoincrement value for table '%1': %2").arg(table, res->getErrorText())); else - notifyInfo(tr("Autoincrement value for table '%1' has been reset successfly.").arg(table)); + notifyInfo(tr("Autoincrement value for table '%1' has been reset successfully.").arg(table)); } void DbTree::eraseTableData() @@ -1507,27 +1514,36 @@ void DbTree::eraseTableData() if (!db || !db->isValid()) return; - DbTreeItem* item = ui->treeView->currentItem(); - QString table = item->getTable(); - if (table.isNull()) + QList<DbTreeItem *> items = getSelectedItems(DbTreeItem::Type::TABLE); + if (items.isEmpty()) { qWarning() << "Tried to erase table data, while table wasn't selected in DbTree."; return; } - QMessageBox::StandardButton btn = QMessageBox::question(this, tr("Erase table data"), tr("Are you sure you want to delete all data from table '%1'?") - .arg(table)); + QStringList tables; + for (DbTreeItem* item : items) + tables << item->getTable(); + + QMessageBox::StandardButton btn = QMessageBox::question(this, tr("Erase table data"), tr("Are you sure you want to delete all data from table(s): %1?") + .arg(tables.join(", "))); if (btn != QMessageBox::Yes) return; - SqlQueryPtr res = db->exec(QString("DELETE FROM %1;").arg(wrapObjIfNeeded(table, db->getDialect()))); - if (res->isError()) + static_qstring(DELETE_SQL, "DELETE FROM %1;"); + Dialect dialect = db->getDialect(); + SqlQueryPtr res; + for (const QString& table : tables) { - notifyError(tr("An error occurred while trying to delete data from table '%1': %2").arg(table, res->getErrorText())); - return; - } + res = db->exec(DELETE_SQL.arg(wrapObjIfNeeded(table, dialect))); + if (res->isError()) + { + notifyError(tr("An error occurred while trying to delete data from table '%1': %2").arg(table, res->getErrorText())); + return; + } - notifyInfo(tr("All data has been deleted for table '%1'.").arg(table)); + notifyInfo(tr("All data has been deleted for table '%1'.").arg(table)); + } } void DbTree::addColumn(DbTreeItem* item) @@ -1592,6 +1608,11 @@ void DbTree::currentChanged(const QModelIndex ¤t, const QModelIndex &previ void DbTree::deleteSelected(ItemFilterFunc filterFunc) { + deleteItems(getSelectedItems(filterFunc)); +} + +QList<DbTreeItem*> DbTree::getSelectedItems(DbTree::ItemFilterFunc filterFunc) +{ QModelIndexList idxList = ui->treeView->getSelectedIndexes(); QList<DbTreeItem*> items; DbTreeItem* item; @@ -1603,10 +1624,10 @@ void DbTree::deleteSelected(ItemFilterFunc filterFunc) items << item; } - - deleteItems(items); + return items; } + void DbTree::deleteItems(const QList<DbTreeItem*>& itemsToDelete) { QList<DbTreeItem*> items = itemsToDelete; @@ -1741,12 +1762,22 @@ void DbTree::generateInsertForTable() void DbTree::generateUpdateForTable() { + Db* db = getSelectedDb(); + QString table = getSelectedTableName(); + QueryGenerator generator; + QString sql = generator.generateUpdateOfTable(db, table); + MAINWINDOW->openSqlEditor(db, sql); } void DbTree::generateDeleteForTable() { + Db* db = getSelectedDb(); + QString table = getSelectedTableName(); + QueryGenerator generator; + QString sql = generator.generateDeleteFromTable(db, table); + MAINWINDOW->openSqlEditor(db, sql); } void DbTree::setupDefShortcuts() @@ -1759,11 +1790,6 @@ void DbTree::setupDefShortcuts() BIND_SHORTCUTS(DbTree, Action); } -void DbTree::closeEvent(QCloseEvent *e) -{ - e->ignore(); -} - int qHash(DbTree::Action action) { return static_cast<int>(action); diff --git a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.h b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.h index ea415a4..f97e5eb 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.h +++ b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.h @@ -123,7 +123,6 @@ class GUI_API_EXPORT DbTree : public QDockWidget, public ExtActionContainer protected: void createActions(); void setupDefShortcuts(); - void closeEvent(QCloseEvent* e); private: typedef std::function<bool(DbTreeItem*)> ItemFilterFunc; @@ -148,6 +147,8 @@ class GUI_API_EXPORT DbTree : public QDockWidget, public ExtActionContainer QString getSelectedIndexName() const; QString getSelectedTriggerName() const; QString getSelectedViewName() const; + QList<DbTreeItem*> getSelectedItems(DbTreeItem::Type itemType); + QList<DbTreeItem*> getSelectedItems(ItemFilterFunc filterFunc = nullptr); static bool areDbTreeItemsValidForItem(QList<DbTreeItem*> srcItems, const DbTreeItem* dstItem); static bool areUrlsValidForItem(const QList<QUrl>& srcUrls, const DbTreeItem* dstItem); diff --git a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.ui b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.ui index 687415d..780b306 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.ui +++ b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.ui @@ -14,7 +14,7 @@ <bool>false</bool> </property> <property name="features"> - <set>QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable</set> + <set>QDockWidget::AllDockWidgetFeatures</set> </property> <property name="allowedAreas"> <set>Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea</set> diff --git a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.cpp b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.cpp index c11221d..9fe88c2 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.cpp @@ -35,7 +35,7 @@ DbTreeModel::DbTreeModel() connectDbManagerSignals(); connect(CFG, SIGNAL(massSaveBegins()), this, SLOT(massSaveBegins())); - connect(CFG, SIGNAL(massSaveCommited()), this, SLOT(massSaveCommited())); + connect(CFG, SIGNAL(massSaveCommitted()), this, SLOT(massSaveCommitted())); connect(CFG_UI.General.ShowSystemObjects, SIGNAL(changed(QVariant)), this, SLOT(markSchemaReloadingRequired())); dbOrganizer = new DbObjectOrganizer(confirmReferencedTables, resolveNameConflict, confirmConversion, confirmConversionErrors); @@ -743,7 +743,7 @@ void DbTreeModel::massSaveBegins() requireSchemaReloading = false; } -void DbTreeModel::massSaveCommited() +void DbTreeModel::massSaveCommitted() { if (requireSchemaReloading) { diff --git a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.h b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.h index 122421a..50b080d 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.h +++ b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.h @@ -116,7 +116,7 @@ class GUI_API_EXPORT DbTreeModel : public QStandardItemModel void dbUnloaded(Db* db); void dbLoaded(Db* db); void massSaveBegins(); - void massSaveCommited(); + void massSaveCommitted(); void markSchemaReloadingRequired(); void dbObjectsMoveFinished(bool success, Db* srcDb, Db* dstDb); void dbObjectsCopyFinished(bool success, Db* srcDb, Db* dstDb); |
