From: Frank Reininghaus Date: Wed, 31 Oct 2012 23:58:32 +0000 (+0100) Subject: Add an "Icon Size" submenu to the context menu of the Places Panel X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/6f8060fc6d9f31da42ca7e62606becf9c4006f57 Add an "Icon Size" submenu to the context menu of the Places Panel FEATURE: 307475 FIXED-IN: 4.10.0 CCBUG: 301959 --- diff --git a/src/panels/places/placespanel.cpp b/src/panels/places/placespanel.cpp index 3c7f2bb9b..bffe325cf 100644 --- a/src/panels/places/placespanel.cpp +++ b/src/panels/places/placespanel.cpp @@ -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()); - view->setGroupHeaderCreator(new KItemListGroupHeaderCreator()); + m_view = new PlacesView(); + m_view->setWidgetCreator(new KItemListWidgetCreator()); + m_view->setGroupHeaderCreator(new KItemListGroupHeaderCreator()); - 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 PairQStringInt; + QList 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 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)); } } diff --git a/src/panels/places/placespanel.h b/src/panels/places/placespanel.h index 7951cdd9c..16112e8b2 100644 --- a/src/panels/places/placespanel.h +++ b/src/panels/places/placespanel.h @@ -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; diff --git a/src/panels/places/placesview.cpp b/src/panels/places/placesview.cpp index dce5083d7..a298a5250 100644 --- a/src/panels/places/placesview.cpp +++ b/src/panels/places/placesview.cpp @@ -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" diff --git a/src/panels/places/placesview.h b/src/panels/places/placesview.h index 87eb3a50b..19c99c39b 100644 --- a/src/panels/places/placesview.h +++ b/src/panels/places/placesview.h @@ -33,6 +33,9 @@ class PlacesView : public KStandardItemListView public: explicit PlacesView(QGraphicsWidget* parent = 0); + + void setIconSize(int size); + int iconSize() const; }; #endif