aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.cpp')
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.cpp64
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 &current, 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);