1 #include "TagsModel.h" 2 3 #include "TagsView.h" 4 #include "TagsModelException.h" 5 6 #include "client/Client.h" 7 #include "client/SaveInfo.h" 8 TagsModel()9TagsModel::TagsModel(): 10 save(NULL) 11 { 12 13 } 14 SetSave(SaveInfo * save)15void TagsModel::SetSave(SaveInfo * save) 16 { 17 this->save = save; 18 notifyTagsChanged(); 19 } 20 GetSave()21SaveInfo * TagsModel::GetSave() 22 { 23 return save; 24 } 25 RemoveTag(ByteString tag)26void TagsModel::RemoveTag(ByteString tag) 27 { 28 if(save) 29 { 30 std::list<ByteString> * tags = Client::Ref().RemoveTag(save->GetID(), tag); 31 if(tags) 32 { 33 save->SetTags(std::list<ByteString>(*tags)); 34 notifyTagsChanged(); 35 delete tags; 36 } 37 else 38 { 39 throw TagsModelException(Client::Ref().GetLastError()); 40 } 41 } 42 } 43 AddTag(ByteString tag)44void TagsModel::AddTag(ByteString tag) 45 { 46 if(save) 47 { 48 std::list<ByteString> * tags = Client::Ref().AddTag(save->GetID(), tag); 49 if(tags) 50 { 51 save->SetTags(std::list<ByteString>(*tags)); 52 notifyTagsChanged(); 53 delete tags; 54 } 55 else 56 { 57 throw TagsModelException(Client::Ref().GetLastError()); 58 } 59 } 60 } 61 AddObserver(TagsView * observer)62void TagsModel::AddObserver(TagsView * observer) 63 { 64 observers.push_back(observer); 65 observer->NotifyTagsChanged(this); 66 } 67 notifyTagsChanged()68void TagsModel::notifyTagsChanged() 69 { 70 for (size_t i = 0; i < observers.size(); i++) 71 { 72 observers[i]->NotifyTagsChanged(this); 73 } 74 } 75 ~TagsModel()76TagsModel::~TagsModel() { 77 } 78 79