/*
QAD - Qt ADvanced
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see .
*/
#ifndef TOUCHBUTTFRAME_H
#define TOUCHBUTTFRAME_H
#include "qad_touch_widgets_export.h"
#include "touchbutton.h"
#include
#include
#include
class QAD_TOUCH_WIDGETS_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