]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/viewpropertiesdialog.cpp
Forwardport 773570:
[dolphin.git] / src / viewpropertiesdialog.cpp
index 5c9f7c3e10e08a91fc740c228bb0819a65b92580..844a2ecf9e355734017dd22c395a52e811e40789 100644 (file)
@@ -25,6 +25,7 @@
 #include "dolphinsettings.h"
 #include "dolphinsortfilterproxymodel.h"
 #include "dolphin_generalsettings.h"
+#include "dolphin_iconsmodesettings.h"
 #include "viewproperties.h"
 #include "viewpropsprogressinfo.h"
 
@@ -88,14 +89,16 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) :
         propsBox = new QGroupBox(i18nc("@title:group", "Properties"), main);
     }
 
-    QLabel* viewModeLabel = new QLabel(i18nc("@label:listbox", "View mode:"), propsBox);
-    m_viewMode = new QComboBox(propsBox);
-    m_viewMode->addItem(KIcon("fileview-icon"), i18nc("@item:inlistbox", "Icons"));
-    m_viewMode->addItem(KIcon("fileview-detailed"), i18nc("@item:inlistbox", "Details"));
-    m_viewMode->addItem(KIcon("fileview-column"), i18nc("@item:inlistbox", "Column"));
+    QWidget* propsGrid = new QWidget();
 
-    QLabel* sortingLabel = new QLabel(i18nc("@label:listbox", "Sorting:"), propsBox);
-    QWidget* sortingBox = new QWidget(propsBox);
+    QLabel* viewModeLabel = new QLabel(i18nc("@label:listbox", "View mode:"), propsGrid);
+    m_viewMode = new QComboBox(propsGrid);
+    m_viewMode->addItem(KIcon("view-list-icons"), i18nc("@item:inlistbox", "Icons"));
+    m_viewMode->addItem(KIcon("view-list-details"), i18nc("@item:inlistbox", "Details"));
+    m_viewMode->addItem(KIcon("view-file-columns"), i18nc("@item:inlistbox", "Column"));
+
+    QLabel* sortingLabel = new QLabel(i18nc("@label:listbox", "Sorting:"), propsGrid);
+    QWidget* sortingBox = new QWidget(propsGrid);
 
     m_sortOrder = new QComboBox(sortingBox);
     m_sortOrder->addItem(i18nc("@item:inlistbox", "Ascending"));
@@ -110,11 +113,19 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) :
     m_sorting->addItem(i18nc("@item:inlistbox Sort", "By Group"));
     m_sorting->addItem(i18nc("@item:inlistbox Sort", "By Type"));
 #ifdef HAVE_NEPOMUK
-    if (!Nepomuk::ResourceManager::instance()->init()) {
-        m_sorting->addItem(i18nc("@item:inlistbox Sort", "By Rating"));
-        m_sorting->addItem(i18nc("@item:inlistbox Sort", "By Tags"));
-    }
+    // TODO: Hided "sort by rating" and "sort by tags" as without caching the performance
+    // is too slow currently (Nepomuk will support caching in future releases).
+    //
+    // if (!Nepomuk::ResourceManager::instance()->init()) {
+    //    m_sorting->addItem(i18nc("@item:inlistbox Sort", "By Rating"));
+    //    m_sorting->addItem(i18nc("@item:inlistbox Sort", "By Tags"));
+    // }
 #endif
+    m_showPreview = new QCheckBox(i18nc("@option:check", "Show preview"), propsBox);
+    m_showInGroups = new QCheckBox(i18nc("@option:check", "Show in groups"), propsBox);
+    m_showHiddenFiles = new QCheckBox(i18nc("@option:check", "Show hidden files"), propsBox);
+
+    m_additionalInfo = new QPushButton(i18nc("@action:button", "Additional Information"), propsBox);
 
     QHBoxLayout* sortingLayout = new QHBoxLayout();
     sortingLayout->setMargin(0);
@@ -122,23 +133,18 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) :
     sortingLayout->addWidget(m_sorting);
     sortingBox->setLayout(sortingLayout);
 
-    m_showPreview = new QCheckBox(i18nc("@option:check", "Show preview"), propsBox);
-    m_showInGroups = new QCheckBox(i18nc("@option:check", "Show in Groups"), propsBox);
-    m_showHiddenFiles = new QCheckBox(i18nc("@option:check", "Show hidden files"), propsBox);
-
-    m_additionalInfo = new QPushButton(i18nc("@action:button", "Additional Information"), propsBox);
-    connect(m_additionalInfo, SIGNAL(clicked()),
-            this, SLOT(configureAdditionalInfo()));
+    QGridLayout* propsGridLayout = new QGridLayout(propsGrid);
+    propsGridLayout->addWidget(viewModeLabel, 0, 0);
+    propsGridLayout->addWidget(m_viewMode, 0, 1);
+    propsGridLayout->addWidget(sortingLabel, 1, 0);
+    propsGridLayout->addWidget(sortingBox, 1, 1);
 
-    QGridLayout* propsBoxLayout = new QGridLayout(propsBox);
-    propsBoxLayout->addWidget(viewModeLabel, 0, 0);
-    propsBoxLayout->addWidget(m_viewMode, 0, 1);
-    propsBoxLayout->addWidget(sortingLabel, 1, 0);
-    propsBoxLayout->addWidget(sortingBox, 1, 1);
-    propsBoxLayout->addWidget(m_showPreview, 2, 0);
-    propsBoxLayout->addWidget(m_showInGroups, 3, 0);
-    propsBoxLayout->addWidget(m_showHiddenFiles, 4, 0);
-    propsBoxLayout->addWidget(m_additionalInfo, 5, 0);
+    QVBoxLayout* propsBoxLayout = new QVBoxLayout(propsBox);
+    propsBoxLayout->addWidget(propsGrid);
+    propsBoxLayout->addWidget(m_showPreview);
+    propsBoxLayout->addWidget(m_showInGroups);
+    propsBoxLayout->addWidget(m_showHiddenFiles);
+    propsBoxLayout->addWidget(m_additionalInfo);
 
     topLayout->addWidget(propsBox);
 
@@ -148,8 +154,8 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) :
             this, SLOT(slotSortingChanged(int)));
     connect(m_sortOrder, SIGNAL(activated(int)),
             this, SLOT(slotSortOrderChanged(int)));
-    connect(m_additionalInfo, SIGNAL(activated(int)),
-            this, SLOT(slotAdditionalInfoChanged(int)));
+    connect(m_additionalInfo, SIGNAL(clicked()),
+            this, SLOT(configureAdditionalInfo()));
     connect(m_showPreview, SIGNAL(clicked()),
             this, SLOT(slotShowPreviewChanged()));
     connect(m_showInGroups, SIGNAL(clicked()),
@@ -282,7 +288,19 @@ void ViewPropertiesDialog::markAsDirty()
 
 void ViewPropertiesDialog::configureAdditionalInfo()
 {
-    const KFileItemDelegate::InformationList info = m_viewProps->additionalInfo();
+    KFileItemDelegate::InformationList info = m_viewProps->additionalInfo();
+    const bool useDefaultInfo = (m_viewProps->viewMode() == DolphinView::DetailsView) &&
+                                (info.isEmpty() || info.contains(KFileItemDelegate::NoInformation));
+    if (useDefaultInfo) {
+        // Using the details view without any additional information (-> additional column)
+        // makes no sense and leads to a usability problem as no viewport area is available
+        // anymore. Hence as fallback provide at least a size and date column.
+        info.clear();
+        info.append(KFileItemDelegate::Size);
+        info.append(KFileItemDelegate::ModificationTime);
+        m_viewProps->setAdditionalInfo(info);
+    }
+
     AdditionalInfoDialog dialog(this, info);
     if (dialog.exec() == QDialog::Accepted) {
         m_viewProps->setAdditionalInfo(dialog.additionalInfo());
@@ -365,7 +383,9 @@ void ViewPropertiesDialog::loadSettings()
     m_sortOrder->setCurrentIndex(sortOrderIndex);
     m_sorting->setCurrentIndex(m_viewProps->sorting());
 
-    m_additionalInfo->setEnabled(index != DolphinView::ColumnView);
+    const bool enabled = (index == DolphinView::DetailsView) ||
+                         (index == DolphinView::IconsView);
+    m_additionalInfo->setEnabled(enabled);
 
     // load show preview, show in groups and show hidden files settings
     m_showPreview->setChecked(m_viewProps->showPreview());