#ifndef TOUCHBUTTFRAME_H #define TOUCHBUTTFRAME_H #include #include #include #include "touchbutton.h" class QAD_EXPORT TouchButtFrame: public QFrame { Q_OBJECT Q_PROPERTY(QColor colorYes READ colorYes WRITE setColorYes) Q_PROPERTY(QColor colorNo READ colorNo WRITE setColorNo) Q_PROPERTY(QColor colorGray READ colorGray WRITE setColorGray) Q_PROPERTY(QColor colorDown READ colorDown WRITE setColorDown) Q_PROPERTY(QStringList buttons READ buttons WRITE setButtons) Q_PROPERTY(int currentButton READ currentButton WRITE setCurrentButton) Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation) Q_PROPERTY(int clickID READ clickID WRITE setClickID) Q_PROPERTY(int setID READ setID WRITE setSetID) public: TouchButtFrame(QWidget * parent = 0, Qt::Orientation orientation = Qt::Horizontal); int clickID() const {return id_click;} int setID() const {return id_set;} void setButtons(const QStringList & captions); QStringList buttons(); TouchButton * button(int index); int buttonsCount() const {return lay->count();} int currentButton(); Qt::Orientation orientation() const {if (lay->direction() == 0) return Qt::Horizontal; else return Qt::Vertical;} QColor colorYes() const {return colg;} QColor colorNo() const {return colr;} QColor colorGray() const {return colw;} QColor colorDown() const {return colp;} void setCurrentButton(int index); void setColorYes(QColor col) {colg = col; resetColors();} void setColorNo(QColor col) {colr = col; resetColors();} void setColorGray(QColor col) {colw = col; resetColors();} void setColorDown(QColor col) {colp = col; resetColors();} void setOrientation(Qt::Orientation orientation) {if (orientation == Qt::Horizontal) lay->setDirection(QBoxLayout::LeftToRight); else lay->setDirection(QBoxLayout::TopToBottom);} private: void resetColors(); void deleteButtons(); void addButton(const QString & caption); int id_click, id_set; QColor colr, colg, colw, colp; QBoxLayout * lay; //int count; private slots: void butt_click(int index) {emit clicked(index); emit clickedID(id_click, index);} void butt_toggle(int index, bool checked) {emit toggled(index, checked); emit toggledID(id_click, index, checked);} public slots: void enable() {setEnabled(true);} void disable() {setAllButtonsGray(); setEnabled(false);} void setClickID(int id) {id_click = id;} void setSetID(int id) {id_set = id;} void setButtonChecked(int index) {if (button(index) != 0) button(index)->setChecked(true);} void setButtonUnchecked(int index) {if (button(index) != 0) button(index)->setChecked(false);} void setButtonState(int index, TouchButton::State state) {if (button(index) != 0) button(index)->setState(state);} void setButtonYes(int index) {if (button(index) != 0) button(index)->setStateYes();} void setButtonNo(int index) {if (button(index) != 0) button(index)->setStateNo();} void setButtonGray(int index) {if (button(index) != 0) button(index)->setStateGray();} void setAllButtonsState(TouchButton::State state) {for (int i = 0; i < buttonsCount(); ++i) button(i)->setState(state);} void setAllButtonsYes() {for (int i = 0; i < buttonsCount(); ++i) button(i)->setStateYes();} void setAllButtonsNo() {for (int i = 0; i < buttonsCount(); ++i) button(i)->setStateNo();} void setAllButtonsGray() {for (int i = 0; i < buttonsCount(); ++i) button(i)->setStateGray();} void hideButton(int index) {if (button(index) != 0) button(index)->hide();} void showButton(int index) {if (button(index) != 0) button(index)->show();} void enableButton(int index) {if (button(index) != 0) button(index)->enable();} void disableButton(int index) {if (button(index) != 0) button(index)->disable();} void enableID(int set_id) {if (set_id == id_set) enable();} void disableID(int set_id) {if (set_id == id_set) disable();} void setButtonCheckedID(int set_id, int index) {if (set_id == id_set) setButtonChecked(index);} void setButtonUncheckedID(int set_id, int index) {if (set_id == id_set) setButtonUnchecked(index);} void setButtonStateID(int set_id, int index, TouchButton::State state) {if (set_id == id_set) setButtonState(index, state);} void setButtonYesID(int set_id, int index) {if (set_id == id_set) setButtonYes(index);} void setButtonNoID(int set_id, int index) {if (set_id == id_set) setButtonNo(index);} void setButtonGrayID(int set_id, int index) {if (set_id == id_set) setButtonGray(index);} void setAllButtonsStateID(int set_id, TouchButton::State state) {if (set_id == id_set) setAllButtonsState(state);} void setAllButtonsYesID(int set_id) {if (set_id == id_set) setAllButtonsYes();} void setAllButtonsNoID(int set_id) {if (set_id == id_set) setAllButtonsNo();} void setAllButtonsGrayID(int set_id) {if (set_id == id_set) setAllButtonsGray();} void hideButtonID(int set_id, int index) {if (set_id == id_set) hideButton(index);} void showButtonID(int set_id, int index) {if (set_id == id_set) showButton(index);} void enableButtonID(int set_id, int index) {if (set_id == id_set) enableButton(index);} void disableButtonID(int set_id, int index) {if (set_id == id_set) disableButton(index);} signals: void clicked(int index); void toggled(int index, bool checked); void clickedID(int id, int index); void toggledID(int id, int index, bool checked); }; #endif // TOUCHBUTTFRAME_H