bool DaemonAdaptor::swapActions(qulonglong id1, qulonglong id2) { bool result; emit onSwapActions(result, id1, id2); if (result) { emit actionsSwapped(id1, id2); } return result; }
DefaultModel::DefaultModel(Actions *actions, const QColor &grayedOutColour, const QFont &highlightedFont, const QFont &italicFont, const QFont &highlightedItalicFont, QObject *parent) : QAbstractTableModel(parent) , mActions(actions) , mGrayedOutColour(grayedOutColour) , mHighlightedFont(highlightedFont) , mItalicFont(italicFont) , mHighlightedItalicFont(highlightedItalicFont) { connect(actions, SIGNAL(daemonDisappeared()), SLOT(daemonDisappeared())); connect(actions, SIGNAL(daemonAppeared()), SLOT(daemonAppeared())); connect(actions, SIGNAL(actionAdded(qulonglong)), SLOT(actionAdded(qulonglong))); connect(actions, SIGNAL(actionModified(qulonglong)), SLOT(actionModified(qulonglong))); connect(actions, SIGNAL(actionEnabled(qulonglong, bool)), SLOT(actionEnabled(qulonglong, bool))); connect(actions, SIGNAL(actionsSwapped(qulonglong, qulonglong)), SLOT(actionsSwapped(qulonglong, qulonglong))); connect(actions, SIGNAL(actionRemoved(qulonglong)), SLOT(actionRemoved(qulonglong))); mVerboseType["command"] = tr("Command"); mVerboseType["method"] = tr("DBus call"); mVerboseType["client"] = tr("Client"); }
Actions::Actions(QObject *parent) : QObject(parent) , mServiceWatcher(new QDBusServiceWatcher(QLatin1String("org.lxqt.global_key_shortcuts"), QDBusConnection::sessionBus(), QDBusServiceWatcher::WatchForOwnerChange, this)) , mMultipleActionsBehaviour(MULTIPLE_ACTIONS_BEHAVIOUR_FIRST) { connect(mServiceWatcher, SIGNAL(serviceUnregistered(QString)), this, SLOT(on_daemonDisappeared(QString))); connect(mServiceWatcher, SIGNAL(serviceRegistered(QString)), this, SLOT(on_daemonAppeared(QString))); mDaemonProxy = new org::lxqt::global_key_shortcuts::daemon(QLatin1String("org.lxqt.global_key_shortcuts"), QStringLiteral("/daemon"), QDBusConnection::sessionBus(), this); connect(mDaemonProxy, SIGNAL(actionAdded(qulonglong)), this, SLOT(on_actionAdded(qulonglong))); connect(mDaemonProxy, SIGNAL(actionEnabled(qulonglong, bool)), this, SLOT(on_actionEnabled(qulonglong, bool))); connect(mDaemonProxy, SIGNAL(clientActionSenderChanged(qulonglong, QString)), this, SLOT(on_clientActionSenderChanged(qulonglong, QString))); connect(mDaemonProxy, SIGNAL(actionModified(qulonglong)), this, SLOT(on_actionModified(qulonglong))); connect(mDaemonProxy, SIGNAL(actionRemoved(qulonglong)), this, SLOT(on_actionRemoved(qulonglong))); connect(mDaemonProxy, SIGNAL(actionShortcutChanged(qulonglong)), this, SLOT(on_actionShortcutChanged(qulonglong))); connect(mDaemonProxy, SIGNAL(actionsSwapped(qulonglong, qulonglong)), this, SLOT(on_actionsSwapped(qulonglong, qulonglong))); connect(mDaemonProxy, SIGNAL(multipleActionsBehaviourChanged(uint)), this, SLOT(on_multipleActionsBehaviourChanged(uint))); QTimer::singleShot(0, this, SLOT(delayedInit())); }
void Actions::on_actionsSwapped(qulonglong id1, qulonglong id2) { GeneralActionInfos::iterator GI1 = mGeneralActionInfo.find(id1); GeneralActionInfos::iterator GI2 = mGeneralActionInfo.find(id2); if ((GI1 != mGeneralActionInfo.end()) && (GI2 != mGeneralActionInfo.end())) { bool swapped = false; if (GI1.value().type == GI2.value().type) { if (GI1.value().type == QLatin1String("client")) { ClientActionInfos::iterator DI1 = mClientActionInfo.find(id1); ClientActionInfos::iterator DI2 = mClientActionInfo.find(id2); if ((DI1 != mClientActionInfo.end()) && (DI2 != mClientActionInfo.end())) { ClientActionInfo clientActionInfo = DI1.value(); DI1.value() = DI2.value(); DI2.value() = clientActionInfo; swapped = true; } } else if (GI1.value().type == QLatin1String("method")) { MethodActionInfos::iterator MI1 = mMethodActionInfo.find(id1); MethodActionInfos::iterator MI2 = mMethodActionInfo.find(id2); if ((MI1 != mMethodActionInfo.end()) && (MI2 != mMethodActionInfo.end())) { MethodActionInfo methodActionInfo = MI1.value(); MI1.value() = MI2.value(); MI2.value() = methodActionInfo; swapped = true; } } else if (GI1.value().type == QLatin1String("command")) { CommandActionInfos::iterator CI1 = mCommandActionInfo.find(id1); CommandActionInfos::iterator CI2 = mCommandActionInfo.find(id2); if ((CI1 != mCommandActionInfo.end()) && (CI2 != mCommandActionInfo.end())) { CommandActionInfo commandActionInfo = CI1.value(); CI1.value() = CI2.value(); CI2.value() = commandActionInfo; swapped = true; } } } if (swapped) { GeneralActionInfo generalActionInfo = GI1.value(); GI1.value() = GI2.value(); GI2.value() = generalActionInfo; } else { do_actionRemoved(id1); do_actionRemoved(id2); do_actionAdded(id1); do_actionAdded(id2); } } emit actionsSwapped(id1, id2); }