#include "launcher-item.h"
#include "sla-list.h"
+#include "launchable-item.h"
#define SL_APPLET_DBUS_NAME "simple-launcher"
#define SL_APPLET_VERSION "0.0"
#define SL_APPLET_BORDER_SIZE 14
#define SL_APPLET_CANVAS_SIZE (SL_APPLET_BORDER_SIZE+SL_APPLET_BORDER_SIZE)
-class LaunchableItem {
-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; }
-
- bool activate(osso_context_t *);
-
-private:
- LauncherItem *myItem;
- bool myEnabled;
-};
-
class SimpleLauncherApplet {
public:
SimpleLauncherApplet();
GtkWidget *myWidget;
GtkWindow *myParent;
- typedef std::vector<std::pair<std::string, LaunchableItem *> > ItemList;
- ItemList myItems;
+ LauncherItems myItems;
static char *ourFiles[];
};
}
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;
}
}
SimpleLauncherApplet::~SimpleLauncherApplet() {
- for (ItemList::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;
GtkToolbar *toolbar = GTK_TOOLBAR(gtk_toolbar_new());
- for (ItemList::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);
}
void SimpleLauncherApplet::runDialog() {
- SLAList list(SL_APPLET_ICON_SIZE);
-
- for (ItemList::const_iterator item = myItems.begin(); item != myItems.end(); ++item) {
- list.addItem(item->first.c_str(), item->second->getIcon(SL_APPLET_ICON_SIZE), item->second->getComment().c_str(), item->second->isEnabled());
- }
+ SLAList list(SL_APPLET_ICON_SIZE, myItems);
GtkDialog *dialog = GTK_DIALOG(gtk_dialog_new_with_buttons("Launcher Settings", myParent, (GtkDialogFlags)(GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), "OK", GTK_RESPONSE_OK, "Cancel", GTK_RESPONSE_CANCEL, 0));
}
}
-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;
-}
-
// vim:ts=2:sw=2:et