summaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/dbtree
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@ubuntu.com>2017-02-09 04:36:04 -0500
committerLibravatarUnit 193 <unit193@ubuntu.com>2017-02-09 04:36:04 -0500
commitd9aa870e5d509cc7309ab82dd102a937ab58613a (patch)
treed92d03d76b5c390b335f1cfd761f1a0b59ec8496 /SQLiteStudio3/guiSQLiteStudio/dbtree
parent68ee4cbcbe424b95969c70346283a9f217f63825 (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.cpp64
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.h3
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.ui2
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.cpp4
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.h2
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 &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);
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);