12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- #ifndef __BUCKETITEM_H
- #define __BUCKETITEM_H
- #include <bfc/common.h>
- #include <api/syscb/callbacks/wndcb.h>
- #include <api/wnd/wndclass/buttwnd.h>
- #include <bfc/depend.h>
- #include <api/wnd/notifmsg.h>
- template <class T> class BucketItemT : public T {
- public:
- BucketItemT(GUID g=INVALID_GUID, const wchar_t *text=NULL) : guid_target(g), target_txt(text) {
- setBorders(0);
- setHInstanceColorGroup(L"Thinger icons");
- }
- virtual ~BucketItemT() {
- }
-
- virtual void setBucketText(const wchar_t *txt) {
- notifyParent(ChildNotify::COMPONENTBUCKET_SETTEXT, reinterpret_cast<intptr_t>(txt), 0);
- }
- virtual void onLeftPush(int x, int y) {
- T::onLeftPush(x, y);
- if (guid_target != INVALID_GUID) {
- RECT r;
- getClientRect(&r);
- clientToScreen(&r);
- int newstatus = WASABI_API_WNDMGR->skinwnd_toggleByGuid(guid_target);
- setActivatedButton(newstatus);
- }
- }
- virtual int onShowWindow(GUID g, const wchar_t *groupid) {
- if (g == guid_target) setActivatedButton(1);
- return 1;
- }
- virtual int onHideWindow(GUID g, const wchar_t *groupid) {
- if (g == guid_target) setActivatedButton(0);
- return 1;
- }
- virtual void onEnterArea() {
- T::onEnterArea();
- if (!target_txt.isempty()) setBucketText(target_txt);
- }
- virtual void onLeaveArea() {
- T::onLeaveArea();
- if (!target_txt.isempty()) setBucketText(NULL);
- }
- void setAutoOpen(GUID g) {
- guid_target = g;
- }
- void setAutoText(const wchar_t *txt) {
- target_txt = txt;
- }
- private:
- GUID guid_target;
- StringW target_txt;
- };
- #define BUCKETITEM_PARENT ButtonWnd
- class BucketItem : public BucketItemT<BUCKETITEM_PARENT> {
- public:
- BucketItem(GUID g=INVALID_GUID, const wchar_t *text=NULL) : BucketItemT<ButtonWnd> (g, text) {}
- virtual ~BucketItem() {}
- };
- #endif // __BUCKETITEM_H
|