From: mishas Date: Fri, 21 Sep 2007 10:07:25 +0000 (+0000) Subject: BasicItem: X-Git-Url: http://git.maemo.org/git/?p=simple-launcher;a=commitdiff_plain;h=3b9a75073c3b5d98a57291cd4ec06a3f6eddfd30;hp=4bc1647b536fa308093aae88d0d9a949fc7b78c0 BasicItem: * added new virtual method -- load -- to perform the actual initialization BasicItemFactory: * implemented 'create' method git-svn-id: file:///svnroot/simple-launcher/trunk@235 3ba93dab-e023-0410-b42a-de7732cf370a --- diff --git a/misc/BasicItem.cc b/misc/BasicItem.cc index f6ec384..ee6f817 100644 --- a/misc/BasicItem.cc +++ b/misc/BasicItem.cc @@ -20,3 +20,22 @@ BasicItemFactory::BasicItemFactory() { registerFactory(factoryName(), this); } + +BasicItem *BasicItemFactory::create(const std::string& factoryName, const std::string& itemID) { + BasicItemFactory *factory = ourFactories.find(factoryName); + BasicItem *result = NULL; + + if (factory != NULL) { + result = factory->createItem(itemID); + + if (result != NULL) { + if (!result->load()) { + delete result; + + result = NULL; + } + } + } + + return result; +} diff --git a/misc/BasicItem.h b/misc/BasicItem.h index 037f9b3..d38a5fa 100644 --- a/misc/BasicItem.h +++ b/misc/BasicItem.h @@ -31,6 +31,8 @@ public: const std::string& getType() const { return myType; } const std::string& getID() const { return myID; } + virtual bool load() = 0; + virtual std::string getName() const = 0; virtual std::string getComment() const = 0; virtual GdkPixbuf *getIcon(int iconSize) const = 0;