void ShortcutController::addAction(QMenu* menu, QAction* action, const QString& name) { ShortcutItem* smenu = m_menuMap[menu]; if (!smenu) { return; } ShortcutItem* pmenu = smenu->parent(); int row = pmenu->items().indexOf(*smenu); QModelIndex parent = createIndex(row, 0, smenu); beginInsertRows(parent, smenu->items().count(), smenu->items().count()); smenu->addAction(action, name); endInsertRows(); ShortcutItem* item = &smenu->items().last(); if (m_config) { loadShortcuts(item); } emit dataChanged(createIndex(smenu->items().count() - 1, 0, item), createIndex(smenu->items().count() - 1, 2, item)); }
void ShortcutController::addMenu(QMenu* menu, QMenu* parentMenu) { ShortcutItem* smenu = m_menuMap[parentMenu]; if (!smenu) { smenu = &m_rootMenu; } QModelIndex parent; ShortcutItem* pmenu = smenu->parent(); if (pmenu) { int row = pmenu->items().indexOf(*smenu); parent = createIndex(row, 0, smenu); } beginInsertRows(parent, smenu->items().count(), smenu->items().count()); smenu->addSubmenu(menu); endInsertRows(); ShortcutItem* item = &smenu->items().last(); emit dataChanged(createIndex(smenu->items().count() - 1, 0, item), createIndex(smenu->items().count() - 1, 2, item)); m_menuMap[menu] = item; }
void ShortcutController::addFunctions(QMenu* menu, std::function<void()> press, std::function<void()> release, int shortcut, const QString& visibleName, const QString& name) { ShortcutItem* smenu = m_menuMap[menu]; if (!smenu) { return; } ShortcutItem* pmenu = smenu->parent(); int row = pmenu->items().indexOf(*smenu); QModelIndex parent = createIndex(row, 0, smenu); beginInsertRows(parent, smenu->items().count(), smenu->items().count()); smenu->addFunctions(qMakePair(press, release), shortcut, visibleName, name); endInsertRows(); ShortcutItem* item = &smenu->items().last(); if (m_config) { loadShortcuts(item); } m_heldKeys[shortcut] = item; emit dataChanged(createIndex(smenu->items().count() - 1, 0, item), createIndex(smenu->items().count() - 1, 2, item)); }