00001 #ifndef _MENU_LAUNCHER_H_ 00002 #define _MENU_LAUNCHER_H_ 00003 00004 #include <qstring.h> 00005 #include <qstringlist.h> 00006 #include <qvaluelist.h> 00007 #include <qwindowsystem_qws.h> 00008 #define INCLUDE_MENUITEM_DEF 00009 #include <qpopupmenu.h> 00010 #include <qpoint.h> 00011 #include <qtimer.h> 00012 #include <qgfx_qws.h> 00013 00014 #include <qpe/global.h> 00015 #include <qpe/applnk.h> 00016 #include <qpe/config.h> 00017 #include <qpe/qpeapplication.h> 00018 00019 #include "ExtensionInterface.h" 00020 #include "MenuTitle.h" 00021 #include "KeyNames.h" 00022 #include "ConfigEx.h" 00023 #include "LnkWrapper.h" 00024 #include "QPopupMenuEx.h" 00025 00026 struct ItemInfo{ 00027 ItemInfo(QString g=QString::null, QString e=QString::null) 00028 : group(g), entry(e){} 00029 QString group; 00030 QString entry; 00031 }; 00032 00033 class MenuLauncher : public QObject, public ExtensionInterface 00034 { 00035 Q_OBJECT 00036 public: 00037 MenuLauncher(const QString& kind = "menu"); 00038 virtual ~MenuLauncher(); 00039 00040 typedef QValueList<ItemInfo> ItemList; 00041 00042 virtual bool onKeyPress(int keycode); 00043 virtual bool onModRelease(int modcode); 00044 virtual int getKeycode() 00045 { 00046 return(m_keycode); 00047 } 00048 virtual int getKeymask() 00049 { 00050 return(m_keymask); 00051 } 00052 virtual const QValueList<int>& getModcodes() 00053 { 00054 return(m_modcodes); 00055 } 00056 virtual void setKeycode(int keycode) 00057 { 00058 m_keycode = keycode; 00059 } 00060 virtual void setKeymask(int keymask) 00061 { 00062 m_keymask = keymask; 00063 } 00064 virtual void setModcodes(const QValueList<int>& modcodes) 00065 { 00066 m_modcodes = modcodes; 00067 } 00068 virtual const QString& kind() 00069 { 00070 return(m_kind); 00071 } 00072 public slots: 00073 void show(); 00074 void select(); 00075 void select(int id); 00076 void highlight(int id); 00077 private: 00078 int m_keycode; 00079 int m_keymask; 00080 QString m_kind; 00081 QValueList<int> m_modcodes; 00082 00083 int m_submenuTimeout; 00084 bool m_isShowing; 00085 bool m_enablePopup; 00086 int m_id; 00087 QPopupMenu* m_pMenu; 00088 QPopupMenu* m_pTopMenu; 00089 QDateTime m_lastmodify; 00090 00091 QMap<QObject*, int> m_oLastId; 00092 QValueList<QPopupMenu*> m_oMenuList; 00093 ItemList m_oItemList; 00094 QTimer* m_pTimer; 00095 00096 QStringList m_args; 00097 00098 QString getMenuText(const QString& key, const QString& name); 00099 QPopupMenu* initMenu(QWidget* parent, const QString& name); 00100 int buildMenu(bool force=false); 00101 int buildMenu(const QString& section, QPopupMenu* pMenu, int& id); 00102 void clearSubMenu(); 00103 void init(); 00104 void next(); 00105 private slots: 00106 bool eventFilter(QObject* o, QEvent* e); 00107 void execute(); 00108 }; 00109 00110 #endif /* _MENU_LAUNCHER_H_ */
1.4.2