changeset 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 1329866151be
children 774409d18794
files libgui/src/files-dock-widget.cc libgui/src/files-dock-widget.h
diffstat 2 files changed, 90 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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)
 {
--- 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);