- KMenu menu(this);
-
- QAction* addAction = menu.addAction(KIcon("document-new"), i18nc("@item:inmenu", "Add Entry..."));
-
- QAction* showAllAction = 0;
- if (m_model->hiddenCount() > 0) {
- showAllAction = menu.addAction(i18nc("@item:inmenu", "Show All Entries"));
- showAllAction->setCheckable(true);
- showAllAction->setChecked(m_model->hiddenItemsShown());
+ QMenu menu(this);
+
+ QAction* addAction = menu.addAction(QIcon::fromTheme(QStringLiteral("document-new")), i18nc("@item:inmenu", "Add Entry..."));
+
+ QAction* showAllAction = menu.addAction(i18nc("@item:inmenu", "Show Hidden Places"));
+ showAllAction->setCheckable(true);
+ showAllAction->setChecked(m_model->hiddenItemsShown());
+ showAllAction->setIcon(QIcon::fromTheme(m_model->hiddenItemsShown() ? QStringLiteral("view-visible") : QStringLiteral("view-hidden")));
+ showAllAction->setEnabled(m_model->hiddenCount());
+
+ buildGroupContextMenu(&menu, m_controller->indexCloseToMousePressedPosition());
+
+ QMenu* iconSizeSubMenu = new QMenu(i18nc("@item:inmenu", "Icon Size"), &menu);
+
+ struct IconSizeInfo
+ {
+ int size;
+ const char* context;
+ const char* text;
+ };
+
+ const int iconSizeCount = 4;
+ static const IconSizeInfo iconSizes[iconSizeCount] = {
+ {KIconLoader::SizeSmall, I18NC_NOOP("Small icon size", "Small (%1x%2)")},
+ {KIconLoader::SizeSmallMedium, I18NC_NOOP("Medium icon size", "Medium (%1x%2)")},
+ {KIconLoader::SizeMedium, I18NC_NOOP("Large icon size", "Large (%1x%2)")},
+ {KIconLoader::SizeLarge, I18NC_NOOP("Huge icon size", "Huge (%1x%2)")}
+ };
+
+ QHash<QAction*, int> iconSizeActionMap;
+ QActionGroup* iconSizeGroup = new QActionGroup(iconSizeSubMenu);
+
+ for (int i = 0; i < iconSizeCount; ++i) {
+ const int size = iconSizes[i].size;
+ const QString text = i18nc(iconSizes[i].context, iconSizes[i].text,
+ size, size);
+
+ QAction* action = iconSizeSubMenu->addAction(text);
+ iconSizeActionMap.insert(action, size);
+ action->setActionGroup(iconSizeGroup);
+ action->setCheckable(true);
+ action->setChecked(m_view->iconSize() == size);