# HG changeset patch # User Torsten # Date 1390148735 -3600 # Node ID 03a8428adef7d66fa503f26e1936d818c34348bd # Parent 024940bd5b7788718d965809497604450b7d5c36 gui: provide prefernces for the file browser's directory at startup * settings-dialog.ui: add check box for restoring previous directory and line edit / file dialog for setting startup directory * settings-dialog.cc (constructor): init new input widgets from settings, connect needed signals; (write_changed_settings): write values from new widgets into settings file; (get_file_browser_dir): new slot for settings octave dir in a file dialog; (get_dir): common function for settings dialog slots; (get_octave_dir): use get_dir; (set_disabled_pref_file_browser_dir): slot for disabling some setting widgets * settings-dialog.h: new slots get_file_browser_dir, get_dir, set_disabled_pref_file_browser_dir * files-doc-widget.cc (constructor): set start directory depending on settings diff -r 024940bd5b77 -r 03a8428adef7 libgui/src/files-dock-widget.cc --- a/libgui/src/files-dock-widget.cc Sun Jan 19 11:30:15 2014 +0100 +++ b/libgui/src/files-dock-widget.cc Sun Jan 19 17:25:35 2014 +0100 @@ -155,8 +155,29 @@ QSettings *settings = resource_manager::get_settings (); // FIXME: what should happen if settings is 0? - // Create the QFileSystemModel starting in the actual directory - QDir curr_dir; + // Create the QFileSystemModel starting in the desired directory + QDir startup_dir; // take current dir + + if (settings->value ("filesdockwidget/restore_last_dir",false).toBool ()) + { + // restore last dir from previous session + QStringList last_dirs + = settings->value ("filesdockwidget/mru_dir_list").toStringList (); + if (last_dirs.length () > 0) + startup_dir = QDir (last_dirs.at (0)); // last dir in previous session + } + else if (! settings->value ("filesdockwidget/startup_dir").toString ().isEmpty ()) + { + // do not restore but there is a startup dir configured + startup_dir = QDir (settings->value ("filesdockwidget/startup_dir").toString ()); + } + + if (! startup_dir.exists ()) + { + // the configured startup dir does not exist, take actual one + startup_dir = QDir (); + } + _file_system_model = new QFileSystemModel (this); if (settings->value ("filesdockwidget/showHiddenFiles",false).toBool ()) { @@ -168,7 +189,7 @@ _file_system_model->setFilter (QDir::NoDotAndDotDot | QDir::AllEntries); } QModelIndex rootPathIndex = _file_system_model->setRootPath ( - curr_dir.absolutePath ()); + startup_dir.absolutePath ()); // Attach the model to the QTreeView and set the root index _file_tree_view = new FileTreeViewer (container); diff -r 024940bd5b77 -r 03a8428adef7 libgui/src/settings-dialog.cc --- a/libgui/src/settings-dialog.cc Sun Jan 19 11:30:15 2014 +0100 +++ b/libgui/src/settings-dialog.cc Sun Jan 19 17:25:35 2014 +0100 @@ -183,6 +183,8 @@ settings->value ("terminal/fontName","Courier New").toString ()) ); ui->terminal_fontSize->setValue ( settings->value ("terminal/fontSize", 10).toInt ()); + + // file browser ui->showFileSize->setChecked ( settings->value ("filesdockwidget/showFileSize", false).toBool ()); ui->showFileType->setChecked ( @@ -193,8 +195,17 @@ settings->value ("filesdockwidget/showHiddenFiles",false).toBool ()); ui->useAlternatingRowColors->setChecked ( settings->value ("filesdockwidget/useAlternatingRowColors",true).toBool ()); + connect (ui->sync_octave_directory, SIGNAL (toggled (bool)), + this, SLOT (set_disabled_pref_file_browser_dir (bool))); ui->sync_octave_directory->setChecked ( settings->value ("filesdockwidget/sync_octave_directory",true).toBool ()); + ui->cb_restore_file_browser_dir->setChecked ( + settings->value ("filesdockwidget/restore_last_dir",false).toBool ()); + ui->le_file_browser_dir->setText ( + settings->value ("filesdockwidget/startup_dir").toString ()); + connect (ui->pb_file_browser_dir, SIGNAL (pressed ()), + this, SLOT (get_file_browser_dir ())); + ui->checkbox_allow_web_connect->setChecked ( settings->value ("news/allow_web_connection",false).toBool ()); ui->useProxyServer->setChecked ( @@ -568,6 +579,7 @@ settings->setValue ("terminal/fontSize", ui->terminal_fontSize->value ()); settings->setValue ("terminal/fontName", ui->terminal_fontName->currentFont ().family ()); + settings->setValue ("filesdockwidget/showFileSize", ui->showFileSize->isChecked ()); settings->setValue ("filesdockwidget/showFileType", @@ -580,6 +592,12 @@ ui->useAlternatingRowColors->isChecked ()); settings->setValue ("filesdockwidget/sync_octave_directory", ui->sync_octave_directory->isChecked ()); + settings->setValue ("filesdockwidget/restore_last_dir", + ui->cb_restore_file_browser_dir->isChecked ()); + settings->setValue ("filesdockwidget/startup_dir", + ui->le_file_browser_dir->text ()); + + settings->setValue ("news/allow_web_connection", ui->checkbox_allow_web_connect->isChecked ()); settings->setValue ("useProxyServer", ui->useProxyServer->isChecked ()); @@ -764,11 +782,43 @@ settings->sync (); } + +// internal slots + +void +settings_dialog::get_dir (QLineEdit *line_edit, const QString& title) +{ + QString dir = QFileDialog::getExistingDirectory(this, + title, line_edit->text (), + QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); + line_edit->setText (dir); +} + void settings_dialog::get_octave_dir () { - QString dir = QFileDialog::getExistingDirectory(this, - tr("Set Octave Startup Directory"), "", - QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); - ui->le_octave_dir->setText (dir); -} \ No newline at end of file + get_dir (ui->le_octave_dir, tr ("Set Octave Startup Directory")); +} + +void +settings_dialog::get_file_browser_dir () +{ + get_dir (ui->le_file_browser_dir, tr ("Set File Browser Startup Directory")); +} + +void +settings_dialog::set_disabled_pref_file_browser_dir (bool disable) +{ + ui->cb_restore_file_browser_dir->setDisabled (disable); + + if (! disable) + { + ui->le_file_browser_dir->setDisabled (ui->cb_restore_file_browser_dir->isChecked ()); + ui->pb_file_browser_dir->setDisabled (ui->cb_restore_file_browser_dir->isChecked ()); + } + else + { + ui->le_file_browser_dir->setDisabled (disable); + ui->pb_file_browser_dir->setDisabled (disable); + } +} diff -r 024940bd5b77 -r 03a8428adef7 libgui/src/settings-dialog.h --- a/libgui/src/settings-dialog.h Sun Jan 19 11:30:15 2014 +0100 +++ b/libgui/src/settings-dialog.h Sun Jan 19 17:25:35 2014 +0100 @@ -25,6 +25,7 @@ #include #include +#include #include "color-picker.h" @@ -47,6 +48,9 @@ private slots: void get_octave_dir (); + void get_file_browser_dir (); + void get_dir (QLineEdit*, const QString&); + void set_disabled_pref_file_browser_dir (bool disable); private: Ui::settings_dialog * ui; diff -r 024940bd5b77 -r 03a8428adef7 libgui/src/settings-dialog.ui --- a/libgui/src/settings-dialog.ui Sun Jan 19 11:30:15 2014 +0100 +++ b/libgui/src/settings-dialog.ui Sun Jan 19 17:25:35 2014 +0100 @@ -276,8 +276,6 @@ - - @@ -295,7 +293,7 @@ - + Qt::Horizontal @@ -308,6 +306,19 @@ + + + + Qt::Horizontal + + + + 40 + 20 + + + + @@ -315,30 +326,7 @@ - - - - Restore last Octave directory of previous session - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - + @@ -351,6 +339,16 @@ + + + + Restore last Octave directory of previous session + + + + + + @@ -390,7 +388,7 @@ 0 0 - 662 + 554 399 @@ -1329,56 +1327,135 @@ 0 0 - 678 - 378 + 474 + 318 - - - - - Show file size - - - - - - - Synchronize Octave working directory with file browser - - - - - - - Show hidden files - - - - - - - Show file type - - - - - - - Show date of last modification - - - - - - - Alternating row colors - - - - + + + Display + + + + + + 0 + + + + + Show file type + + + + + + + Show hidden files + + + + + + + Show file size + + + + + + + Show date of last modification + + + + + + + Alternating row colors + + + + + + + + + + + + Behavior + + + + + + + + Synchronize Octave working directory with file browser + + + + + + + + + Startup path + + + + + + + + + + Restore last directory of previous session + + + + + + + Browse + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + @@ -1414,8 +1491,8 @@ 0 0 - 678 - 378 + 154 + 114 @@ -1492,8 +1569,8 @@ 0 0 - 678 - 378 + 529 + 204 @@ -2065,5 +2142,37 @@ + + cb_restore_file_browser_dir + toggled(bool) + le_file_browser_dir + setDisabled(bool) + + + 250 + 294 + + + 250 + 324 + + + + + cb_restore_file_browser_dir + toggled(bool) + pb_file_browser_dir + setDisabled(bool) + + + 250 + 294 + + + 426 + 324 + + +