#pragma once #undef OCSP_REQUEST #undef OCSP_RESPONSE #include struct CSkypeProto; class CConversation : public Conversation { public: typedef DRef Ref; typedef DRefs Refs; CConversation(unsigned int oid, SERootObject* root);// : Conversation(oid, root) {}; protected: void OnMessage(const MessageRef & message); }; class CContact : public Contact { public: typedef void (CSkypeProto::* OnContactChanged)(CContact::Ref contact, int); typedef DRef Ref; typedef DRefs Refs; CContact(unsigned int oid, SERootObject* root); void SetOnContactChangedCallback(OnContactChanged callback, CSkypeProto* proto); private: CSkypeProto* proto; OnContactChanged callback; void OnChange(int prop); }; class CContactGroup : public ContactGroup { public: typedef void (CSkypeProto::* OnContactListChanged)(const ContactRef& contact); typedef DRef Ref; typedef DRefs Refs; CContactGroup(unsigned int oid, SERootObject* root); CContact::Refs ContactList; void SetOnContactListChangedCallback(OnContactListChanged callback, CSkypeProto* proto); bool Contains(const ContactRef& contact); private: CSkypeProto* proto; OnContactListChanged callback; void OnChange(const ContactRef& contact); }; class CAccount : public Account { public: typedef DRef Ref; typedef DRefs Refs; bool isLoggedOut; CAccount(unsigned int oid, SERootObject* root); void BlockWhileLoggingIn(); void BlockWhileLoggingOut(); private: void OnChange(int prop); }; class CSkype : public Skype { public: CAccount* newAccount(int oid); CContactGroup* newContactGroup(int oid); CConversation* newConversation(int oid); CContact* newContact(int oid); };