Mercurial > octave-dspies
comparison libgui/src/files-dock-widget.cc @ 17970:f6e1be4ad923
Add functionality for showing/hiding hidden files in the file browser (bug #40636).
* files-dock-widget.cc (constructor): modify the file model filter based on the stored settings for showing hidden files; (notice_setting): when the settings are changed, update the file model filter and refresh the list.
author | John Swensen <jpswensen@gmail.com> |
---|---|
date | Tue, 19 Nov 2013 15:47:06 -0500 |
parents | 225c7be94c5f |
children | 79e7c468d392 |
comparison
equal
deleted
inserted
replaced
17969:c1e4e25872f7 | 17970:f6e1be4ad923 |
---|---|
1 /* | 1 /* |
2 | 2 |
3 Copyright (C) 2013 John P. Swensen | |
3 Copyright (C) 2011-2013 Jacob Dawid | 4 Copyright (C) 2011-2013 Jacob Dawid |
4 | 5 |
5 This file is part of Octave. | 6 This file is part of Octave. |
6 | 7 |
7 Octave is free software; you can redistribute it and/or modify it | 8 Octave is free software; you can redistribute it and/or modify it |
148 connect (_sync_octave_directory_action, SIGNAL (triggered ()), this, | 149 connect (_sync_octave_directory_action, SIGNAL (triggered ()), this, |
149 SLOT (do_sync_octave_directory ())); | 150 SLOT (do_sync_octave_directory ())); |
150 connect (_sync_browser_directory_action, SIGNAL (triggered ()), this, | 151 connect (_sync_browser_directory_action, SIGNAL (triggered ()), this, |
151 SLOT (do_sync_browser_directory ())); | 152 SLOT (do_sync_browser_directory ())); |
152 | 153 |
154 QSettings *settings = resource_manager::get_settings (); | |
155 // FIXME: what should happen if settings is 0? | |
156 | |
153 // Create the QFileSystemModel starting in the actual directory | 157 // Create the QFileSystemModel starting in the actual directory |
154 QDir curr_dir; | 158 QDir curr_dir; |
155 _file_system_model = new QFileSystemModel (this); | 159 _file_system_model = new QFileSystemModel (this); |
156 _file_system_model->setFilter (QDir::NoDotAndDotDot | QDir::AllEntries); | 160 if (settings->value ("filesdockwidget/showHiddenFiles",false).toBool ()) |
161 { | |
162 _file_system_model->setFilter (QDir::NoDotAndDotDot | QDir::AllEntries | |
163 | QDir::Hidden); | |
164 } | |
165 else | |
166 { | |
167 _file_system_model->setFilter (QDir::NoDotAndDotDot | QDir::AllEntries); | |
168 } | |
157 QModelIndex rootPathIndex = _file_system_model->setRootPath ( | 169 QModelIndex rootPathIndex = _file_system_model->setRootPath ( |
158 curr_dir.absolutePath ()); | 170 curr_dir.absolutePath ()); |
159 | 171 |
160 // Attach the model to the QTreeView and set the root index | 172 // Attach the model to the QTreeView and set the root index |
161 _file_tree_view = new FileTreeViewer (container); | 173 _file_tree_view = new FileTreeViewer (container); |
166 _file_tree_view->setAlternatingRowColors (true); | 178 _file_tree_view->setAlternatingRowColors (true); |
167 _file_tree_view->setAnimated (true); | 179 _file_tree_view->setAnimated (true); |
168 _file_tree_view->setToolTip (tr ("Double-click a file to open it")); | 180 _file_tree_view->setToolTip (tr ("Double-click a file to open it")); |
169 | 181 |
170 // get sort column and order as well as cloumn state (order and width) | 182 // get sort column and order as well as cloumn state (order and width) |
171 QSettings *settings = resource_manager::get_settings (); | 183 |
172 // FIXME: what should happen if settings is 0? | |
173 _file_tree_view->sortByColumn ( | 184 _file_tree_view->sortByColumn ( |
174 settings->value ("filesdockwidget/sort_files_by_column",0).toInt (), | 185 settings->value ("filesdockwidget/sort_files_by_column",0).toInt (), |
175 static_cast<Qt::SortOrder> | 186 static_cast<Qt::SortOrder> |
176 (settings->value ("filesdockwidget/sort_files_by_order", | 187 (settings->value ("filesdockwidget/sort_files_by_order", |
177 Qt::AscendingOrder).toUInt ()) | 188 Qt::AscendingOrder).toUInt ()) |
356 } | 367 } |
357 | 368 |
358 void files_dock_widget::toggle_headercontextitem_filesize () | 369 void files_dock_widget::toggle_headercontextitem_filesize () |
359 { | 370 { |
360 QSettings *settings = resource_manager::get_settings (); | 371 QSettings *settings = resource_manager::get_settings (); |
361 settings->setValue ("filesdockwidget/showFileSize", | 372 settings->setValue |
362 !settings->value ("filesdockwidget/showFileSize",false).toBool ()); | 373 ("filesdockwidget/showFileSize", |
374 ! settings->value ("filesdockwidget/showFileSize",false).toBool ()); | |
363 settings->sync (); | 375 settings->sync (); |
364 this->notice_settings (settings); | 376 this->notice_settings (settings); |
365 } | 377 } |
366 | 378 |
367 void files_dock_widget::toggle_headercontextitem_filetype () | 379 void files_dock_widget::toggle_headercontextitem_filetype () |
368 { | 380 { |
369 QSettings *settings = resource_manager::get_settings (); | 381 QSettings *settings = resource_manager::get_settings (); |
370 settings->setValue ("filesdockwidget/showFileType", | 382 settings->setValue |
371 !settings->value ("filesdockwidget/showFileType",false).toBool ()); | 383 ("filesdockwidget/showFileType", |
384 ! settings->value ("filesdockwidget/showFileType",false).toBool ()); | |
372 settings->sync (); | 385 settings->sync (); |
373 this->notice_settings (settings); | 386 this->notice_settings (settings); |
374 } | 387 } |
375 | 388 |
376 void files_dock_widget::toggle_headercontextitem_datemodified () | 389 void files_dock_widget::toggle_headercontextitem_datemodified () |
377 { | 390 { |
378 QSettings *settings = resource_manager::get_settings (); | 391 QSettings *settings = resource_manager::get_settings (); |
379 settings->setValue ("filesdockwidget/showLastModified", | 392 settings->setValue |
380 !settings->value ("filesdockwidget/showLastModified",false).toBool ()); | 393 ("filesdockwidget/showLastModified", |
394 ! settings->value ("filesdockwidget/showLastModified",false).toBool ()); | |
381 settings->sync (); | 395 settings->sync (); |
382 this->notice_settings (settings); | 396 this->notice_settings (settings); |
383 } | 397 } |
384 | 398 |
385 void files_dock_widget::toggle_headercontextitem_showhidden () | 399 void files_dock_widget::toggle_headercontextitem_showhidden () |
386 { | 400 { |
387 QSettings *settings = resource_manager::get_settings (); | 401 QSettings *settings = resource_manager::get_settings (); |
388 settings->setValue ("filesdockwidget/showHiddenFiles", | 402 settings->setValue |
389 !settings->value ("filesdockwidget/showHiddenFiles",false).toBool ()); | 403 ("filesdockwidget/showHiddenFiles", |
404 ! settings->value ("filesdockwidget/showHiddenFiles",false).toBool ()); | |
390 settings->sync (); | 405 settings->sync (); |
391 this->notice_settings (settings); | 406 this->notice_settings (settings); |
392 } | 407 } |
393 | 408 |
394 void | 409 void |
399 QSettings *settings = resource_manager::get_settings (); | 414 QSettings *settings = resource_manager::get_settings (); |
400 | 415 |
401 QAction fileSizeAction (tr ("File size"), &menu); | 416 QAction fileSizeAction (tr ("File size"), &menu); |
402 fileSizeAction.setCheckable (true); | 417 fileSizeAction.setCheckable (true); |
403 fileSizeAction.setChecked ( | 418 fileSizeAction.setChecked ( |
404 settings->value ("filesdockwidget/showFileSize",false).toBool ()); | 419 settings->value ("filesdockwidget/showFileSize",false).toBool ()); |
405 connect (&fileSizeAction, SIGNAL(triggered ()), | 420 connect (&fileSizeAction, SIGNAL(triggered ()), |
406 this, SLOT (toggle_headercontextitem_filesize ())); | 421 this, SLOT (toggle_headercontextitem_filesize ())); |
407 menu.addAction (&fileSizeAction); | 422 menu.addAction (&fileSizeAction); |
408 | 423 |
409 QAction fileTypeAction (tr ("File type"), &menu); | 424 QAction fileTypeAction (tr ("File type"), &menu); |
410 fileTypeAction.setCheckable (true); | 425 fileTypeAction.setCheckable (true); |
411 fileTypeAction.setChecked ( | 426 fileTypeAction.setChecked ( |
412 settings->value ("filesdockwidget/showFileType",false).toBool ()); | 427 settings->value ("filesdockwidget/showFileType",false).toBool ()); |
413 connect (&fileTypeAction, SIGNAL(triggered ()), | 428 connect (&fileTypeAction, SIGNAL(triggered ()), |
414 this, SLOT (toggle_headercontextitem_filetype ())); | 429 this, SLOT (toggle_headercontextitem_filetype ())); |
415 menu.addAction (&fileTypeAction); | 430 menu.addAction (&fileTypeAction); |
416 | 431 |
417 QAction dateModifiedAction (tr ("Date modified"), &menu); | 432 QAction dateModifiedAction (tr ("Date modified"), &menu); |
418 dateModifiedAction.setCheckable (true); | 433 dateModifiedAction.setCheckable (true); |
419 dateModifiedAction.setChecked( | 434 dateModifiedAction.setChecked( |
420 settings->value ("filesdockwidget/showLastModified",false).toBool ()); | 435 settings->value ("filesdockwidget/showLastModified",false).toBool ()); |
421 connect (&dateModifiedAction, SIGNAL(triggered ()), | 436 connect (&dateModifiedAction, SIGNAL(triggered ()), |
422 this, SLOT (toggle_headercontextitem_datemodified ())); | 437 this, SLOT (toggle_headercontextitem_datemodified ())); |
423 menu.addAction (&dateModifiedAction); | 438 menu.addAction (&dateModifiedAction); |
424 | 439 |
425 QAction showHiddenAction (tr ("Show hidden"), &menu); | 440 QAction showHiddenAction (tr ("Show hidden"), &menu); |
426 showHiddenAction.setCheckable (true); | 441 showHiddenAction.setCheckable (true); |
427 showHiddenAction.setChecked ( | 442 showHiddenAction.setChecked ( |
428 settings->value ("filesdockwidget/showHiddenFiles",false).toBool ()); | 443 settings->value ("filesdockwidget/showHiddenFiles",false).toBool ()); |
429 connect (&showHiddenAction, SIGNAL (triggered ()), | 444 connect (&showHiddenAction, SIGNAL (triggered ()), |
430 this, SLOT (toggle_headercontextitem_showhidden ())); | 445 this, SLOT (toggle_headercontextitem_showhidden ())); |
431 menu.addAction (&showHiddenAction); | 446 menu.addAction (&showHiddenAction); |
432 | 447 |
433 menu.exec (_file_tree_view->mapToGlobal (mpos)); | 448 menu.exec (_file_tree_view->mapToGlobal (mpos)); |
723 _navigation_tool_bar->setIconSize (QSize (icon_size,icon_size)); | 738 _navigation_tool_bar->setIconSize (QSize (icon_size,icon_size)); |
724 | 739 |
725 // file names are always shown, other columns can be hidden by settings | 740 // file names are always shown, other columns can be hidden by settings |
726 _file_tree_view->setColumnHidden (0, false); | 741 _file_tree_view->setColumnHidden (0, false); |
727 _file_tree_view->setColumnHidden (1, | 742 _file_tree_view->setColumnHidden (1, |
728 !settings->value ("filesdockwidget/showFileSize",false).toBool ()); | 743 ! settings->value ("filesdockwidget/showFileSize",false).toBool ()); |
729 _file_tree_view->setColumnHidden (2, | 744 _file_tree_view->setColumnHidden (2, |
730 !settings->value ("filesdockwidget/showFileType",false).toBool ()); | 745 ! settings->value ("filesdockwidget/showFileType",false).toBool ()); |
731 _file_tree_view->setColumnHidden (3, | 746 _file_tree_view->setColumnHidden (3, |
732 !settings->value ("filesdockwidget/showLastModified",false).toBool ()); | 747 ! settings->value ("filesdockwidget/showLastModified",false).toBool ()); |
733 _file_tree_view->setAlternatingRowColors ( | 748 _file_tree_view->setAlternatingRowColors ( |
734 settings->value ("filesdockwidget/useAlternatingRowColors",true).toBool ()); | 749 settings->value ("filesdockwidget/useAlternatingRowColors",true).toBool ()); |
735 if (settings->value ("filesdockwidget/showHiddenFiles",false).toBool ()) | 750 if (settings->value ("filesdockwidget/showHiddenFiles",false).toBool ()) |
736 { | 751 { |
737 // TODO: React on option for hidden files. | 752 _file_system_model->setFilter (QDir::NoDotAndDotDot | QDir::AllEntries |
738 } | 753 | QDir::Hidden); |
754 } | |
755 else | |
756 { | |
757 _file_system_model->setFilter (QDir::NoDotAndDotDot | QDir::AllEntries); | |
758 } | |
759 _file_tree_view->setModel (_file_system_model); | |
760 | |
739 // enable the buttons to sync octave/browser dir | 761 // enable the buttons to sync octave/browser dir |
740 // only if this is not done by default | 762 // only if this is not done by default |
741 _sync_octave_dir | 763 _sync_octave_dir |
742 = settings->value ("filesdockwidget/sync_octave_directory",false).toBool (); | 764 = settings->value ("filesdockwidget/sync_octave_directory",false).toBool (); |
743 _sync_octave_directory_action->setEnabled (!_sync_octave_dir); | 765 _sync_octave_directory_action->setEnabled (!_sync_octave_dir); |