/*************************************************************************** kbswitchapp.h - description ------------------- begin : Sun Jul 1 2001 copyright : (C) 2001 by Leonid Zeitlin email : lz@europe.com ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef KBSWITCHAPP_H #define KBSWITCHAPP_H #ifdef HAVE_CONFIG_H #include <config.h> #endif #include <tdeversion.h> #if TDE_VERSION_MAJOR >= 3 #include <kuniqueapplication.h> #else #include <kuniqueapp.h> #endif //#include <ntqmap.h> #include "kbgroup.h" #include "kbswitchtrayicon.h" #include "kbconfig.h" #include "xkeyboard.h" #include "kbswitchintf.h" #include "windowwatcher.h" /*class KWinModule; typedef struct _KBWinInfo { int groupno; int next_groupno; } KBWinInfo; typedef TQMap<WId, KBWinInfo> KBWindowMap;*/ /** *@author Leonid Zeitlin */ class KBSwitchApp : public KUniqueApplication { Q_OBJECT public: KBSwitchApp(); ~KBSwitchApp(); protected: // Protected methods /** No descriptions */ bool x11EventFilter(XEvent *e); private: // Private attributes /** */ bool m_force_group_setting; int m_cur_groupno; int m_next_groupno; XKeyboard m_xkb; /** */ KBSwitchTrayIcon * m_trayicon; /** No descriptions */ KBConfig m_kbconf; KBSwitchIntf *m_intf; #ifndef HAVE_LIBXKLAVIER /** Window manager interface */ //KWinModule *m_twin_module; /** Maps Window IDs to their keyboard groups */ //KBWindowMap m_window_map; //KBWindowMap::iterator m_active_window; WindowWatcher *m_watcher; KBConfig::GroupScope m_watcher_type; #endif private: // Private methods /** Update the tray icon to show the flag corresponding to the current keyboard group */ void updateIcon(int groupno); /** No descriptions */ void internalToggleGroups(); /** No descriptions */ void forceSetGroup(int groupno); /** No descriptions */ /*int getNextGroup(int groupno) { return groupno >= m_kbconf.groupCount() - 1 ? 0 : groupno + 1; }*/ /** No descriptions */ void setStartGroup(int start_group); void adaptToGroup(int groupno); #ifndef HAVE_LIBXKLAVIER /** initialize Window groups map */ //void resetWindowMap(); /** Disable window manager notifications */ //void disableKWinModule(); /** Enable window manager notifications */ //void enableKWinModule(); /** adds a new window to the internal window map */ //void addWindowToMap(WId window_id); void enableWatcher(); void disableWatcher(); #endif /** Set the current and next groups */ void setGroups(int group, int next_group); private slots: // Private slots /** No descriptions */ void slotGroupSelected(int groupno); /** No descriptions */ void slotSelectNextGroup(); /** No descriptions */ void slotPreferences(); /** No descriptions */ void reconfigure(); /** Respond to XKB changing the current group */ void slotXkbGroupChanged(int groupno); /** Respond to changing of active window - active it's kb group */ //void slotWindowChanged(WId activeWindow); /** Respond to removal of a window - remote it from Window groups map */ //void slotWindowRemoved(WId window); void slotWindowChanged(int groupno, int next_groupno); /** React to a change in KKBSwitch's user preferences, * made by user in Configure dialog */ void slotPrefChanged(); }; #endif