diff --git a/Core/Core.cc b/Core/Core.cc
index 23e02351ecfe3cd7dd54d8aafd6a9d7359747a67..554ff685fabaa08aa930fd4ef7d0d0d45fee3222 100644
--- a/Core/Core.cc
+++ b/Core/Core.cc
@@ -889,11 +889,13 @@ void Core::multiViewMode( int _mode ) {
void
Core::slotRecentOpen(QAction* _action)
{
- QVector< OpenFlipper::Options::RecentFile > recentFiles = OpenFlipper::Options::recentFiles();
+ QStringList recentFiles = OpenFlipperSettings().value("Core/File/RecentFiles").toStringList();
+ QStringList recentTypes = OpenFlipperSettings().value("Core/File/RecentTypes").toStringList();
+
for (int i = 0 ; i < recentFiles.size() ; ++i )
- if ( recentFiles[i].filename == _action->text() ){
+ if ( recentFiles[i] == _action->text() ){
OpenFlipper::Options::loadingRecentFile(true);
- loadObject(recentFiles[i].type, recentFiles[i].filename);
+ loadObject(typeId(recentTypes[i]), recentFiles[i]);
OpenFlipper::Options::loadingRecentFile(false);
return;
}
diff --git a/Core/ParseIni.cc b/Core/ParseIni.cc
index b8feeb853c6ab95aeb2b33471063c572703005ed..29afc9da2c62fa23322ea702e634103598a16382 100644
--- a/Core/ParseIni.cc
+++ b/Core/ParseIni.cc
@@ -135,7 +135,7 @@ void Core::readApplicationOptions(INIFile& _ini) {
//============================================================================
QString startup_dir;
if( _ini.get_entry(startup_dir, "Options", "StartupDir") )
- OpenFlipper::Options::currentDir(startup_dir);
+ OpenFlipperSettings().setValue("Core/CurrentDir", startup_dir );
//============================================================================
// Load the default script directory
@@ -383,9 +383,9 @@ void Core::readRecentFiles(QString _filename){
OpenFlipper::Options::loadingSettings(true);
// Load maxRecent Setting
- int mrecent = 6;
+ int mrecent = 10;
if (ini.get_entry(mrecent,"Options","MaxRecent"))
- OpenFlipper::Options::maxRecent(mrecent);
+ OpenFlipperSettings().setValue("Core/File/MaxRecent", mrecent);
for ( int j = mrecent-1 ; j >= 0; --j) {
QString file;
@@ -416,18 +416,20 @@ void Core::readRecentFiles(QString _filename){
void Core::writeApplicationOptions(INIFile& _ini) {
// Write maximum recent file count to ini
- _ini.add_entry("Options","MaxRecent",OpenFlipper::Options::maxRecent());
+ _ini.add_entry("Options","MaxRecent", OpenFlipperSettings().value("Core/File/MaxRecent",10).toInt() );
// Write list of recent files to ini
- QVector< OpenFlipper::Options::RecentFile > recentFiles = OpenFlipper::Options::recentFiles();
+ QStringList recentFiles = OpenFlipperSettings().value("Core/File/RecentFiles").toStringList();
+ QStringList recentTypes = OpenFlipperSettings().value("Core/File/RecentTypes").toStringList();
+
for ( int j = 0 ; j < recentFiles.size(); ++j) {
// Save filename
QString key = "recent" + QString::number(j);
- QString filename = recentFiles[j].filename;
+ QString filename = recentFiles[j];
_ini.add_entry( "Options" , key , filename );
// Save DataType
key = "type" + QString::number(j);
- QString type = typeName( recentFiles[j].type );
+ QString type = recentTypes[j];
_ini.add_entry( "Options" , key , type );
}
@@ -513,7 +515,7 @@ void Core::writeApplicationOptions(INIFile& _ini) {
if ( !_ini.section_exists("Options") )
_ini.add_section("Options");
- QString dir = OpenFlipper::Options::currentDirStr().toUtf8();
+ QString dir = OpenFlipperSettings().value("Core/CurrentDir").toString().toUtf8();
_ini.add_entry("Options","StartupDir",dir);
QString scriptDir = OpenFlipper::Options::currentScriptDirStr().toUtf8();
diff --git a/Core/PluginLoader.cc b/Core/PluginLoader.cc
index 4d7774a69e54139d901fad823768fb0f95d10637..516376fa7f91c9314f8f8a2552607fcf9bf9178c 100644
--- a/Core/PluginLoader.cc
+++ b/Core/PluginLoader.cc
@@ -217,7 +217,7 @@ void Core::slotLoadPlugin(){
filter = "Plugins (*.so)";
// Ask the user to select the file to load
- QString filename = ACG::getOpenFileName(coreWidget_,tr("Load Plugin"),filter,OpenFlipper::Options::currentDirStr());
+ QString filename = ACG::getOpenFileName(coreWidget_,tr("Load Plugin"),filter, OpenFlipperSettings().value("Core/CurrentDir").toString() );
if (filename.isEmpty())
return;
diff --git a/Core/openFunctions.cc b/Core/openFunctions.cc
index cfb954cac21a89c01a6a86a8b57e1a58538748b1..864be1d40c8a22a9ea55c727843960f8c44cbaa6 100644
--- a/Core/openFunctions.cc
+++ b/Core/openFunctions.cc
@@ -707,7 +707,7 @@ void Core::loadSettings(){
QFileDialog fileDialog( coreWidget_,
tr("Load Settings"),
- OpenFlipper::Options::currentDirStr(),
+ OpenFlipperSettings().value("Core/CurrentDir").toString(),
tr("INI files (*.ini)") );
fileDialog.setOption (QFileDialog::DontUseNativeDialog, true);
@@ -763,7 +763,7 @@ void Core::loadSettings(){
QString newpath = complete_name.section(OpenFlipper::Options::dirSeparator(),0,-2);
- OpenFlipper::Options::currentDir(newpath);
+ OpenFlipperSettings().setValue("Core/CurrentDir", newpath);
if ( complete_name.endsWith("ini") ) {
openIniFile( complete_name,
@@ -785,7 +785,7 @@ void Core::loadSettings(QString _filename){
return;
QString newpath = _filename.section(OpenFlipper::Options::dirSeparator(),0,-2);
- OpenFlipper::Options::currentDir(newpath);
+ OpenFlipperSettings().setValue("Core/CurrentDir", newpath);
if ( _filename.endsWith("ini") ) {
// Loaded function for recent files. Load everything.
diff --git a/Core/optionHandling.cc b/Core/optionHandling.cc
index 255845924be2fbd5b54dd38c34ac468b6d170648..8f982c632e7bb38a931aeb2ceb7abfa573b7b213 100644
--- a/Core/optionHandling.cc
+++ b/Core/optionHandling.cc
@@ -218,8 +218,7 @@ void Core::setupOptions() {
OpenFlipper::Options::currentTextureDir(OpenFlipper::Options::textureDirStr());
// Default to home directory
- OpenFlipper::Options::currentDir( QDir::home() );
-
+ OpenFlipperSettings().setValue("Core/CurrentDir", QDir::homePath() );
// ==============================================================
// Load Application options from all files available
diff --git a/Core/saveSettings.cc b/Core/saveSettings.cc
index 9ab9b2391285a8fa985032058296fb5f598f66da..7e6704991bf81df57e03d3395d38a4c82c125f03 100644
--- a/Core/saveSettings.cc
+++ b/Core/saveSettings.cc
@@ -64,7 +64,7 @@ void Core::saveSettings(){
QFileDialog fileDialog( coreWidget_,
tr("Save Settings"),
- OpenFlipper::Options::currentDirStr(),
+ OpenFlipperSettings().value("Core/CurrentDir").toString(),
tr("INI files (*.ini);;OBJ files (*.obj )") );
fileDialog.setOption (QFileDialog::DontUseNativeDialog, true);
@@ -149,7 +149,7 @@ void Core::saveSettings(){
// Get the chosen directory and remember it.
QString newpath = complete_name.section(OpenFlipper::Options::dirSeparator(),0,-2);
- OpenFlipper::Options::currentDir(newpath);
+ OpenFlipperSettings().setValue("Core/CurrentDir", newpath);
// ========================================================================================
// update status information
diff --git a/common/GlobalOptions.hh b/common/GlobalOptions.hh
index b1efb1b2252c0a4880dc233b429f3dca9934fa97..d65f717b86658aedc80b8b0ea3850a55b9c38488 100644
--- a/common/GlobalOptions.hh
+++ b/common/GlobalOptions.hh
@@ -93,6 +93,9 @@
*
* File Handling
* * Core/CurrentDir The current Directory of the Application
+* * Core/File/RecentFiles List of Recent Files
+* * Core/File/RecentTypes DataTypes of Recent Files
+* * Core/File/MaxRecent Maximum entries in recent File list
* * Core/File/UseLoadDefaults Use the defaults saved in the file plugins
*
* Log Settings
@@ -247,22 +250,6 @@ QString helpDirStr();
* @{ */
//===========================================================================
- /// return the current directory
- DLLEXPORT
- QString currentDirStr();
-
- /// return the current directory
- DLLEXPORT
- QDir currentDir();
-
- /// Sets the Path to the current directory
- DLLEXPORT
- void currentDir(QDir _dir);
-
- /// Sets the Path to the current directory
- DLLEXPORT
- bool currentDir(QString _dir);
-
/// return the current script-directory
DLLEXPORT
QString currentScriptDirStr();
diff --git a/common/RecentFiles.cc b/common/RecentFiles.cc
index a707a0c24c733e774b7db0547a50c79a5f195293..dc8d010cabc557d29cd0e75ee4a0b9e57e535bfe 100644
--- a/common/RecentFiles.cc
+++ b/common/RecentFiles.cc
@@ -53,41 +53,39 @@
#include "RecentFiles.hh"
+#include
+#include
namespace OpenFlipper {
namespace Options {
-/// List of recently opened files
-static QVector recentFiles_;
-
-/// Maximum number of recent files
-static int maxRecent_ = 6;
-
-int maxRecent() { return maxRecent_; }
-
-QVector recentFiles() { return recentFiles_; }
-
-void maxRecent(int _max) { maxRecent_ = _max; }
-void recentFiles(QVector _list ) { recentFiles_ = _list;}
-
-
-
void addRecentFile(QString _file, DataType _type) {
+
+
+ QStringList recentFiles = OpenFlipperSettings().value("Core/File/RecentFiles").toStringList();
+ QStringList recentTypes = OpenFlipperSettings().value("Core/File/RecentTypes").toStringList();
+
+ QString type = typeName(_type);
+
// Check if file already in recent list
- for ( int i = 0 ; i < recentFiles_.size() ; ++i)
- if ( _file == recentFiles_[i].filename && _type == recentFiles_[i].type )
- recentFiles_.remove(i);
+ for ( int i = 0 ; i < recentFiles.size() ; ++i)
+ if ( _file == recentFiles[i] && type == recentTypes[i] ){
+ recentFiles.removeAt(i);
+ recentTypes.removeAt(i);
+ }
// Erase if too many files in list
- if ( recentFiles_.size() >= maxRecent_ ) {
- recentFiles_.pop_back();
+ if ( recentFiles.size() >= OpenFlipperSettings().value("Core/File/MaxRecent").toInt() ) {
+ recentFiles.pop_back();
+ recentTypes.pop_back();
}
+
+ recentFiles.push_front(_file);
+ recentTypes.push_front(type);
- RecentFile recent;
- recent.filename = _file;
- recent.type = _type;
- recentFiles_.push_front(recent);
+ OpenFlipperSettings().setValue("Core/File/RecentFiles", recentFiles);
+ OpenFlipperSettings().setValue("Core/File/RecentTypes", recentTypes);
}
}
diff --git a/common/RecentFiles.hh b/common/RecentFiles.hh
index 0a254af2756bd5c6107ded7d3bc9afd4256f5010..54ca324cf0533af1c220d9605b060c306518411a 100644
--- a/common/RecentFiles.hh
+++ b/common/RecentFiles.hh
@@ -66,12 +66,6 @@
namespace OpenFlipper {
namespace Options {
-/// struct storing infos about recent files
-struct RecentFile{
- QString filename;
- DataType type;
-};
-
//===========================================================================
/** @name Recent Files
@@ -81,22 +75,6 @@ struct RecentFile{
/// Add a file to the recent files list ( removes one, if list grows to larger then maxRecent )
DLLEXPORT
void addRecentFile(QString _file, DataType _type);
-
- /// Return the list of recent files
- DLLEXPORT
- QVector< RecentFile > recentFiles();
-
- /// Set the list of recent files
- DLLEXPORT
- void recentFiles(QVector< RecentFile > _list );
-
- /// Get the maximum number of recent files kept in the list
- DLLEXPORT
- int maxRecent();
-
- /// Set the maximum number of recent files kept in the list
- DLLEXPORT
- void maxRecent(int _max);
/** @} */
diff --git a/widgets/coreWidget/CoreWidget.cc b/widgets/coreWidget/CoreWidget.cc
index bc455e7e6611aff3cb25d1ed222b9e4de70d511d..43f5879cbc958b8bb3a396abb2bc7edf138b9e65 100644
--- a/widgets/coreWidget/CoreWidget.cc
+++ b/widgets/coreWidget/CoreWidget.cc
@@ -510,8 +510,6 @@ CoreWidget( QVector& _viewModes,
setupMenuBar();
- updateRecent();
-
statusBar_->showMessage(tr("Ready"), 5000);
registerCoreKeys();
@@ -854,15 +852,17 @@ CoreWidget::updateRecent()
recentFilesMenu_->clear();
- QVector< OpenFlipper::Options::RecentFile > recentFiles = OpenFlipper::Options::recentFiles();
+ QStringList recentFiles = OpenFlipperSettings().value("Core/File/RecentFiles").toStringList();
+ QStringList recentTypes = OpenFlipperSettings().value("Core/File/RecentTypes").toStringList();
+
for (int i = 0 ; i < recentFiles.size() ; ++i ) {
- QFileInfo fi(recentFiles[i].filename);
+ QFileInfo fi(recentFiles[i]);
if (fi.suffix() == "ini")
- recentFilesMenu_->addAction(QIcon(OpenFlipper::Options::iconDirStr() + OpenFlipper::Options::dirSeparator()+"Settings-Icon.png"), recentFiles[i].filename);
+ recentFilesMenu_->addAction(QIcon(OpenFlipper::Options::iconDirStr() + OpenFlipper::Options::dirSeparator()+"Settings-Icon.png"), recentFiles[i]);
else
- recentFilesMenu_->addAction(typeIcon( recentFiles[i].type ), recentFiles[i].filename);
+ recentFilesMenu_->addAction(typeIcon( typeId(recentTypes[i]) ), recentFiles[i]);
}
diff --git a/widgets/loadWidget/loadWidget.cc b/widgets/loadWidget/loadWidget.cc
index 2f6e6422bef54d8c5696f8c79940ee19d3b1944d..e7f4b3fb4a7d99fca3ee31add477216e57b69c27 100644
--- a/widgets/loadWidget/loadWidget.cc
+++ b/widgets/loadWidget/loadWidget.cc
@@ -84,7 +84,7 @@ LoadWidget::LoadWidget(std::vector& _supportedTypes , QWidget *parent
//overwrite dialog shouldn't be handled by the qfiledialog
setConfirmOverwrite(false);
- setDirectory(OpenFlipper::Options::currentDirStr());
+ setDirectory( OpenFlipperSettings().value("Core/CurrentDir").toString() );
}
/// Desctructor
@@ -233,7 +233,7 @@ void LoadWidget::loadFile(){
QFileInfo fi(files[i]);
QString filename = fi.absoluteFilePath();
- OpenFlipper::Options::currentDir(fi.absolutePath());
+ OpenFlipperSettings().setValue("Core/CurrentDir", filename);
QFile file(filename);
if (fi.isDir() || !file.exists()) continue; //do nothing if its a not a valid file
@@ -311,8 +311,7 @@ void LoadWidget::saveFile(){
if ( pluginForExtension_.find( fi.suffix() ) != pluginForExtension_.end() )
emit save(id_,filename, pluginForExtension_[fi.suffix()] );
- OpenFlipper::Options::currentDir(fi.absolutePath());
-
+ OpenFlipperSettings().setValue("Core/CurrentDir", fi.absolutePath() );
}
/// show Widget for loading Files