diff options
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.cpp')
| -rw-r--r-- | SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.cpp | 64 |
1 files changed, 45 insertions, 19 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); |
