for (int i = 0; i < list.count(); i++) {
item = list.at(i);
+ QMap<QString, QString> shortcutMap = item->getShortcutMap();
+ if (!shortcutMap.isEmpty()) {
+ QMap<QString, QString>::iterator iter;
+ for (iter = shortcutMap.begin(); iter != shortcutMap.end(); iter++) {
+ keyboardShortcut->setKeyboardShortcutContextMenu(item,
+ iter.key(), iter.value());
+ }
+ }
+
switch (item->getType()) {
case MenuItemType::separator:
createSeparator(menu);
default:
qWarning("unknown menu item type : %d", item->getType());
}
-
- QMap<QString, QString> shortcutMap = item->getShortcutMap();
- if (!shortcutMap.isEmpty()) {
- QMap<QString, QString>::iterator iter;
- for (iter = shortcutMap.begin(); iter != shortcutMap.end(); iter++) {
- keyboardShortcut->setKeyboardShortcutContextMenu(item,
- iter.key(), iter.value());
- }
- }
}
}
createItems(advancedMenu, ((AdvancedMenuItem *)item)->getMenuList());
}
+QString ContextMenu::getShortcutKeySeq(QString key)
+{
+ KeyboardShortcut *keyboardShortcut = parent->getKeyboardShortcut();
+ QMap<QString, QString> shortcutMap = keyboardShortcut->getPopupMenuShortcutMap();
+ QMap<QString, QString>::iterator iter;
+ QString keySequence;
+
+ if (!shortcutMap.isEmpty()) {
+ for (iter = shortcutMap.begin(); iter != shortcutMap.end(); iter++) {
+ if (iter.key().startsWith(key)) {
+ keySequence.append(iter.value());
+ break;
+ }
+ }
+ }
+
+ return keySequence;
+}
+
void ContextMenu::createInfoItem(QMenu *menu, MenuItem *item)
{
if (menu == NULL || item == NULL) {
QString menuName = item->getName();
actionDetailedInfo = addGeneralAction(menu, QIcon(QPixmap(":/icons/detailed_info.png")),
- menuName.isEmpty() ? vmName : menuName, SLOT(slotDetailedInfo()));
+ menuName.isEmpty() ? vmName : menuName, SLOT(slotDetailedInfo()),
+ getShortcutKeySeq(DETAILED_INFO_TITLE));
}
void ContextMenu::createOnTopItem(QMenu *menu, MenuItem *item)
QString menuName = item->getName();
actionTopMost = menu->addAction(menuName.isEmpty() ? "Always on Top" : menuName);
+ actionTopMost->setShortcut(getShortcutKeySeq(menuName));
actionTopMost->setCheckable(true);
connect(actionTopMost, SIGNAL(triggered(bool)), this, SLOT(slotTopMost(bool)));
}
QString menuName = item->getName();
switchMenu = menu->addMenu(
QIcon(QPixmap(":/icons/rotate.png")), menuName.isEmpty() ? "Switch" : menuName);
+ QAction *menuAction = switchMenu->menuAction();
+ menuAction->setShortcut(getShortcutKeySeq(menuName));
switchGroup = new QActionGroup(this);
switchMapper = new QSignalMapper(this);
connect(switchMapper, SIGNAL(mapped(int)), this, SLOT(slotSwitch(int)));
QString menuName = item->getName();
scaleMenu = menu->addMenu(
QIcon(QPixmap(":/icons/scale.png")), menuName.isEmpty() ? "Scale" : menuName);
+ QAction *menuAction = scaleMenu->menuAction();
+ menuAction->setShortcut(getShortcutKeySeq(menuName));
scaleGroup = new QActionGroup(this);
scaleMapper = new QSignalMapper(this);
connect(scaleMapper, SIGNAL(mapped(int)), this, SLOT(slotScale(int)));
if (conFormList.isEmpty() == false) {
QString menuName = item->getName();
controllerMenu = menu->addMenu(menuName.isEmpty() ? "Controller" : menuName);
+ QAction *menuAction = controllerMenu->menuAction();
+ menuAction->setShortcut(getShortcutKeySeq(menuName));
controllerGroup = new QActionGroup(this);
controllerMapper = new QSignalMapper(this);
connect(controllerMapper, SIGNAL(mapped(int)), this,
QString menuName = item->getName();
QMenu *keyboardMenu = menu->addMenu(QIcon(QPixmap(":/icons/host_keyboard.png")),
menuName.isEmpty() ? "Host keyboard" : menuName);
+ QAction *menuAction = keyboardMenu->menuAction();
+ menuAction->setShortcut(getShortcutKeySeq(menuName));
keyboardGroup = new QActionGroup(this);
QAction *action = keyboardMenu->addAction(KEYBOARD_ON);
QString menuName = item->getName();
actionShell = addGeneralAction(menu, QIcon(QPixmap(":/icons/shell.png")),
- menuName.isEmpty() ? "Shell" : menuName, SLOT(slotShell()));
+ menuName.isEmpty() ? "Shell" : menuName, SLOT(slotShell()),
+ getShortcutKeySeq(menuName));
}
void ContextMenu::createControlPanelItem(QMenu *menu, MenuItem *item)
QString menuName = item->getName();
actionControlPanel = addGeneralAction(menu, QIcon(QPixmap(":/icons/control_panel.png")),
- menuName.isEmpty() ? "Control Panel" : menuName, SLOT(slotControlPanel()));
+ menuName.isEmpty() ? "Control Panel" : menuName, SLOT(slotControlPanel()),
+ getShortcutKeySeq(menuName));
}
void ContextMenu::createScreenShotItem(QMenu *menu, MenuItem *item)
QString menuName = item->getName();
actionScreenShot = addGeneralAction(menu, QIcon(QPixmap(":/icons/screen_shot.png")),
- menuName.isEmpty() ? "Screen Shot" : menuName, SLOT(slotRequestScreenshot()));
+ menuName.isEmpty() ? "Screen Shot" : menuName, SLOT(slotRequestScreenshot()),
+ getShortcutKeySeq(menuName));
}
void ContextMenu::createAboutItem(QMenu *menu, MenuItem *item)
QString menuName = item->getName();
actionAbout = addGeneralAction(menu, QIcon(QPixmap(":/icons/about.png")),
- menuName.isEmpty() ? "About" : menuName, SLOT(slotAbout()));
+ menuName.isEmpty() ? "About" : menuName, SLOT(slotAbout()),
+ getShortcutKeySeq(menuName));
}
void ContextMenu::createForceCloseItem(QMenu *menu, MenuItem *item)
QString menuName = item->getName();
actionForceClose = addGeneralAction(menu, QIcon(QPixmap(":/icons/force_close.png")),
- menuName.isEmpty() ? "Force Close" : menuName, SLOT(slotForceClose()));
+ menuName.isEmpty() ? "Force Close" : menuName, SLOT(slotForceClose()),
+ getShortcutKeySeq(menuName));
}
void ContextMenu::createCloseItem(QMenu *menu, MenuItem *item)
QString menuName = item->getName();
actionClose = addGeneralAction(menu, QIcon(QPixmap(":/icons/close.png")),
- menuName.isEmpty() ? "Close" : menuName, SLOT(slotClose()));
+ menuName.isEmpty() ? "Close" : menuName, SLOT(slotClose()),
+ getShortcutKeySeq(menuName));
}
QAction *ContextMenu::addGeneralAction(QMenu *menu,
- const QIcon &icon, const QString &text, const char *slot)
+ const QIcon &icon, const QString &text, const char *slot, const QString &shortcut)
{
QAction *action = menu->addAction(text);
action->setIcon(icon);
+ action->setShortcut(shortcut);
connect(action, SIGNAL(triggered()), this, slot);
return action;