]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Allow to enable/disable the "Expandable Folders" setting of the details-view by the...
authorPeter Penz <peter.penz19@gmail.com>
Sat, 31 Jan 2009 11:36:44 +0000 (11:36 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Sat, 31 Jan 2009 11:36:44 +0000 (11:36 +0000)
CCMAIL: faure@kde.org

svn path=/trunk/KDE/kdebase/apps/; revision=919035

src/dolphindetailsview.cpp
src/dolphindetailsview.h

index 21737c8400e001605b3da5f4ae1307f0b8186579..2b8583e139ca4737313bdf03eab86b1690864332 100644 (file)
@@ -88,7 +88,7 @@ DolphinDetailsView::DolphinDetailsView(QWidget* parent, DolphinController* contr
             this, SLOT(synchronizeSortingState(int)));
     headerView->setContextMenuPolicy(Qt::CustomContextMenu);
     connect(headerView, SIGNAL(customContextMenuRequested(const QPoint&)),
-            this, SLOT(configureColumns(const QPoint&)));
+            this, SLOT(configureSettings(const QPoint&)));
     connect(headerView, SIGNAL(sectionResized(int, int, int)),
             this, SLOT(slotHeaderSectionResized(int, int, int)));
     connect(headerView, SIGNAL(sectionHandleDoubleClicked(int)),
@@ -555,11 +555,12 @@ void DolphinDetailsView::slotShowPreviewChanged()
     updateDecorationSize(view->showPreview());
 }
 
-void DolphinDetailsView::configureColumns(const QPoint& pos)
+void DolphinDetailsView::configureSettings(const QPoint& pos)
 {
     KMenu popup(this);
     popup.addTitle(i18nc("@title:menu", "Columns"));
 
+    // add checkbox items for each column
     QHeaderView* headerView = header();
     for (int i = DolphinModel::Size; i <= DolphinModel::Type; ++i) {
         const int logicalIndex = headerView->logicalIndex(i);
@@ -569,9 +570,29 @@ void DolphinDetailsView::configureColumns(const QPoint& pos)
         action->setChecked(!headerView->isSectionHidden(logicalIndex));
         action->setData(i);
     }
+    popup.addSeparator();
+
+    // add a checkbox item for the "Expandable Folders" setting
+    DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings();
+    QAction* expandableFoldersAction = popup.addAction(i18nc("@option:check", "Expandable Folders"));
+    expandableFoldersAction->setCheckable(true);
+    expandableFoldersAction->setChecked(settings->expandableFolders());
 
     QAction* activatedAction = popup.exec(header()->mapToGlobal(pos));
-    if (activatedAction != 0) {
+    if (activatedAction == expandableFoldersAction) {
+        const bool expand = expandableFoldersAction->isChecked();
+        if (!expand) {
+            // collapse all expanded folders, as QTreeView::setItemsExpandable(false)
+            // does not do this task
+            const int rowCount = model()->rowCount();
+            for (int row = 0; row < rowCount; ++row) {
+                setExpanded(model()->index(row, 0), false);
+            }
+        }
+        settings->setExpandableFolders(expand);
+        setRootIsDecorated(expand);
+        setItemsExpandable(expand);
+    } else if (activatedAction != 0) {
         const bool show = activatedAction->isChecked();
         const int columnIndex = activatedAction->data().toInt();
 
index 7707c077319394d801c0788b457c88ed4e51c70c..c81884ae9ad10aeebd49d10ac8e1d7f0a05ea66e 100644 (file)
@@ -117,9 +117,10 @@ private slots:
 
     /**
      * Opens a context menu at the position \a pos and allows to
-     * configure the visibility of the header columns.
+     * configure the visibility of the header columns and whether
+     * expandable folders should be shown.
      */
-    void configureColumns(const QPoint& pos);
+    void configureSettings(const QPoint& pos);
 
     void updateColumnVisibility();