Dynamically generate recent files actions

Instead of using four recent files actions defined in mainwindow.ui,
generate these actions dynamically depending on the macro NUM_RECENT_FILES.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2017-11-30 17:44:32 +01:00 committed by Lubomir I. Ivanov
parent 1208bc8428
commit 4296ca11a6
3 changed files with 8 additions and 31 deletions

View file

@ -201,11 +201,12 @@ MainWindow::MainWindow() : QMainWindow(),
connect(PreferencesDialog::instance(), SIGNAL(settingsChanged()), divePlannerWidget(), SLOT(settingsChanged())); connect(PreferencesDialog::instance(), SIGNAL(settingsChanged()), divePlannerWidget(), SLOT(settingsChanged()));
connect(PreferencesDialog::instance(), SIGNAL(settingsChanged()), divePlannerSettingsWidget(), SLOT(settingsChanged())); connect(PreferencesDialog::instance(), SIGNAL(settingsChanged()), divePlannerSettingsWidget(), SLOT(settingsChanged()));
connect(PreferencesDialog::instance(), SIGNAL(settingsChanged()), TankInfoModel::instance(), SLOT(update())); connect(PreferencesDialog::instance(), SIGNAL(settingsChanged()), TankInfoModel::instance(), SLOT(update()));
// TODO: Make the number of actions depend on NUM_RECENT_FILES for (int i = 0; i < NUM_RECENT_FILES; i++) {
connect(ui.actionRecent1, SIGNAL(triggered(bool)), this, SLOT(recentFileTriggered(bool))); actionsRecent[i] = new QAction(this);
connect(ui.actionRecent2, SIGNAL(triggered(bool)), this, SLOT(recentFileTriggered(bool))); ui.menuFile->insertAction(ui.actionQuit, actionsRecent[i]);
connect(ui.actionRecent3, SIGNAL(triggered(bool)), this, SLOT(recentFileTriggered(bool))); connect(actionsRecent[i], SIGNAL(triggered(bool)), this, SLOT(recentFileTriggered(bool)));
connect(ui.actionRecent4, SIGNAL(triggered(bool)), this, SLOT(recentFileTriggered(bool))); }
ui.menuFile->insertSeparator(ui.actionQuit);
connect(information(), SIGNAL(addDiveFinished()), graphics(), SLOT(setProfileState())); connect(information(), SIGNAL(addDiveFinished()), graphics(), SLOT(setProfileState()));
connect(information(), SIGNAL(dateTimeChanged()), graphics(), SLOT(dateTimeChanged())); connect(information(), SIGNAL(dateTimeChanged()), graphics(), SLOT(dateTimeChanged()));
connect(DivePlannerPointsModel::instance(), SIGNAL(planCreated()), this, SLOT(planCreated())); connect(DivePlannerPointsModel::instance(), SIGNAL(planCreated()), this, SLOT(planCreated()));
@ -1543,7 +1544,7 @@ void MainWindow::loadRecentFiles()
void MainWindow::updateRecentFilesMenu() void MainWindow::updateRecentFilesMenu()
{ {
for (int c = 0; c < NUM_RECENT_FILES; c++) { for (int c = 0; c < NUM_RECENT_FILES; c++) {
QAction *action = this->findChild<QAction *>(QString("actionRecent%1").arg(c + 1)); QAction *action = actionsRecent[c];
if (recentFiles.count() > c) { if (recentFiles.count() > c) {
QFileInfo fi(recentFiles.at(c)); QFileInfo fi(recentFiles.at(c));

View file

@ -222,6 +222,7 @@ private:
struct dive_components what; struct dive_components what;
QList<QAction *> profileToolbarActions; QList<QAction *> profileToolbarActions;
QStringList recentFiles; QStringList recentFiles;
QAction *actionsRecent[NUM_RECENT_FILES];
struct WidgetForQuadrant { struct WidgetForQuadrant {
WidgetForQuadrant(QWidget *tl = 0, QWidget *tr = 0, QWidget *bl = 0, QWidget *br = 0) : WidgetForQuadrant(QWidget *tl = 0, QWidget *tr = 0, QWidget *bl = 0, QWidget *br = 0) :

View file

@ -75,11 +75,6 @@
<addaction name="separator"/> <addaction name="separator"/>
<addaction name="actionHash_images"/> <addaction name="actionHash_images"/>
<addaction name="actionConfigure_Dive_Computer"/> <addaction name="actionConfigure_Dive_Computer"/>
<addaction name="actionRecent1"/>
<addaction name="actionRecent2"/>
<addaction name="actionRecent3"/>
<addaction name="actionRecent4"/>
<addaction name="separator"/>
<addaction name="actionQuit"/> <addaction name="actionQuit"/>
</widget> </widget>
<widget class="QMenu" name="menuLog"> <widget class="QMenu" name="menuLog">
@ -421,26 +416,6 @@
<string notr="true">F11</string> <string notr="true">F11</string>
</property> </property>
</action> </action>
<action name="actionRecent1">
<property name="visible">
<bool>false</bool>
</property>
</action>
<action name="actionRecent2">
<property name="visible">
<bool>false</bool>
</property>
</action>
<action name="actionRecent3">
<property name="visible">
<bool>false</bool>
</property>
</action>
<action name="actionRecent4">
<property name="visible">
<bool>false</bool>
</property>
</action>
<action name="action_Check_for_Updates"> <action name="action_Check_for_Updates">
<property name="text"> <property name="text">
<string>&amp;Check for updates</string> <string>&amp;Check for updates</string>