// 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
#include <string>
+#include <libintl.h>
+
#include <glib/gmem.h>
#include <glib/gkeyfile.h>
*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:
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;
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;
}
}
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);