mirror of
https://github.com/sqlitebrowser/sqlitebrowser.git
synced 2026-01-20 19:11:39 -06:00
add a recent files menu, mostly taken from qt sample code
This commit is contained in:
@@ -8,8 +8,8 @@
|
||||
#include <QWhatsThis>
|
||||
|
||||
#include "qmessagebox.h"
|
||||
//#include "q3filedialog.h"
|
||||
#include <QtGui/QFileDialog>
|
||||
#include <QSettings>
|
||||
|
||||
#include "qfile.h"
|
||||
#include "qapplication.h"
|
||||
@@ -75,6 +75,7 @@ void mainForm::init()
|
||||
this->setWindowIcon( QPixmap( applicationIconName ) );
|
||||
buttonNext->setEnabled(false);
|
||||
buttonPrevious->setEnabled(false);
|
||||
updateRecentFileActions();
|
||||
|
||||
|
||||
if(!editWin){
|
||||
@@ -129,6 +130,7 @@ void mainForm::fileOpen(const QString & fileName)
|
||||
editModifyTableAction->setEnabled(true);
|
||||
editCreateIndexAction->setEnabled(true);
|
||||
editDeleteIndexAction->setEnabled(true);
|
||||
setCurrentFile(wFile);
|
||||
} else {
|
||||
QString err = "An error occurred: ";
|
||||
err.append(db.lastErrorMessage);
|
||||
@@ -175,6 +177,7 @@ void mainForm::fileNew()
|
||||
editModifyTableAction->setEnabled(true);
|
||||
editCreateIndexAction->setEnabled(true);
|
||||
editDeleteIndexAction->setEnabled(true);
|
||||
setCurrentFile(fileName);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1288,4 +1291,49 @@ void mainForm::on_edit_field(){
|
||||
}
|
||||
}
|
||||
|
||||
void mainForm::openRecentFile()
|
||||
{
|
||||
QAction *action = qobject_cast<QAction *>(sender());
|
||||
if (action)
|
||||
fileOpen(action->data().toString());
|
||||
}
|
||||
|
||||
void mainForm::updateRecentFileActions()
|
||||
{
|
||||
QSettings settings(sOrganisation, sApplicationNameShort);
|
||||
QStringList files = settings.value("recentFileList").toStringList();
|
||||
|
||||
|
||||
int numRecentFiles = qMin(files.size(), (int)MaxRecentFiles);
|
||||
|
||||
for (int i = 0; i < numRecentFiles; ++i) {
|
||||
QString text = tr("&%1 %2").arg(i + 1).arg(files[i]);
|
||||
recentFileActs[i]->setText(text);
|
||||
recentFileActs[i]->setData(files[i]);
|
||||
recentFileActs[i]->setVisible(true);
|
||||
}
|
||||
for (int j = numRecentFiles; j < MaxRecentFiles; ++j)
|
||||
recentFileActs[j]->setVisible(false);
|
||||
|
||||
recentSeparatorAct->setVisible(numRecentFiles > 0);
|
||||
}
|
||||
|
||||
void mainForm::setCurrentFile(const QString &fileName)
|
||||
{
|
||||
setWindowFilePath(fileName);
|
||||
|
||||
QSettings settings(sOrganisation, sApplicationNameShort);
|
||||
QStringList files = settings.value("recentFileList").toStringList();
|
||||
files.removeAll(fileName);
|
||||
files.prepend(fileName);
|
||||
while (files.size() > MaxRecentFiles)
|
||||
files.removeLast();
|
||||
|
||||
settings.setValue("recentFileList", files);
|
||||
|
||||
foreach (QWidget *widget, QApplication::topLevelWidgets()) {
|
||||
mainForm *mainWin = qobject_cast<mainForm *>(widget);
|
||||
if (mainWin)
|
||||
mainWin->updateRecentFileActions();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -135,6 +135,11 @@ public:
|
||||
QMenu *EditMenu;
|
||||
QMenu *ViewMenu;
|
||||
QMenu *PopupMenu;
|
||||
QMenu *recentFilesMenu;
|
||||
|
||||
enum { MaxRecentFiles = 5 };
|
||||
QAction *recentFileActs[MaxRecentFiles];
|
||||
QAction *recentSeparatorAct;
|
||||
|
||||
void setupUi(QMainWindow *mainForm)
|
||||
{
|
||||
@@ -178,6 +183,13 @@ public:
|
||||
fntR.setBold(true);
|
||||
fileRevertAction->setFont(fntR);
|
||||
|
||||
// Recent dbs
|
||||
for(int i = 0; i < MaxRecentFiles; ++i) {
|
||||
recentFileActs[i] = new QAction(mainForm);
|
||||
recentFileActs[i]->setVisible(false);
|
||||
mainForm->connect(recentFileActs[i], SIGNAL(triggered()), mainForm, SLOT(openRecentFile()));
|
||||
}
|
||||
|
||||
|
||||
//** Exit
|
||||
fileExitAction = new QAction(mainForm);
|
||||
@@ -599,6 +611,12 @@ public:
|
||||
fileMenu->addAction(importMenu->menuAction());
|
||||
//fileMenu->addAction(fileExportAction);
|
||||
fileMenu->addAction(exportMenu->menuAction());
|
||||
|
||||
recentSeparatorAct = fileMenu->addSeparator();
|
||||
for(int i = 0; i < MaxRecentFiles; ++i)
|
||||
fileMenu->addAction(recentFileActs[i]);
|
||||
|
||||
|
||||
fileMenu->addSeparator();
|
||||
fileMenu->addAction(fileExitAction);
|
||||
importMenu->addAction(fileImportSQLAction);
|
||||
@@ -979,6 +997,10 @@ public:
|
||||
QIntValidator * gotoValidator;
|
||||
QString defaultlocation;
|
||||
|
||||
private:
|
||||
void updateRecentFileActions();
|
||||
void setCurrentFile(const QString& fileName);
|
||||
|
||||
public slots:
|
||||
virtual void on_tree_context_menu(const QPoint & qPoint);
|
||||
virtual void on_tree_selection_changed();
|
||||
@@ -1034,6 +1056,7 @@ public slots:
|
||||
virtual void importDatabaseFromSQL();
|
||||
virtual void openPreferences();
|
||||
virtual void updatePreferences();
|
||||
virtual void openRecentFile();
|
||||
|
||||
protected:
|
||||
DBBrowserDB db;
|
||||
|
||||
Reference in New Issue
Block a user