GKeyFile *myKeyFile;
};
-LauncherItem::LauncherItem(): myEnabled(false) {
+LauncherItem::LauncherItem(): myIsGood(false), myEnabled(false) {
}
LauncherItem::~LauncherItem() {
bool LauncherItem::load(const std::string& filename) {
GKeyFileWrapper key_file;
+ myIsGood = false;
+
for (;;) {
myFileName = filename;
break;
}
+ myIsGood = true;
+
myName = key_file.getLocaleString(DESKTOP_ENTRY_GROUP, DESKTOP_ENTRY_NAME_FIELD);
myComment = key_file.getLocaleString(DESKTOP_ENTRY_GROUP, DESKTOP_ENTRY_COMMENT_FIELD);
myIcon = key_file.getString(DESKTOP_ENTRY_GROUP, DESKTOP_ENTRY_ICON_FIELD);
bool load(const std::string&);
+ bool valid() const { return myIsGood; }
+
GdkPixbuf *getIcon(int icon_size) const;
const std::string& getFileName() const { return myFileName; }
bool isEnabled(void) const { return myEnabled; }
- void enable() { myEnabled = checkSanity(); }
+ void enable() { myEnabled = valid() && checkSanity(); }
void disable() { myEnabled = false; }
void toggle() {
if (myEnabled) {
bool checkSanity(void) { return !myName.empty() && (!myService.empty() || !myExec.empty()); }
private:
+ bool myIsGood;
+
std::string myFileName, myName, myComment, myIcon, myService, myExec, myTextDomain;
bool myEnabled;
for (LauncherItems::Names::const_iterator it = myItems.myNames.begin(); it != myItems.myNames.end(); ++it) {
LauncherItem *item = myItems.myItems[*it];
- GtkTreeIter iter;
- gtk_list_store_append(myStore, &iter);
- {
- GdkPixbuf *icon = item->getIcon(icon_size);
- gtk_list_store_set(myStore, &iter, SLA_STORE_COLUMN_ICON, icon, SLA_STORE_COLUMN_INDEX, it-myItems.myNames.begin(), -1);
- g_object_unref(G_OBJECT(icon));
+ if (item->valid()) {
+ GtkTreeIter iter;
+
+ gtk_list_store_append(myStore, &iter);
+ {
+ GdkPixbuf *icon = item->getIcon(icon_size);
+ gtk_list_store_set(myStore, &iter, SLA_STORE_COLUMN_ICON, icon, SLA_STORE_COLUMN_INDEX, it-myItems.myNames.begin(), -1);
+ g_object_unref(G_OBJECT(icon));
+ }
}
}
}