Add an "Icon Size" submenu to the context menu of the Places Panel

FEATURE: 307475
FIXED-IN: 4.10.0
CCBUG: 301959
This commit is contained in:
Frank Reininghaus 2012-11-01 00:58:32 +01:00
parent 1353c92cce
commit 6f8060fc6d
4 changed files with 56 additions and 5 deletions

View file

@ -104,11 +104,11 @@ void PlacesPanel::showEvent(QShowEvent* event)
connect(m_model, SIGNAL(errorMessage(QString)), connect(m_model, SIGNAL(errorMessage(QString)),
this, SIGNAL(errorMessage(QString))); this, SIGNAL(errorMessage(QString)));
PlacesView* view = new PlacesView(); m_view = new PlacesView();
view->setWidgetCreator(new KItemListWidgetCreator<PlacesItemListWidget>()); m_view->setWidgetCreator(new KItemListWidgetCreator<PlacesItemListWidget>());
view->setGroupHeaderCreator(new KItemListGroupHeaderCreator<PlacesItemListGroupHeader>()); 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->setSelectionBehavior(KItemListController::SingleSelection);
m_controller->setSingleClickActivation(true); m_controller->setSingleClickActivation(true);
@ -216,6 +216,33 @@ void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos)
showAllAction->setChecked(m_model->hiddenItemsShown()); 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(); menu.addSeparator();
foreach (QAction* action, customContextMenuActions()) { foreach (QAction* action, customContextMenuActions()) {
menu.addAction(action); menu.addAction(action);
@ -242,6 +269,8 @@ void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos)
m_model->requestTeardown(index); m_model->requestTeardown(index);
} else if (action == ejectAction) { } else if (action == ejectAction) {
m_model->requestEject(index); m_model->requestEject(index);
} else if (iconSizeActionMap.contains(action)) {
m_view->setIconSize(iconSizeActionMap.value(action));
} }
} }

View file

@ -28,6 +28,7 @@ class KItemListController;
class PlacesItemEditDialog; class PlacesItemEditDialog;
class PlacesItem; class PlacesItem;
class PlacesItemModel; class PlacesItemModel;
class PlacesView;
class QGraphicsSceneDragDropEvent; class QGraphicsSceneDragDropEvent;
/** /**
@ -81,6 +82,7 @@ private:
private: private:
KItemListController* m_controller; KItemListController* m_controller;
PlacesItemModel* m_model; PlacesItemModel* m_model;
PlacesView* m_view;
KUrl m_storageSetupFailedUrl; KUrl m_storageSetupFailedUrl;
Qt::MouseButton m_triggerStorageSetupButton; Qt::MouseButton m_triggerStorageSetupButton;

View file

@ -26,10 +26,27 @@ PlacesView::PlacesView(QGraphicsWidget* parent) :
{ {
const int iconSize = PlacesPanelSettings::iconSize(); const int iconSize = PlacesPanelSettings::iconSize();
if (iconSize >= 0) { 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(); KItemListStyleOption option = styleOption();
option.iconSize = iconSize; option.iconSize = size;
setStyleOption(option); setStyleOption(option);
} }
} }
int PlacesView::iconSize() const
{
const KItemListStyleOption option = styleOption();
return option.iconSize;
}
#include "placesview.moc" #include "placesview.moc"

View file

@ -33,6 +33,9 @@ class PlacesView : public KStandardItemListView
public: public:
explicit PlacesView(QGraphicsWidget* parent = 0); explicit PlacesView(QGraphicsWidget* parent = 0);
void setIconSize(int size);
int iconSize() const;
}; };
#endif #endif