Skip to content

Commit ec6ff6a

Browse files
author
SeongTae Jeong
authored
Move recent files items to new submenu and add clear recent file function (#2347)
* Add a new submenu ('File > Recent Files') and move recent file actions inside. * Add a new menu item to the menu of recent files ('Clear List') and delete divider(QAction *recentSeparatorAct) because that is no longer used. * Added general function to clear Settings value (including cache)
1 parent ef18362 commit ec6ff6a

File tree

5 files changed

+33
-8
lines changed

5 files changed

+33
-8
lines changed

src/MainWindow.cpp

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -231,8 +231,11 @@ void MainWindow::init()
231231
connect(recentFileActs[i], &QAction::triggered, this, &MainWindow::openRecentFile);
232232
}
233233
for(int i = 0; i < MaxRecentFiles; ++i)
234-
ui->fileMenu->insertAction(ui->fileExitAction, recentFileActs[i]);
235-
recentSeparatorAct = ui->fileMenu->insertSeparator(ui->fileExitAction);
234+
ui->fileRecentFiles->insertAction(ui->fileExitAction, recentFileActs[i]);
235+
236+
QAction *clearRecentFilesAction = ui->fileRecentFiles->addAction(tr("Clear List"));
237+
ui->fileRecentFiles->insertAction(ui->fileExitAction, clearRecentFilesAction);
238+
connect(clearRecentFilesAction, &QAction::triggered, this, &MainWindow::clearRecentFiles);
236239

237240
// Create popup menus
238241
popupTableMenu = new QMenu(this);
@@ -1624,8 +1627,6 @@ void MainWindow::updateRecentFileActions()
16241627
}
16251628
for (int j = numRecentFiles; j < MaxRecentFiles; ++j)
16261629
recentFileActs[j]->setVisible(false);
1627-
1628-
recentSeparatorAct->setVisible(numRecentFiles > 0);
16291630
}
16301631

16311632
void MainWindow::setCurrentFile(const QString &fileName)
@@ -3434,3 +3435,11 @@ void MainWindow::moveDocksTo(Qt::DockWidgetArea area)
34343435
tabifyDockWidget(ui->dockLog, ui->dockSchema);
34353436
tabifyDockWidget(ui->dockLog, ui->dockRemote);
34363437
}
3438+
3439+
void MainWindow::clearRecentFiles()
3440+
{
3441+
Settings::clearValue("General", "recentFileList");
3442+
3443+
for(int i=0; i < MaxRecentFiles; ++i)
3444+
recentFileActs[i]->setVisible(false);
3445+
}

src/MainWindow.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@ class MainWindow : public QMainWindow
8282

8383
static const int MaxRecentFiles = 5;
8484
QAction *recentFileActs[MaxRecentFiles];
85-
QAction *recentSeparatorAct;
8685

8786
EditDialog* editDock;
8887
PlotDock* plotDock;
@@ -101,6 +100,7 @@ class MainWindow : public QMainWindow
101100
void clearCompleterModelsFields();
102101

103102
void updateRecentFileActions();
103+
void clearRecentFiles();
104104
void setCurrentFile(const QString& fileName);
105105
void addToRecentFilesMenu(const QString& filename, bool read_only = false);
106106
void activateFields(bool enable = true);

src/MainWindow.ui

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -174,8 +174,8 @@ You can drag SQL statements from an object row and drop them into other applicat
174174
<rect>
175175
<x>0</x>
176176
<y>0</y>
177-
<width>641</width>
178-
<height>544</height>
177+
<width>639</width>
178+
<height>574</height>
179179
</rect>
180180
</property>
181181
<layout class="QFormLayout" name="formLayout">
@@ -744,7 +744,7 @@ You can drag SQL statements from an object row and drop them into other applicat
744744
<x>0</x>
745745
<y>0</y>
746746
<width>1037</width>
747-
<height>23</height>
747+
<height>22</height>
748748
</rect>
749749
</property>
750750
<widget class="QMenu" name="fileMenu">
@@ -766,11 +766,17 @@ You can drag SQL statements from an object row and drop them into other applicat
766766
<addaction name="fileExportCSVAction"/>
767767
<addaction name="fileExportJsonAction"/>
768768
</widget>
769+
<widget class="QMenu" name="fileRecentFiles">
770+
<property name="title">
771+
<string>Recent Files</string>
772+
</property>
773+
</widget>
769774
<addaction name="fileNewAction"/>
770775
<addaction name="fileNewInMemoryDatabaseAction"/>
771776
<addaction name="fileOpenAction"/>
772777
<addaction name="fileOpenReadOnlyAction"/>
773778
<addaction name="fileAttachAction"/>
779+
<addaction name="fileRecentFiles"/>
774780
<addaction name="fileCloseAction"/>
775781
<addaction name="separator"/>
776782
<addaction name="fileSaveAction"/>

src/Settings.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -489,6 +489,15 @@ QColor Settings::getDefaultColorValue(const std::string& group, const std::strin
489489
return QColor();
490490
}
491491

492+
void Settings::clearValue(const std::string& group, const std::string& name)
493+
{
494+
QSettings settings(QApplication::organizationName(), QApplication::organizationName());
495+
settings.beginGroup(QString::fromStdString(group));
496+
settings.remove(QString::fromStdString(name));
497+
settings.endGroup();
498+
m_hCache.clear();
499+
}
500+
492501
void Settings::restoreDefaults ()
493502
{
494503
QSettings settings(QApplication::organizationName(), QApplication::organizationName());

src/Settings.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ class Settings
1616
};
1717
static QVariant getValue(const std::string& group, const std::string& name);
1818
static void setValue(const std::string& group, const std::string& name, const QVariant& value, bool dont_save_to_disk = false);
19+
static void clearValue(const std::string& group, const std::string& name);
1920
static void restoreDefaults();
2021

2122
static void rememberDefaultFontSize(int size) { m_defaultFontSize = size; }

0 commit comments

Comments
 (0)