diff --git a/src/gui/partitionmanagerwidget.cpp b/src/gui/partitionmanagerwidget.cpp index f0b6906..a82b496 100644 --- a/src/gui/partitionmanagerwidget.cpp +++ b/src/gui/partitionmanagerwidget.cpp @@ -24,6 +24,7 @@ #include "gui/applyprogressdialog.h" #include "gui/insertdialog.h" #include "gui/editmountpointdialog.h" +#include "util/guihelpers.h" #include #include @@ -51,8 +52,6 @@ #include #include -#include "util/guihelpers.h" - #include #include #include diff --git a/src/gui/smartdialogwidget.cpp b/src/gui/smartdialogwidget.cpp index bb973a7..8b8ff02 100644 --- a/src/gui/smartdialogwidget.cpp +++ b/src/gui/smartdialogwidget.cpp @@ -17,7 +17,7 @@ #include "gui/smartdialogwidget.h" -#include +#include "util/guihelpers.h" #include diff --git a/src/gui/treelog.cpp b/src/gui/treelog.cpp index 765d5d6..d1bb792 100644 --- a/src/gui/treelog.cpp +++ b/src/gui/treelog.cpp @@ -18,10 +18,10 @@ #include "gui/treelog.h" #include "gui/partitionmanagerwidget.h" +#include "util/guihelpers.h" #include "config.h" #include -#include #include #include diff --git a/src/util/guihelpers.cpp b/src/util/guihelpers.cpp index 53e224a..5476d0e 100644 --- a/src/util/guihelpers.cpp +++ b/src/util/guihelpers.cpp @@ -21,14 +21,19 @@ #include +#include #include #include #include +#include +#include #include #include #include +#include #include #include +#include #include #include @@ -167,6 +172,33 @@ Capacity::Unit preferredUnit() return static_cast(Config::preferredUnit()); } +void showColumnsContextMenu(const QPoint& p, QTreeWidget& tree) +{ + QMenu headerMenu(xi18nc("@title:menu", "Columns")); + + QHeaderView* header = tree.header(); + + for (qint32 i = 0; i < tree.model()->columnCount(); i++) { + const int idx = header->logicalIndex(i); + const QString text = tree.model()->headerData(idx, Qt::Horizontal).toString(); + + QAction* action = headerMenu.addAction(text); + action->setCheckable(true); + action->setChecked(!header->isSectionHidden(idx)); + action->setData(idx); + action->setEnabled(idx > 0); + } + + QAction* action = headerMenu.exec(tree.header()->mapToGlobal(p)); + + if (action != nullptr) { + const bool hidden = !action->isChecked(); + tree.setColumnHidden(action->data().toInt(), hidden); + if (!hidden) + tree.resizeColumnToContents(action->data().toInt()); + } +} + namespace GuiHelpers { diff --git a/src/util/guihelpers.h b/src/util/guihelpers.h index 462cea9..3c857d8 100644 --- a/src/util/guihelpers.h +++ b/src/util/guihelpers.h @@ -23,13 +23,16 @@ #include #include -class QString; class QIcon; +class QPoint; +class QString; +class QTreeWidget; bool checkPermissions(); bool loadBackend(); QIcon createFileSystemColor(FileSystem::Type type, quint32 size); Capacity::Unit preferredUnit(); +void showColumnsContextMenu(const QPoint& p, QTreeWidget& tree); namespace GuiHelpers { FileSystem::Type defaultFileSystem();