1.1 --- a/mainwindow.cpp Thu Nov 16 10:07:12 2006 +0000
1.2 +++ b/mainwindow.cpp Thu Nov 16 13:43:06 2006 +0000
1.3 @@ -130,8 +130,6 @@
1.4 settings.setValue( p,s);
1.5
1.6
1.7 - maxLastMaps=9;
1.8 -
1.9 // Create tab widget which holds the maps
1.10 tabWidget= new QTabWidget (this);
1.11 connect( tabWidget, SIGNAL( currentChanged( QWidget * ) ),
1.12 @@ -190,17 +188,6 @@
1.13 settings.setValue( "/mapeditor/editmode/useFlagGroups",actionSettingsUseFlagGroups->isOn() );
1.14 settings.setValue( "/export/useHideExport",actionSettingsUseHideExport->isOn() );
1.15
1.16 - QString s;
1.17 - int maps=lastMaps.count();
1.18 - settings.setValue( "/lastMaps/number",maps );
1.19 - for (int i=1;i<=maps;i++)
1.20 - {
1.21 - s=QString("/lastMaps/map-%1").arg(i);
1.22 - if (!s.isEmpty() && i<=maxLastMaps)
1.23 - settings.setValue (s, lastMaps.at(i-1));
1.24 - }
1.25 -
1.26 -
1.27 // To make the texteditor save its settings, call the destructor
1.28 delete (textEditor);
1.29
1.30 @@ -1526,45 +1513,33 @@
1.31 actionFormatBackColor->addTo( canvasContextMenu );
1.32
1.33 // Menu for last opened files
1.34 - // Read settings initially
1.35 - QString s;
1.36 - int j=settings.readNumEntry( "/lastMaps/number",0);
1.37 - for (int i=1;i<=j;i++)
1.38 + // Create actions
1.39 + for (int i = 0; i < MaxRecentFiles; ++i)
1.40 {
1.41 - s=settings.value(QString("/lastMaps/map-%1").arg(i),"").toString();
1.42 - if (!s.isEmpty() && j<=maxLastMaps)
1.43 - lastMaps.append(s);
1.44 - }
1.45 - setupLastMapsMenu();
1.46 - connect( fileLastMapsMenu, SIGNAL( triggered(QAction *) ), this, SLOT( fileLoadLast(QAction*) ) );
1.47 + recentFileActs[i] = new QAction(this);
1.48 + recentFileActs[i]->setVisible(false);
1.49 + fileLastMapsMenu->addAction(recentFileActs[i]);
1.50 + connect(recentFileActs[i], SIGNAL(triggered()),
1.51 + this, SLOT(fileLoadRecent()));
1.52 + }
1.53 + setupRecentMapsMenu();
1.54 }
1.55
1.56 -void Main::setupLastMapsMenu()
1.57 +void Main::setupRecentMapsMenu()
1.58 {
1.59 - // Remove double entries
1.60 - QStringList::Iterator it=lastMaps.begin();
1.61 - QStringList::Iterator jt;
1.62 - while (it!=lastMaps.end() )
1.63 - {
1.64 - jt=it;
1.65 - ++jt;
1.66 - while (jt!=lastMaps.end() )
1.67 - {
1.68 - if (*it == *jt)
1.69 - jt=lastMaps.remove(jt);
1.70 - else
1.71 - jt++;
1.72 - }
1.73 - it++;
1.74 - }
1.75 -
1.76 - // Limit length of list to maxLastMaps
1.77 - while ((int)(lastMaps.count()) > maxLastMaps) lastMaps.pop_back();
1.78 -
1.79 - // build Menu from lastMaps string list
1.80 - fileLastMapsMenu->clear();
1.81 - for (it = lastMaps.begin(); it != lastMaps.end(); ++it )
1.82 - fileLastMapsMenu->addAction (*it );
1.83 + QStringList files = settings.value("/mainwindow/recentFileList").toStringList();
1.84 +
1.85 + int numRecentFiles = qMin(files.size(), (int)MaxRecentFiles);
1.86 +
1.87 + for (int i = 0; i < numRecentFiles; ++i) {
1.88 + //QString text = tr("&%1 %2").arg(i + 1).arg(strippedName(files[i]));
1.89 + QString text = tr("&%1 %2").arg(i + 1).arg(files[i]);
1.90 + recentFileActs[i]->setText(text);
1.91 + recentFileActs[i]->setData(files[i]);
1.92 + recentFileActs[i]->setVisible(true);
1.93 + }
1.94 + for (int j = numRecentFiles; j < MaxRecentFiles; ++j)
1.95 + recentFileActs[j]->setVisible(false);
1.96 }
1.97
1.98 void Main::hideEvent (QHideEvent * )
1.99 @@ -1853,8 +1828,7 @@
1.100 {
1.101 // Only append to lastMaps if not loaded from a tmpDir
1.102 // e.g. imported bookmarks are in a tmpDir
1.103 - lastMaps.prepend(me->getFilePath() );
1.104 - setupLastMapsMenu();
1.105 + addRecentMap(me->getFilePath() );
1.106 }
1.107 actionFilePrint->setEnabled (true);
1.108 }
1.109 @@ -1911,9 +1885,25 @@
1.110 fileLoad (NewMap);
1.111 }
1.112
1.113 -void Main::fileLoadLast(QAction *a)
1.114 +void Main::fileLoadRecent()
1.115 {
1.116 - fileLoad(lastMaps.at(fileLastMapsMenu->actions().indexOf(a)) ,NewMap);
1.117 + QAction *action = qobject_cast<QAction *>(sender());
1.118 + if (action)
1.119 + fileLoad (action->data().toString(), NewMap);
1.120 +}
1.121 +
1.122 +void Main::addRecentMap (const QString &fileName)
1.123 +{
1.124 +
1.125 + QStringList files = settings.value("/mainwindow/recentFileList").toStringList();
1.126 + files.removeAll(fileName);
1.127 + files.prepend(fileName);
1.128 + while (files.size() > MaxRecentFiles)
1.129 + files.removeLast();
1.130 +
1.131 + settings.setValue("/mainwindow/recentFileList", files);
1.132 +
1.133 + setupRecentMapsMenu();
1.134 }
1.135
1.136 void Main::fileSave(const SaveMode &savemode)
1.137 @@ -2024,8 +2014,7 @@
1.138 statusBar()->message(
1.139 tr("Saved %1").arg(me->getFilePath()),
1.140 statusbarTime );
1.141 - lastMaps.prepend(me->getFilePath() );
1.142 - setupLastMapsMenu();
1.143 + addRecentMap (me->getFilePath() );
1.144 } else
1.145 statusBar()->message(
1.146 tr("Couldn't save ").arg(me->getFilePath()),