Skip to content

Commit c616b39

Browse files
committed
Don't allow selection of tables/indices in VACUUM dialog
Remove the feature to select individual tables and indices to vacuum in the vacuum dialog. Turns out SQLite doesn't support this (and apparently never has). If you didn't select all tables at once, it would just print errors to the console output. I have no idea why we ever implemented it this way. However, the dialog could be reused to allow selection of database schemata to compact - and this actually does work.
1 parent 829e310 commit c616b39

File tree

2 files changed

+16
-26
lines changed

2 files changed

+16
-26
lines changed

src/VacuumDialog.cpp

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,16 @@ VacuumDialog::VacuumDialog(DBBrowserDB* _db, QWidget* parent) :
1616
ui->labelSavepointWarning->setVisible(db->getDirty());
1717

1818
// Populate list of objects to compact. We just support vacuuming the main schema here.
19-
QList<sqlb::ObjectPtr> objects = db->schemata["main"].values("table");
20-
objects.append(db->schemata["main"].values("index"));
21-
for(QList<sqlb::ObjectPtr>::const_iterator i=objects.constBegin();i!=objects.constEnd();++i)
19+
for(auto it=db->schemata.constBegin();it!=db->schemata.constEnd();++it)
2220
{
23-
QTreeWidgetItem* item = new QTreeWidgetItem(ui->treeSelectedObjects);
24-
item->setText(0, (*i)->name());
25-
item->setIcon(0, QIcon(QString(":icons/%1").arg(sqlb::Object::typeToString((*i)->type()))));
26-
ui->treeSelectedObjects->addTopLevelItem(item);
21+
QTreeWidgetItem* item = new QTreeWidgetItem(ui->treeDatabases);
22+
item->setText(0, it.key());
23+
item->setIcon(0, QIcon(QString(":icons/database")));
24+
ui->treeDatabases->addTopLevelItem(item);
2725
}
2826

29-
// Sort objects and select them all
30-
ui->treeSelectedObjects->sortByColumn(0, Qt::AscendingOrder);
31-
ui->treeSelectedObjects->selectAll();
27+
// Select the first item which should always be the main schema
28+
ui->treeDatabases->setCurrentItem(ui->treeDatabases->topLevelItem(0));
3229
}
3330

3431
VacuumDialog::~VacuumDialog()
@@ -38,25 +35,18 @@ VacuumDialog::~VacuumDialog()
3835

3936
void VacuumDialog::accept()
4037
{
41-
if(ui->treeSelectedObjects->selectedItems().count() == 0)
38+
if(ui->treeDatabases->selectedItems().count() == 0)
4239
return QDialog::reject();
4340

4441
QApplication::setOverrideCursor(Qt::WaitCursor);
4542

4643
// Commit all changes first
4744
db->releaseAllSavepoints();
4845

49-
// All items selected?
50-
if(ui->treeSelectedObjects->selectedItems().count() == ui->treeSelectedObjects->topLevelItemCount())
51-
{
52-
// Yes, so just execute a simple vacuum command for all objects
53-
db->executeSQL("VACUUM;", false);
54-
} else {
55-
// No, so execute a vacuum command for each selected object individually
56-
QList<QTreeWidgetItem*> selection = ui->treeSelectedObjects->selectedItems();
57-
foreach(QTreeWidgetItem* item, selection)
58-
db->executeSQL(QString("VACUUM %1;").arg(sqlb::escapeIdentifier(item->text(0))), false);
59-
}
46+
// Loop through all selected databases and vacuum them individually
47+
QList<QTreeWidgetItem*> selection = ui->treeDatabases->selectedItems();
48+
foreach(QTreeWidgetItem* item, selection)
49+
db->executeSQL(QString("VACUUM %1;").arg(sqlb::escapeIdentifier(item->text(0))), false);
6050

6151
QApplication::restoreOverrideCursor();
6252
QDialog::accept();

src/VacuumDialog.ui

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,15 @@
3636
<item>
3737
<widget class="QLabel" name="label">
3838
<property name="text">
39-
<string>Please select the objects to compact:</string>
39+
<string>Please select the databases to co&amp;mpact:</string>
4040
</property>
4141
<property name="buddy">
42-
<cstring>treeSelectedObjects</cstring>
42+
<cstring>treeDatabases</cstring>
4343
</property>
4444
</widget>
4545
</item>
4646
<item>
47-
<widget class="QTreeWidget" name="treeSelectedObjects">
47+
<widget class="QTreeWidget" name="treeDatabases">
4848
<property name="editTriggers">
4949
<set>QAbstractItemView::NoEditTriggers</set>
5050
</property>
@@ -86,7 +86,7 @@
8686
</layout>
8787
</widget>
8888
<tabstops>
89-
<tabstop>treeSelectedObjects</tabstop>
89+
<tabstop>treeDatabases</tabstop>
9090
<tabstop>buttonBox</tabstop>
9191
</tabstops>
9292
<resources/>

0 commit comments

Comments
 (0)