123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- #include <precomp.h>
- #include "grouptgbutton.h"
- #include <api/script/objects/guiobject.h>
- #include <api/wnd/notifmsg.h>
- GroupToggleButton::GroupToggleButton() {
- status = STATUS_OFF;
- }
- GroupToggleButton::~GroupToggleButton() {
- }
- void GroupToggleButton::setGroups(const wchar_t *_on, const wchar_t *_off) {
- on_id = _on;
- on.setContent(on_id);
- off_id = _off;
- off.setContent(off_id);
- }
- int GroupToggleButton::onInit() {
- int rt = GROUPTOGGLEBUTTON_PARENT::onInit();
- initGroups();
- return rt;
- }
- void GroupToggleButton::initGroups() {
- on.setStartHidden(status == STATUS_ON ? 0 : 1); off.setStartHidden(status == STATUS_ON ? 1 : 0);
- on.setContent(on_id);
- off.setContent(off_id);
- on.setParent(this); off.setParent(this);
- on.init(this); off.init(this);
- rootwndholder_setRootWnd(status == STATUS_ON ? &on : &off);
- }
- int GroupToggleButton::childNotify(ifc_window *child, int msg, intptr_t param1, intptr_t param2) {
- if (child == &on || child == &off) {
- switch (msg) {
- case ChildNotify::BUTTON_LEFTPUSH: {
- if (wantFullClick()) grouptoggle_onLeftPush();
- return 1;
- }
- case ChildNotify::BUTTON_RIGHTPUSH: {
- if (wantFullClick()) grouptoggle_onRightPush();
- return 1;
- }
- case ChildNotify::CLICKWND_LEFTDOWN: {
- if (!wantFullClick()) grouptoggle_onLeftPush();
- return 1;
- }
- case ChildNotify::CLICKWND_RIGHTDOWN: {
- if (!wantFullClick()) grouptoggle_onRightPush();
- return 1;
- }
- }
- }
- return GROUPTOGGLEBUTTON_PARENT::childNotify(child, msg, param1, param2);
- }
- void GroupToggleButton::toggle() {
- if (status == STATUS_OFF) {
- if (isInited()) {
- off.setVisible(0);
- on.setVisible(1);
- rootwndholder_setRootWnd(&on);
- }
- status = STATUS_ON;
- } else {
- if (isInited()) {
- on.setVisible(0);
- off.setVisible(1);
- rootwndholder_setRootWnd(&off);
- }
- status = STATUS_OFF;
- }
- notifyParent(ChildNotify::GROUPCLICKTGBUTTON_TOGGLE, status);
- }
- void GroupToggleButton::setStatus(int s) {
- if (s != status)
- toggle();
- }
- int GroupToggleButton::wantFullClick() {
- return 0;
- }
- void GroupToggleButton::grouptoggle_onLeftPush() {
- notifyParent(ChildNotify::GROUPCLICKTGBUTTON_CLICKED);
- if (!wantAutoToggle()) return;
- if (status == STATUS_ON && !off_id.isempty() || status == STATUS_OFF && !on_id.isempty())
- toggle();
- }
- void GroupToggleButton::grouptoggle_onRightPush() {
- }
- GroupClickWnd *GroupToggleButton::enumGroups(int n) {
- if (n == 0) return &on;
- if (n == 1) return &off;
- return NULL;
- }
- int GroupToggleButton::getNumGroups() {
- int i=0;
- i++;
- i++;
- return i;
- }
|