00001 #ifndef KDE__MENUDATA_H
00002 #define KDE__MENUDATA_H
00003
00004 #include <faith/string.h>
00005 #include <faith/iconset.h>
00006 #include <faith/ui.h>
00007
00008 namespace Faith
00009 {
00010
00011 class PopupMenu;
00012 class Pixmap;
00013
00014 class FAITH_UI_EXPORT MenuItem
00015 {
00016 int mId;
00017 Faith::String mText;
00018 Faith::PopupMenu *mPopup;
00019 bool mChecked:1;
00020
00021 public:
00022 MenuItem(int id);
00023 virtual ~MenuItem();
00024
00025 Faith::String text() const { return mText; }
00026 void setText(const Faith::String &text);
00027 int id() const { return mId; }
00028
00029 PopupMenu *popup() { return mPopup; }
00030 const PopupMenu *popup() const { return 0; }
00031
00032 IconSet *iconSet();
00033
00034 void setPopup(PopupMenu *popup);
00035
00036 bool isCheckable() const { return false; }
00037 const Pixmap *pixmap() const { return 0; }
00038
00039 bool isSeparator() const { return false; }
00040
00041 bool isEnabled() const { return true; }
00042
00043 bool isChecked() const;
00044 void setChecked(bool checked);
00045 };
00046
00047 class FAITH_UI_EXPORT MenuData
00048 {
00049 struct Private;
00050 Private *d;
00051 public:
00052 MenuData();
00053 virtual ~MenuData();
00054
00055 int insertItem(const Faith::String &text, int id=-1, int index=-1);
00056 int insertItem(const Faith::String &text, PopupMenu *popup, int id=-1, int index=-1);
00057
00058 MenuItem *item(int id);
00059 const MenuItem *atIndex(int index) const
00060 {
00061 return const_cast<MenuData*>(this)->atIndex(index);
00062 }
00063
00064 MenuItem *atIndex(int index);
00065 int count() const;
00066
00067 protected:
00073 virtual void changed() { }
00074
00079 virtual MenuItem *createMenuItem(int id);
00080 };
00081
00082
00083 }
00084
00085 #endif