Moved "enabled" functionality into LauncherItem
authormishas <mikhail.sobolev@gmail.com>
Sat, 23 Dec 2006 08:20:47 +0000 (08:20 +0000)
committermishas <mikhail.sobolev@gmail.com>
Sat, 23 Dec 2006 08:20:47 +0000 (08:20 +0000)
  * made LaunchableItem inherited from LauncherItem
  * updated simple-launcher.cc and test1.cc

git-svn-id: file:///svnroot/simple-launcher/trunk@64 3ba93dab-e023-0410-b42a-de7732cf370a

launchable-item.cc
launchable-item.h
launcher-item.h
simple-launcher.cc
sla-list.cc
sla-list.h
test1.cc

index 71aab95..b8cae0a 100644 (file)
 
 #include "launchable-item.h"
 
-LaunchableItem::LaunchableItem(LauncherItem *item, bool enabled): myItem(item), myEnabled(enabled) {
-}
-
-LaunchableItem::~LaunchableItem() {
-  if (myItem != 0) {
-    delete myItem;
-  }
-}
-
 bool LaunchableItem::activate(osso_context_t *context) {
-  return osso_application_top(context, myItem->getService().c_str(), 0) == OSSO_OK;
+  return osso_application_top(context, getService().c_str(), 0) == OSSO_OK;
 }
 
 // vim:ts=2:sw=2:et
index 13afb72..4619d14 100644 (file)
 #ifndef __LAUNCHABLE_ITEM_H__
 #define __LAUNCHABLE_ITEM_H__
 
-#include <vector>
-#include <string>
-
 #include <libosso.h>
 
 #include "launcher-item.h"
 
-// TODO: or better use inheritance?
-class LaunchableItem {
+class LaunchableItem : public LauncherItem {
 public:
-  LaunchableItem(LauncherItem *, bool);
- ~LaunchableItem();
-
-  GdkPixbuf *getIcon(int icon_size) const { return myItem->getIcon(icon_size); }
-
-  const std::string& getName() const { return myItem->getName(); }
-  const std::string& getComment() const { return myItem->getComment(); }
-  const std::string& getService() const { return myItem->getService(); }
-
-  bool isEnabled(void) const { return myEnabled; }
-
-  void enable() { myEnabled = true; }
-  void disable() { myEnabled = false; }
-  void toggle() { myEnabled = !myEnabled; }
-
   bool activate(osso_context_t *);
-
-private:
-  LauncherItem *myItem;
-  bool myEnabled;
 };
 
-typedef std::vector<std::pair<std::string, LaunchableItem *> > LaunchableItems;
-
 #endif
 
 // vim:ts=2:sw=2:et
index 97e6c64..0d32405 100644 (file)
 #ifndef __LAUNCHER_ITEM_H__
 #define __LAUNCHER_ITEM_H__
 
+#include <vector>
 #include <string>
 
 #include <gdk-pixbuf/gdk-pixbuf.h>
 #include <gtk/gtkicontheme.h>
 
-#include <libosso.h>
-
 class LauncherItem {
 public:
   LauncherItem();
- ~LauncherItem();
+  virtual ~LauncherItem();
 
   bool load(const std::string&);
 
@@ -37,12 +36,22 @@ public:
   const std::string& getName() const { return myName; }
   const std::string& getComment() const { return myComment; }
   const std::string& getService() const { return myService; }
+
+  bool isEnabled(void) const { return myEnabled; }
+
+  void enable() { myEnabled = true; }
+  void disable() { myEnabled = false; }
+  void toggle() { myEnabled = !myEnabled; }
+
 private:
   std::string myName, myComment, myIcon, myService;
+  bool myEnabled;
 
   static GtkIconTheme *ourTheme;
 };
 
+typedef std::vector<std::pair<std::string, LauncherItem *> > LauncherItems;
+
 #endif
 
 // vim:ts=2:sw=2:et
index 7b72077..82eacac 100644 (file)
@@ -61,7 +61,7 @@ private:
   GtkWidget *myWidget;
   GtkWindow *myParent;
 
-  LaunchableItems myItems;
+  LauncherItems myItems;
 
   static char *ourFiles[];
 };
@@ -127,10 +127,10 @@ bool SimpleLauncherApplet::doInit(void *state_data, int *state_size) {
   }
 
   for (int i = 0 ; ourFiles[i] != 0 ; ++i) {
-    LauncherItem *item = new LauncherItem();
+    LaunchableItem *item = new LaunchableItem();
 
     if (item->load(ourFiles[i])) {
-      myItems.push_back(std::pair<std::string, LaunchableItem *>(ourFiles[i], new LaunchableItem(item, true)));
+      myItems.push_back(std::pair<std::string, LauncherItem *>(ourFiles[i], item));
     } else {
       delete item;
     }
@@ -146,7 +146,7 @@ bool SimpleLauncherApplet::doInit(void *state_data, int *state_size) {
 }
 
 SimpleLauncherApplet::~SimpleLauncherApplet() {
-  for (LaunchableItems::iterator it = myItems.begin(); it != myItems.end(); ++it) {
+  for (LauncherItems::iterator it = myItems.begin(); it != myItems.end(); ++it) {
     if (it->second != 0) {
       delete it->second;
       it->second = 0;
@@ -171,7 +171,7 @@ bool SimpleLauncherApplet::initWidget() {
 
   GtkToolbar *toolbar = GTK_TOOLBAR(gtk_toolbar_new());
 
-  for (LaunchableItems::const_iterator it = myItems.begin(); it != myItems.end(); ++it) {
+  for (LauncherItems::const_iterator it = myItems.begin(); it != myItems.end(); ++it) {
     GtkToolItem *button = gtk_tool_button_new(gtk_image_new_from_pixbuf(it->second->getIcon(SL_APPLET_ICON_SIZE)), 0);
 
     gtk_object_set_user_data(GTK_OBJECT(button), it->second);
index e63e918..7022211 100644 (file)
@@ -27,7 +27,7 @@
 
 #include "sla-list.h"
 
-SLAList::SLAList(int icon_size, LaunchableItems& items): myWidget(0), myStore(0), myView(0), mySelection(0), myItems(items) {
+SLAList::SLAList(int icon_size, LauncherItems& items): myWidget(0), myStore(0), myView(0), mySelection(0), myItems(items) {
   GtkTreeViewColumn *column;
   GtkCellRenderer *renderer;
 
@@ -87,9 +87,9 @@ SLAList::SLAList(int icon_size, LaunchableItems& items): myWidget(0), myStore(0)
 
   gtk_widget_show_all(myWidget);
 
-  for (LaunchableItems::const_iterator item = myItems.begin(); item != myItems.end(); ++item) {
+  for (LauncherItems::const_iterator item = myItems.begin(); item != myItems.end(); ++item) {
     GtkTreeIter iter;
-    
+
     gtk_list_store_append(myStore, &iter);
     gtk_list_store_set(myStore, &iter, 0, item->second->getIcon(icon_size), 1, item-myItems.begin(), -1);
   }
@@ -123,14 +123,17 @@ void SLAList::renderText(GtkTreeViewColumn *, GtkCellRenderer *cell, GtkTreeMode
   int index;
 
   gtk_tree_model_get(GTK_TREE_MODEL(myStore), iter, 1, &index, -1);
-
+#if 1
   if (gtk_tree_selection_iter_is_selected(mySelection, iter)) {
     gchar *text = g_markup_printf_escaped("%s\n<small>%s</small>", myItems[index].second->getName().c_str(), myItems[index].second->getComment().c_str());
     g_object_set(cell, "markup", text, 0);
     g_free(text);
   } else {
+#endif
     g_object_set(cell, "text", myItems[index].second->getName().c_str(), 0);
+#if 1
   }
+#endif
 }
 
 void SLAList::renderBool(GtkTreeViewColumn *, GtkCellRenderer *cell, GtkTreeModel *model, GtkTreeIter *iter) {
@@ -142,17 +145,13 @@ void SLAList::renderBool(GtkTreeViewColumn *, GtkCellRenderer *cell, GtkTreeMode
 }
 
 void SLAList::toggleBool(GtkCellRendererToggle *renderer, const gchar *spath) {
-  GtkTreePath *path = gtk_tree_path_new_from_string(spath);
+  GtkTreeIter iter;
 
-  if (path != 0) {
-    GtkTreeIter iter;
+  if (gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(myStore), &iter, spath)) {
+    int index;
 
-    if (gtk_tree_model_get_iter(GTK_TREE_MODEL(myStore), &iter, path)) {
-      int index;
-
-      gtk_tree_model_get(GTK_TREE_MODEL(myStore), &iter, 1, &index, -1);
-      myItems[index].second->toggle();
-    }
+    gtk_tree_model_get(GTK_TREE_MODEL(myStore), &iter, 1, &index, -1);
+    myItems[index].second->toggle();
   }
 }
 
index 77bc438..193027d 100644 (file)
 #include <gtk/gtkbutton.h>
 #include <gtk/gtkcellrenderertoggle.h>
 
-#include "launchable-item.h"
+#include "launcher-item.h"
 
 class SLAList {
 public:
-  SLAList(int, LaunchableItems&);
+  SLAList(int, LauncherItems&);
  ~SLAList();
 
   GtkWidget *getWidget() { return myWidget; }
@@ -53,7 +53,7 @@ private:
   GtkTreeView *myView;
   GtkTreeSelection *mySelection;
 
-  LaunchableItems& myItems;
+  LauncherItems& myItems;
 };
 
 #endif
index c840352..fb4cbc2 100644 (file)
--- a/test1.cc
+++ b/test1.cc
@@ -19,9 +19,7 @@ int main(int argc, char *argv[]) {
   DIR *handle = opendir(appdir.c_str());
 
   if (handle != 0) {
-    std::map<std::string, LauncherItem *> apps;
-
-    SLAList sla_list(26);
+    LauncherItems apps;
 
     struct dirent *entry;
 
@@ -34,30 +32,23 @@ int main(int argc, char *argv[]) {
 
       if (item->load(appdir + "/" + entry->d_name)) {
         std::cout << "Loaded " << entry->d_name << std::endl;
-
-        apps[entry->d_name] = item;
-
-        sla_list.addItem(entry->d_name, item->getIcon(26), item->getName().c_str(), false);
       } else {
         std::cout << "Failed to load " << entry->d_name << std::endl;
-
-        delete item;
       }
+
+      apps.push_back(std::pair<std::string, LauncherItem *>(entry->d_name, item));
     }
 
     if (!apps.empty()) {
-      GtkDialog *dialog = GTK_DIALOG(gtk_dialog_new_with_buttons("My dialog", 0, (GtkDialogFlags)(GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, 0));
+      SLAList sla_list(26, apps);
+
+      GtkDialog *dialog = GTK_DIALOG(gtk_dialog_new_with_buttons("Launcher settings", 0, (GtkDialogFlags)(GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, 0));
 
       gtk_container_add(GTK_CONTAINER(dialog->vbox), sla_list.getWidget());
 
       if (gtk_dialog_run(dialog) == GTK_RESPONSE_ACCEPT) {
-        // print sla_list.items()
-        std::vector<std::pair<std::string, bool> > items;
-        
-        sla_list.collectItems(items);
-
-        for (std::vector<std::pair<std::string, bool> >::const_iterator it = items.begin(); it != items.end(); ++it) {
-          std::cout << it->first << (it->second ? " active" : " passive") << std::endl;
+        for (LauncherItems::const_iterator it = apps.begin(); it != apps.end(); ++it) {
+          std::cout << it->first << (it->second->isEnabled() ? " active" : " passive") << std::endl;
         }
       }