#ifndef _SVC_ITEMMGR_H #define _SVC_ITEMMGR_H #include #include class NOVTABLE svc_itemMgr : public Dispatchable { public: static FOURCC getServiceType() { return WaSvc::ITEMMANAGER; } int isMine(const char *playstring) { return _call(ISMINE, 0, playstring); } int optimizePlaystring(char *playstring) { return _call(OPTIMIZEPLAYSTRING, 0, playstring); } int createInitialName(const char *playstring, char *buf, int buflen) { return _call(CREATEINITIALNAME, 0, playstring, buf, buflen); } int optimizeFileData(const char *playstring, const char *fieldname, int datatype, char *data, int datalen) { return _call(OPTIMIZEFILEDATA, -1, playstring, fieldname, datatype, data, datalen); } int onDatabaseAdd(const char *playstring) { return _call(ONDATABASEADD, 0, playstring); } int onDatabaseDel(const char *playstring) { return _call(ONDATABASEDEL, 0, playstring); } //return 1 if changed int onTitleChange(const char *playstring, const char *newtitle) { return _call(ONTITLECHANGE, 0, playstring, newtitle); } int onTitle2Change(const char *playstring, const char *newtitle) { return _call(ONTITLE2CHANGE, 0, playstring, newtitle); } void onNextFile(const char *playstring) { _voidcall(ONNEXTFILE, playstring); } void onFileComplete(const char *playstring) { _voidcall(ONFILECOMPLETE, playstring); } int wantScanData(const char *playstring) { return _call(WANTSCANDATA, 1, playstring); } int getSortOrder() { return _call(GETSORTORDER, 0); } enum { ISMINE=100, OPTIMIZEPLAYSTRING=200, OPTIMIZEFILEDATA=211, //210 retired CREATEINITIALNAME=300, ONDATABASEADD=400, ONDATABASEDEL=401, ONTITLECHANGE=600, ONTITLE2CHANGE=601, ONNEXTFILE=700, ONFILECOMPLETE=800, WANTSCANDATA=900, GETSORTORDER=1000, }; }; // derive from this one class NOVTABLE svc_itemMgrI : public svc_itemMgr { public: virtual int isMine(const char *playstring)=0; virtual int optimizePlaystring(char *playstring) { return 0; } virtual int createInitialName(const char *playstring, char *buf, int buflen) { return 0; } virtual int optimizeFileData(const char *playstring, const char *fieldname, int datatype, char *data, int datalen) { return -1; } virtual int onDatabaseAdd(const char *playstring) { return 0; } virtual int onDatabaseDel(const char *playstring) { return 0; } virtual int onTitleChange(const char *playstring, const char *newtitle) { return 0; } virtual int onTitle2Change(const char *playstring, const char *newtitle) { return 0; } virtual void onNextFile(const char *playstring) { } virtual void onFileComplete(const char *playstring) { } virtual int wantScanData(const char *playstring) { return 1; } virtual int getSortOrder() { return 0; } protected: RECVS_DISPATCH; }; #include #include class ItemMgrEnum : private Named, public SvcEnumT { public: ItemMgrEnum(const char *ps) : Named(ps) { } void setPlaystring(const char *ps) { Named::setName(ps); } protected: virtual int testService(svc_itemMgr *svc) { return svc->isMine(getName()); } }; #include template class ItemMgrCreator : public waServiceFactoryTSingle { }; #endif