started to fill in the application item
[simple-launcher] / misc / ApplicationItem.cc
index d2d2c2f..3052a1f 100644 (file)
@@ -34,3 +34,39 @@ ApplicationItem::ApplicationItem(const std::string& itemID): BasicItem(factory.f
 
 ApplicationItem::~ApplicationItem() {
 }
+
+bool ApplicationItem::load() {
+  GKeyFileWrapper key_file;
+
+  for (;;) {
+    if (!key_file.load(myID)) {
+      break;
+    }
+
+    if (key_file.getString(DESKTOP_ENTRY_GROUP, DESKTOP_ENTRY_TYPE_FIELD) != "Application") {
+      break;
+    }
+
+    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);
+    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;
+  }
+
+  return (myEnabled = checkSanity());
+}
+
+void ApplicationItem::activate(osso_context_t *context) {
+  bool result = false;
+
+  if (myService.empty() || !(result = osso_rpc_run_with_defaults(context, myService.c_str(), "top_application", NULL, DBUS_TYPE_INVALID) == OSSO_OK)) {
+    runApplication(getExec());
+    return true;
+  } else {
+    return result;
+  }
+}