From e14b9b8b700377082d51d4ae059db8bd0d619d31 Mon Sep 17 00:00:00 2001 From: mishas Date: Sat, 23 Dec 2006 08:20:47 +0000 Subject: [PATCH] Moved "enabled" functionality into LauncherItem * 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 | 11 +---------- launchable-item.h | 27 +-------------------------- launcher-item.h | 15 ++++++++++++--- simple-launcher.cc | 10 +++++----- sla-list.cc | 25 ++++++++++++------------- sla-list.h | 6 +++--- test1.cc | 25 ++++++++----------------- 7 files changed, 42 insertions(+), 77 deletions(-) diff --git a/launchable-item.cc b/launchable-item.cc index 71aab95..b8cae0a 100644 --- a/launchable-item.cc +++ b/launchable-item.cc @@ -17,17 +17,8 @@ #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 diff --git a/launchable-item.h b/launchable-item.h index 13afb72..4619d14 100644 --- a/launchable-item.h +++ b/launchable-item.h @@ -18,40 +18,15 @@ #ifndef __LAUNCHABLE_ITEM_H__ #define __LAUNCHABLE_ITEM_H__ -#include -#include - #include #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 > LaunchableItems; - #endif // vim:ts=2:sw=2:et diff --git a/launcher-item.h b/launcher-item.h index 97e6c64..0d32405 100644 --- a/launcher-item.h +++ b/launcher-item.h @@ -18,17 +18,16 @@ #ifndef __LAUNCHER_ITEM_H__ #define __LAUNCHER_ITEM_H__ +#include #include #include #include -#include - 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 > LauncherItems; + #endif // vim:ts=2:sw=2:et diff --git a/simple-launcher.cc b/simple-launcher.cc index 7b72077..82eacac 100644 --- a/simple-launcher.cc +++ b/simple-launcher.cc @@ -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(ourFiles[i], new LaunchableItem(item, true))); + myItems.push_back(std::pair(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); diff --git a/sla-list.cc b/sla-list.cc index e63e918..7022211 100644 --- a/sla-list.cc +++ b/sla-list.cc @@ -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%s", 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(); } } diff --git a/sla-list.h b/sla-list.h index 77bc438..193027d 100644 --- a/sla-list.h +++ b/sla-list.h @@ -23,11 +23,11 @@ #include #include -#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 diff --git a/test1.cc b/test1.cc index c840352..fb4cbc2 100644 --- 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 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(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 > items; - - sla_list.collectItems(items); - - for (std::vector >::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; } } -- 1.7.9.5