File indexing completed on 2024-11-10 13:19:49

0001 /*
0002     SPDX-License-Identifier: GPL-2.0-only
0003     SPDX-FileCopyrightText: 1999-2001 Lubos Lunak <l.lunak@kde.org>
0004  */
0005 
0006 #define _KHOTKEYSGLOBAL_CPP_
0007 
0008 #include "khotkeysglobal.h"
0009 
0010 #include <KGlobal>
0011 #include <QDebug>
0012 #include <kstandarddirs.h>
0013 
0014 #include "input.h"
0015 #include "shortcuts_handler.h"
0016 #include "triggers/gestures.h"
0017 #include "triggers/triggers.h"
0018 #include "windows_handler.h"
0019 
0020 namespace KHotKeys
0021 {
0022 QPointer<ShortcutsHandler> keyboard_handler = nullptr;
0023 QPointer<WindowsHandler> windows_handler = nullptr;
0024 
0025 static bool _khotkeys_active = false;
0026 
0027 void init_global_data(bool active_P, QObject *owner_P)
0028 {
0029     // Make these singletons.
0030     if (!keyboard_handler) {
0031         keyboard_handler = new ShortcutsHandler(active_P ? ShortcutsHandler::Active : ShortcutsHandler::Configuration, owner_P);
0032     }
0033     if (!windows_handler) {
0034         windows_handler = new WindowsHandler(active_P, owner_P);
0035     }
0036     if (!gesture_handler) {
0037         gesture_handler = new Gesture(active_P, owner_P);
0038     }
0039     khotkeys_set_active(false);
0040 }
0041 
0042 void khotkeys_set_active(bool active_P)
0043 {
0044     _khotkeys_active = active_P;
0045 }
0046 
0047 bool khotkeys_active()
0048 {
0049     return _khotkeys_active;
0050 }
0051 
0052 // does the opposite of KStandardDirs::findResource() i.e. e.g.
0053 // "/opt/kde2/share/applnk/System/konsole.desktop" -> "System/konsole.desktop"
0054 QString get_menu_entry_from_path(const QString &path_P)
0055 {
0056     const QStringList dirs = KGlobal::dirs()->resourceDirs("apps");
0057     for (QStringList::ConstIterator it = dirs.constBegin(); it != dirs.constEnd(); ++it)
0058         if (path_P.indexOf(*it) == 0) {
0059             QString ret = path_P;
0060             ret.remove(0, (*it).length());
0061             if (ret[0] == '/')
0062                 ret.remove(0, 1);
0063             return ret;
0064         }
0065     return path_P;
0066 }
0067 
0068 } // namespace KHotKeys