]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Add an "Icon Size" submenu to the context menu of the Places Panel
authorFrank Reininghaus <frank78ac@googlemail.com>
Wed, 31 Oct 2012 23:58:32 +0000 (00:58 +0100)
committerFrank Reininghaus <frank78ac@googlemail.com>
Wed, 31 Oct 2012 23:58:32 +0000 (00:58 +0100)
FEATURE: 307475
FIXED-IN: 4.10.0
CCBUG: 301959

src/panels/places/placespanel.cpp
src/panels/places/placespanel.h
src/panels/places/placesview.cpp
src/panels/places/placesview.h

index 3c7f2bb9baf22a4bba776a01abcfc4cd324c90c1..bffe325cfc7b768117ea1e6dfa1823cfe0af894b 100644 (file)
@@ -104,11 +104,11 @@ void PlacesPanel::showEvent(QShowEvent* event)
         connect(m_model, SIGNAL(errorMessage(QString)),
                 this, SIGNAL(errorMessage(QString)));
 
-        PlacesView* view = new PlacesView();
-        view->setWidgetCreator(new KItemListWidgetCreator<PlacesItemListWidget>());
-        view->setGroupHeaderCreator(new KItemListGroupHeaderCreator<PlacesItemListGroupHeader>());
+        m_view = new PlacesView();
+        m_view->setWidgetCreator(new KItemListWidgetCreator<PlacesItemListWidget>());
+        m_view->setGroupHeaderCreator(new KItemListGroupHeaderCreator<PlacesItemListGroupHeader>());
 
-        m_controller = new KItemListController(m_model, view, this);
+        m_controller = new KItemListController(m_model, m_view, this);
         m_controller->setSelectionBehavior(KItemListController::SingleSelection);
         m_controller->setSingleClickActivation(true);
 
@@ -216,6 +216,33 @@ void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos)
         showAllAction->setChecked(m_model->hiddenItemsShown());
     }
 
+    menu.addSeparator();
+    KMenu* iconSizeSubMenu = new KMenu(i18nc("@item:inmenu", "Icon Size"), &menu);
+
+    typedef QPair<QString, int> PairQStringInt;
+    QList<PairQStringInt> iconSizes;
+
+    iconSizes << qMakePair(i18nc("Small icon size", "Small (%1x%2)", 16, 16), 16);
+    iconSizes << qMakePair(i18nc("Medium icon size", "Medium (%1x%2)", 22, 22), 22);
+    iconSizes << qMakePair(i18nc("Large icon size", "Large (%1x%2)", 32, 32), 32);
+    iconSizes << qMakePair(i18nc("Huge icon size", "Huge (%1x%2)", 48, 48), 48);
+
+    QMap<QAction*, int> iconSizeActionMap;
+    QActionGroup* iconSizeGroup = new QActionGroup(iconSizeSubMenu);
+
+    foreach (const PairQStringInt& pair, iconSizes) {
+        const QString& text = pair.first;
+        const int size = pair.second;
+
+        QAction* action = iconSizeSubMenu->addAction(text);
+        iconSizeActionMap.insert(action, size);
+        action->setActionGroup(iconSizeGroup);
+        action->setCheckable(true);
+        action->setChecked(m_view->iconSize() == size);
+    }
+
+    menu.addMenu(iconSizeSubMenu);
+
     menu.addSeparator();
     foreach (QAction* action, customContextMenuActions()) {
         menu.addAction(action);
@@ -242,6 +269,8 @@ void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos)
             m_model->requestTeardown(index);
         } else if (action == ejectAction) {
             m_model->requestEject(index);
+        } else if (iconSizeActionMap.contains(action)) {
+            m_view->setIconSize(iconSizeActionMap.value(action));
         }
     }
 
index 7951cdd9c7cdcd2d56535a8fdcc394ea5cb6cf75..16112e8b24f333be0c812d9541376b28b20c15e6 100644 (file)
@@ -28,6 +28,7 @@ class KItemListController;
 class PlacesItemEditDialog;
 class PlacesItem;
 class PlacesItemModel;
+class PlacesView;
 class QGraphicsSceneDragDropEvent;
 
 /**
@@ -81,6 +82,7 @@ private:
 private:
     KItemListController* m_controller;
     PlacesItemModel* m_model;
+    PlacesView* m_view;
 
     KUrl m_storageSetupFailedUrl;
     Qt::MouseButton m_triggerStorageSetupButton;
index dce5083d7515dc7a1991e2afeb786d6752faf8bd..a298a525066cef7795a1c65e3c360501b998969e 100644 (file)
@@ -26,10 +26,27 @@ PlacesView::PlacesView(QGraphicsWidget* parent) :
 {
     const int iconSize = PlacesPanelSettings::iconSize();
     if (iconSize >= 0) {
+        setIconSize(iconSize);
+    }
+}
+
+void PlacesView::setIconSize(int size)
+{
+    if (size != iconSize()) {
+        PlacesPanelSettings* settings = PlacesPanelSettings::self();
+        settings->setIconSize(size);
+        settings->writeConfig();
+
         KItemListStyleOption option = styleOption();
-        option.iconSize = iconSize;
+        option.iconSize = size;
         setStyleOption(option);
     }
 }
 
+int PlacesView::iconSize() const
+{
+    const KItemListStyleOption option = styleOption();
+    return option.iconSize;
+}
+
 #include "placesview.moc"
index 87eb3a50be2311ce71993ea398680337decd27be..19c99c39bf1a16a55620510f2607d07f5ce03c4c 100644 (file)
@@ -33,6 +33,9 @@ class PlacesView : public KStandardItemListView
 
 public:
     explicit PlacesView(QGraphicsWidget* parent = 0);
+
+    void setIconSize(int size);
+    int iconSize() const;
 };
 
 #endif