X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=launcher-item.cc;h=6487f283ef60338f2513af6f41a40868a6a8ce8b;hb=0095049cda673a0f8adbd93399813eedd8930a44;hp=896d44051be04527856b19e6b560bae22d7c5d75;hpb=9912722dc4f52b611b60d047eee71eb45c03e95e;p=simple-launcher diff --git a/launcher-item.cc b/launcher-item.cc index 896d440..6487f28 100644 --- a/launcher-item.cc +++ b/launcher-item.cc @@ -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 @@ -17,6 +17,8 @@ #include +#include + #include #include @@ -29,7 +31,12 @@ static const char *DESKTOP_ENTRY_GROUP = "Desktop Entry", *DESKTOP_ENTRY_ICON_FIELD = "Icon", *DESKTOP_ENTRY_NAME_FIELD = "Name", *DESKTOP_ENTRY_COMMENT_FIELD = "Comment", - *DESKTOP_ENTRY_SERVICE_FIELD = "X-Osso-Service"; + *DESKTOP_ENTRY_EXEC_FIELD = "Exec", + *DESKTOP_ENTRY_SERVICE_FIELD = "X-Osso-Service", + *DESKTOP_ENTRY_TEXT_DOMAIN = "X-Text-Domain"; + +static const char *DEFAULT_TEXT_DOMAIN = "maemo-af-desktop"; +static const char *DEFAULT_APP_ICON = "qgn_list_gene_default_app"; class GKeyFileWrapper { public: @@ -90,6 +97,14 @@ LauncherItem::LauncherItem(): myEnabled(false) { LauncherItem::~LauncherItem() { } +std::string LauncherItem::translateString(const std::string& what) const { + if (what.empty()) { + return what; + } else { + return dgettext(myTextDomain.empty() ? DEFAULT_TEXT_DOMAIN : myTextDomain.c_str(), what.c_str()); + } +} + bool LauncherItem::load(const std::string& filename) { GKeyFileWrapper key_file; @@ -108,6 +123,8 @@ bool LauncherItem::load(const std::string& filename) { myComment = key_file.getLocaleString(DESKTOP_ENTRY_GROUP, DESKTOP_ENTRY_COMMENT_FIELD); myIcon = key_file.getString(DESKTOP_ENTRY_GROUP, DESKTOP_ENTRY_ICON_FIELD); myService = key_file.getString(DESKTOP_ENTRY_GROUP, DESKTOP_ENTRY_SERVICE_FIELD); + myExec = key_file.getString(DESKTOP_ENTRY_GROUP, DESKTOP_ENTRY_EXEC_FIELD); + myTextDomain = key_file.getString(DESKTOP_ENTRY_GROUP, DESKTOP_ENTRY_TEXT_DOMAIN); break; } @@ -116,16 +133,24 @@ bool LauncherItem::load(const std::string& filename) { } GdkPixbuf *LauncherItem::getIcon(int icon_size) const { + if (ourTheme == NULL) { + ourTheme = gtk_icon_theme_get_default(); + } + GdkPixbuf *pixbuf = NULL; + GError *error = NULL; if (!myIcon.empty()) { - if (ourTheme == NULL) { - ourTheme = gtk_icon_theme_get_default(); - } + pixbuf = gtk_icon_theme_load_icon(ourTheme, myIcon.c_str(), icon_size, GTK_ICON_LOOKUP_NO_SVG, &error); - GError *error = NULL; + if (error != NULL) { + g_error_free(error); + error = NULL; + } + } - pixbuf = gtk_icon_theme_load_icon(ourTheme, myIcon.c_str(), icon_size, GTK_ICON_LOOKUP_NO_SVG, &error); + if (pixbuf == NULL) { + pixbuf = gtk_icon_theme_load_icon(ourTheme, DEFAULT_APP_ICON, icon_size, GTK_ICON_LOOKUP_NO_SVG, &error); if (error != NULL) { g_error_free(error);