123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- #ifndef _SVC_CONTEXTCMD_H
- #define _SVC_CONTEXTCMD_H
- #include <bfc/dispatch.h>
- #include <api/service/services.h>
- namespace ContextCmdSortVal {
- enum ContextCmdSortVal {
- BEGINNING = 0,
- MIDDLE = 32767,
- END = 65535,
- };
- };
- class DragItem;
- class NOVTABLE svc_contextCmd : public Dispatchable {
- protected:
- svc_contextCmd() {}
- ~svc_contextCmd() {}
- public:
- static FOURCC getServiceType() { return WaSvc::CONTEXTCMD; }
- int testItem(DragItem *item, const wchar_t *menu_path);
- int getSubMenu(DragItem *item, const wchar_t *menu_path);
- const wchar_t *getSubMenuText(const wchar_t *menu_path);
- const wchar_t *getCommand(DragItem *item, int n);
- int getEnabled(DragItem *item, int n);
- int getChecked(DragItem *item, int n);
- int getSortVal(DragItem *item, int n);
- void onCommand(DragItem *item, int n);
- protected:
- enum {
- TESTITEM,
- GETSUBMENU,
- GETSUBMENUTEXT,
- GETCOMMAND,
- GETENABLED,
- GETCHECKED,
- GETSORTVAL,
- ONCOMMAND,
- };
- };
- inline int svc_contextCmd::testItem(DragItem *item, const wchar_t *menu_path) {
- return _call(TESTITEM, 0, item, menu_path);
- }
- inline
- int svc_contextCmd::getSubMenu(DragItem *item, const wchar_t *menu_path) {
- return _call(GETSUBMENU, 0, item, menu_path);
- }
- inline
- const wchar_t *svc_contextCmd::getSubMenuText(const wchar_t *menu_path) {
- return _call(GETSUBMENUTEXT, (const wchar_t *)NULL, menu_path);
- }
- inline const wchar_t *svc_contextCmd::getCommand(DragItem *item, int n) {
- return _call(GETCOMMAND, (const wchar_t *)0, item, n);
- }
- inline int svc_contextCmd::getEnabled(DragItem *item, int n) {
- return _call(GETENABLED, TRUE, item, n);
- }
- inline int svc_contextCmd::getChecked(DragItem *item, int n) {
- return _call(GETCHECKED, FALSE, item, n);
- }
- inline int svc_contextCmd::getSortVal(DragItem *item, int n) {
- return _call(GETSORTVAL, ContextCmdSortVal::MIDDLE, item, n);
- }
- inline void svc_contextCmd::onCommand(DragItem *item, int n) {
- _voidcall(ONCOMMAND, item, n);
- }
- class NOVTABLE svc_contextCmdI : public svc_contextCmd {
- public:
- virtual int testItem(DragItem *item, const wchar_t *menu_path)=0;
- virtual int getSubMenu(DragItem *item, const wchar_t *menu_path) { return 0; }
- virtual const wchar_t *getSubMenuText(const wchar_t *menu_path) { return NULL; }
- virtual const wchar_t *getCommand(DragItem *item, int n)=0;
- // override these as needed
- virtual int getEnabled(DragItem *item, int n) { return TRUE; }
- virtual int getChecked(DragItem *item, int n) { return FALSE; }
- virtual int getSortVal(DragItem *item, int n) { return ContextCmdSortVal::MIDDLE; }
- virtual void onCommand(DragItem *item, int n)=0;
- protected:
- RECVS_DISPATCH;
- };
- #include <api/service/servicei.h>
- template <class T>
- class ContextCmdCreator : public waServiceFactoryT<svc_contextCmd, T> { };
- #include <api/service/svc_enum.h>
- #include <bfc/string/stringW.h>
- class ContextCmdEnum : public SvcEnumT<svc_contextCmd> {
- public:
- ContextCmdEnum(DragItem *_item, const wchar_t *_menu_path)
- : item(_item), menu_path(_menu_path) {}
- protected:
- virtual int testService(svc_contextCmd *svc) {
- return svc->testItem(item, menu_path);
- }
- private:
- DragItem *item;
- StringW menu_path;
- };
- #endif
|