00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _KO_TOOLBOX_H_
00021 #define _KO_TOOLBOX_H_
00022
00023 #include <QList>
00024 #include <QMap>
00025 #include <QDockWidget>
00026 #include <koffice_export.h>
00027
00028 class QButtonGroup;
00029 class QBoxLayout;
00030 class QAbstractButton;
00031 class ToolArea;
00032
00033
00048 class KOFFICEUI_EXPORT KoToolBox : public QDockWidget {
00049 Q_OBJECT
00050 public:
00052 KoToolBox();
00053 ~KoToolBox();
00054
00068 void addButton(QAbstractButton *button, const QString §ion, int priority, int buttonGroupId=-1);
00069
00074 void setup();
00075
00083 void setVisibilityCode(QAbstractButton *button, const QString &code);
00084
00085 public slots:
00091 void setActiveTool(int id);
00092
00100 void setButtonsVisible(const QList<QString> &codes);
00101
00106 void enableTools(bool enable);
00107
00108
00109 private:
00110 class ToolArea : public QWidget {
00111 public:
00112 ToolArea(QWidget *parent);
00113 ~ToolArea();
00114
00115 void setOrientation (Qt::Orientation orientation);
00116 void add(QWidget *button);
00117
00118 QWidget* getNextParent();
00119
00120 private:
00121 QList<QWidget *> m_children;
00122 QBoxLayout *m_layout;
00123
00124 QWidget *m_leftRow;
00125 QWidget *m_rightRow;
00126 QBoxLayout *m_leftLayout;
00127 QBoxLayout *m_rightLayout;
00128
00129 bool m_left;
00130 };
00131 QButtonGroup *m_buttonGroup;
00132 QBoxLayout* m_layout;
00133 QList<ToolArea *> m_toolBoxes;
00134 QMap<QAbstractButton*, QString> m_visibilityCodes;
00135
00136
00137 QMap<QString, QMultiMap<int, QAbstractButton*> > m_buttons;
00138 QMap<QString, ToolArea*> m_toolAreas;
00139
00140 void showEvent(QShowEvent *event);
00141 };
00142
00144
00145
00146 #endif // _KO_TOOLBOX_H_