# HG changeset patch # User John Swensen # Date 1384802389 18000 # Node ID 225c7be94c5fce9247dec9ba79b471718008fd70 # Parent 1329866151be88b670f6759b8ba52a4d3e0dabab 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 diff -r 1329866151be -r 225c7be94c5f libgui/src/files-dock-widget.cc --- a/libgui/src/files-dock-widget.cc Tue Nov 19 14:25:32 2013 -0500 +++ b/libgui/src/files-dock-widget.cc Mon Nov 18 14:19:49 2013 -0500 @@ -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) { diff -r 1329866151be -r 225c7be94c5f libgui/src/files-dock-widget.h --- a/libgui/src/files-dock-widget.h Tue Nov 19 14:25:32 2013 -0500 +++ b/libgui/src/files-dock-widget.h Mon Nov 18 14:19:49 2013 -0500 @@ -83,6 +83,13 @@ /** context menu wanted */ void contextmenu_requested (const QPoint& pos); + void toggle_headercontextitem_filesize (); + void toggle_headercontextitem_filetype (); + void toggle_headercontextitem_datemodified (); + void toggle_headercontextitem_showhidden (); + + void headercontextmenu_requested (const QPoint& pos); + /* context menu actions */ void contextmenu_open (bool); void contextmenu_open_in_app (bool);