00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef IMG_OV_GUI_OVDIALOG_H
00027 #define IMG_OV_GUI_OVDIALOG_H
00028
00029
00030 #include <vector>
00031 #include <map>
00032 #include "overlay_manager_observer.hh"
00033
00034 #include <QWidget>
00035 #include <QRadioButton>
00036 #include <QCheckBox>
00037 #include <QMenu>
00038 #include <QGridLayout>
00039 #include <QLabel>
00040 #include <QPushButton>
00041 #include <QButtonGroup>
00042 namespace ost { namespace img { namespace gui {
00043
00044 class OverlayCustomActCheckBox: public QRadioButton
00045 {
00046 Q_OBJECT;
00047 public:
00048 OverlayCustomActCheckBox(int i, OverlayManager* m);
00049
00050 public slots:
00051 void OnToggle(bool c);
00052
00053 private:
00054 int id_;
00055 OverlayManager* man_;
00056 };
00057
00059
00060 class OverlayCustomVisCheckBox: public QCheckBox
00061 {
00062 Q_OBJECT;
00063 public:
00064 OverlayCustomVisCheckBox(int i, OverlayManager* m);
00065
00066 public slots:
00067 void OnToggle(bool c);
00068
00069 private:
00070 int id_;
00071 OverlayManager* man_;
00072 };
00073
00075
00076 class OverlayCustomLockCheckBox: public QCheckBox
00077 {
00078 Q_OBJECT;
00079 public:
00080 OverlayCustomLockCheckBox(int i, OverlayManager* m);
00081
00082 public slots:
00083 void OnToggle(bool c);
00084
00085 private:
00086 int id_;
00087 OverlayManager* man_;
00088 };
00089
00091
00092 class OverlayManagerGUI: public QWidget, public OverlayManagerObserver {
00093 Q_OBJECT;
00094
00095 struct OverlayEntry {
00096 int row;
00097 QRadioButton* a;
00098 QCheckBox* v;
00099 QCheckBox* l;
00100 QPushButton* b;
00101 };
00102
00103 typedef std::map<int, OverlayEntry> EntryMap;
00104
00105 public:
00106 OverlayManagerGUI(QWidget* p, OverlayManagerPtr ov_manager);
00107
00108
00109 virtual void OnLockChange(OverlayManager* m, int id, bool lock);
00110 virtual void OnVisibilityChange(OverlayManager* m, int id, bool is_visible);
00111 virtual void OnActivate(OverlayManager* m, int id) ;
00112 virtual void OnAddOverlay(OverlayManager* m, int id) ;
00113 virtual void OnRemoveOverlay(OverlayManager* m, int id) ;
00114 virtual void OnRelease(OverlayManager* m) ;
00115
00116
00117 void OnEventActivate(QAction* e);
00118 void OnEventShowHide(QAction* e);
00119 void OnEventLock(QAction* e);
00120 void OnEventMenuPopup(QAction* e);
00121 void OnEventMenu(QAction* e);
00122
00123 QButtonGroup* GetButtonGroup(void);
00124
00125 public slots:
00126 void SetInfoText(const QString& t);
00127
00128 signals:
00129 void SettingsChanged();
00130
00131 private:
00132 OverlayManagerPtr ov_manager_;
00133 EntryMap entry_map_;
00134 QButtonGroup* active_group_;
00135 QGridLayout* layout_;
00136 QLabel* infotext_;
00137
00138 void UpdateView();
00139 };
00140
00141 }}}
00142
00143 #endif