X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=launcher-item.h;h=af40ca2e70e169a88b4b7ab682ee858ec6c762ea;hb=b843813af2067326837dcebbee364b1efcd56518;hp=39cc89677c300e9b5d1258f23782c20dc96a9769;hpb=9912722dc4f52b611b60d047eee71eb45c03e95e;p=simple-launcher diff --git a/launcher-item.h b/launcher-item.h index 39cc896..af40ca2 100644 --- a/launcher-item.h +++ b/launcher-item.h @@ -1,6 +1,6 @@ // This file is a part of Simple Launcher // -// Copyright (C) 2006, Mikhail Sobolev +// Copyright (C) 2006, 2007, Mikhail Sobolev // // Simple Launcher is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License version 2 as published by @@ -19,7 +19,9 @@ #define __LAUNCHER_ITEM_H__ #include +#include #include +#include #include #include @@ -34,9 +36,10 @@ public: GdkPixbuf *getIcon(int icon_size) const; const std::string& getFileName() const { return myFileName; } - const std::string& getName() const { return myName; } - const std::string& getComment() const { return myComment; } + std::string getName(bool translate = true) const { return translate ? translateString(myName) : myName; } + std::string getComment(bool translate = true) const { return translate ? translateString(myComment) : myComment; } const std::string& getService() const { return myService; } + const std::string& getExec() const { return myExec; } bool isEnabled(void) const { return myEnabled; } @@ -50,17 +53,67 @@ public: } } + bool checkSanity(void) { return !myName.empty() && (!myService.empty() || !myExec.empty()); } + private: - bool checkSanity(void) { return !(myName.empty() || myIcon.empty() || myService.empty()); } + std::string translateString(const std::string& what) const; private: - std::string myFileName, myName, myComment, myIcon, myService; + std::string myFileName, myName, myComment, myIcon, myService, myExec, myTextDomain; bool myEnabled; static GtkIconTheme *ourTheme; }; -typedef std::vector > LauncherItems; +struct LauncherItems { + typedef std::vector Names; + typedef std::map Items; + + Names myNames; + Items myItems; + + bool exists(const std::string& name) { + return std::find(myNames.begin(), myNames.end(), name) != myNames.end(); + } + + size_t size() { return myNames.size(); } + + LauncherItem *operator[](int index) { + return myItems[myNames[index]]; + } + + std::string& name(int index) { + return myNames[index]; + } + + void add(const std::string& name, LauncherItem *item) { + myNames.push_back(name); + myItems[name] = item; + } + + void swap(size_t i1, size_t i2) { + std::swap(myNames[i1], myNames[i2]); + } + + void clear() { + for (Items::iterator it = myItems.begin(); it != myItems.end(); ++it) { + if (it->second != NULL) { + delete it->second; + it->second = NULL; + } + } + + myNames.resize(0); + myItems.clear(); + } + + LauncherItems& operator=(const LauncherItems& that) { + myNames = that.myNames; + myItems = that.myItems; + + return *this; + } +}; #endif