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