Mercurial > hg > octave-nkf
diff libgui/src/files-dock-widget.cc @ 17960:225c7be94c5f
Added a context menu changing the visible columns in the file browser
* files-dock-widget.cc (constructor): add a context to the header;
(toggle_headercontextitem_filesize, toggle_headercontextitem_filetype,
toggle_headercontextitem_datemodified, toggle_headercontextitem_showhidden):
new functions toggling the related entry in the settings file and updating
the visibility of the columns
(headercontextmenu_requested): new function creating the header context menu;
* files-dock-widget.h: new functions toggle_headercontextitem_filesize,
toggle_headercontextitem_filetype, toggle_headercontextitem_datemodified,
toggle_headercontextitem_showhidden, and headercontextmenu_requested
author | John Swensen <jpswensen@gmail.com> |
---|---|
date | Mon, 18 Nov 2013 14:19:49 -0500 |
parents | 752f6b358754 |
children | f6e1be4ad923 |
line wrap: on
line diff
--- a/libgui/src/files-dock-widget.cc +++ b/libgui/src/files-dock-widget.cc @@ -195,6 +195,11 @@ SIGNAL (customContextMenuRequested (const QPoint &)), this, SLOT (contextmenu_requested (const QPoint &))); + _file_tree_view->header()->setContextMenuPolicy (Qt::CustomContextMenu); + connect (_file_tree_view->header(), + SIGNAL (customContextMenuRequested (const QPoint &)), + this, SLOT (headercontextmenu_requested (const QPoint &))); + // Layout the widgets vertically with the toolbar on top QVBoxLayout *vbox_layout = new QVBoxLayout (); vbox_layout->setSpacing (0); @@ -350,6 +355,84 @@ QDesktopServices::openUrl (QUrl::fromLocalFile (file)); } +void files_dock_widget::toggle_headercontextitem_filesize () +{ + QSettings *settings = resource_manager::get_settings (); + settings->setValue ("filesdockwidget/showFileSize", + !settings->value ("filesdockwidget/showFileSize",false).toBool ()); + settings->sync (); + this->notice_settings (settings); +} + +void files_dock_widget::toggle_headercontextitem_filetype () +{ + QSettings *settings = resource_manager::get_settings (); + settings->setValue ("filesdockwidget/showFileType", + !settings->value ("filesdockwidget/showFileType",false).toBool ()); + settings->sync (); + this->notice_settings (settings); +} + +void files_dock_widget::toggle_headercontextitem_datemodified () +{ + QSettings *settings = resource_manager::get_settings (); + settings->setValue ("filesdockwidget/showLastModified", + !settings->value ("filesdockwidget/showLastModified",false).toBool ()); + settings->sync (); + this->notice_settings (settings); +} + +void files_dock_widget::toggle_headercontextitem_showhidden () +{ + QSettings *settings = resource_manager::get_settings (); + settings->setValue ("filesdockwidget/showHiddenFiles", + !settings->value ("filesdockwidget/showHiddenFiles",false).toBool ()); + settings->sync (); + this->notice_settings (settings); +} + +void +files_dock_widget::headercontextmenu_requested (const QPoint& mpos) +{ + QMenu menu (this); + + QSettings *settings = resource_manager::get_settings (); + + QAction fileSizeAction (tr ("File size"), &menu); + fileSizeAction.setCheckable (true); + fileSizeAction.setChecked ( + settings->value ("filesdockwidget/showFileSize",false).toBool ()); + connect (&fileSizeAction, SIGNAL(triggered ()), + this, SLOT (toggle_headercontextitem_filesize ())); + menu.addAction (&fileSizeAction); + + QAction fileTypeAction (tr ("File type"), &menu); + fileTypeAction.setCheckable (true); + fileTypeAction.setChecked ( + settings->value ("filesdockwidget/showFileType",false).toBool ()); + connect (&fileTypeAction, SIGNAL(triggered ()), + this, SLOT (toggle_headercontextitem_filetype ())); + menu.addAction (&fileTypeAction); + + QAction dateModifiedAction (tr ("Date modified"), &menu); + dateModifiedAction.setCheckable (true); + dateModifiedAction.setChecked( + settings->value ("filesdockwidget/showLastModified",false).toBool ()); + connect (&dateModifiedAction, SIGNAL(triggered ()), + this, SLOT (toggle_headercontextitem_datemodified ())); + menu.addAction (&dateModifiedAction); + + QAction showHiddenAction (tr ("Show hidden"), &menu); + showHiddenAction.setCheckable (true); + showHiddenAction.setChecked ( + settings->value ("filesdockwidget/showHiddenFiles",false).toBool ()); + connect (&showHiddenAction, SIGNAL (triggered ()), + this, SLOT (toggle_headercontextitem_showhidden ())); + menu.addAction (&showHiddenAction); + + menu.exec (_file_tree_view->mapToGlobal (mpos)); +} + void files_dock_widget::contextmenu_requested (const QPoint& mpos) {