Skip to content
Snippets Groups Projects
Commit 8b644438 authored by Alexandre Savard's avatar Alexandre Savard
Browse files

Merge branch 'master' into m_savard

parents 64a8b950 d1057e02
Branches
Tags
No related merge requests found
Showing
with 2948 additions and 2233 deletions
...@@ -18,7 +18,7 @@ Please report bugs at https://projects.savoirfairelinux.com/projects/sflphone/is ...@@ -18,7 +18,7 @@ Please report bugs at https://projects.savoirfairelinux.com/projects/sflphone/is
=head1 AUTHORS =head1 AUTHORS
B<sflphone-client-gnome> is developed in Montreal by Savoir-Faire Linux Inc. The active developers are Emmanuel Milou <emmanuel.milou@savoirfairelinux.com> and Yun Liu <yun.liu@savoirfairelinux.com>. B<sflphone-client-gnome> is developed in Montreal by Savoir-Faire Linux Inc.
This manual page was written by Emmanuel Milou <emmanuel.milou@savoirfairelinux.com>. This manual page was written by Emmanuel Milou <emmanuel.milou@savoirfairelinux.com>.
... ...
......
...@@ -24,11 +24,13 @@ sflphone_client_gnome_SOURCES = \ ...@@ -24,11 +24,13 @@ sflphone_client_gnome_SOURCES = \
sliders.c \ sliders.c \
statusicon.c \ statusicon.c \
codeclist.c \ codeclist.c \
reqaccount.c reqaccount.c \
shortcuts.c
noinst_HEADERS = actions.h sflnotify.h mainwindow.h dialpad.h codeclist.h \ noinst_HEADERS = actions.h sflnotify.h mainwindow.h dialpad.h codeclist.h \
reqaccount.h errors.h sflphone_const.h uimanager.h \ reqaccount.h errors.h sflphone_const.h uimanager.h \
accountlist.h sliders.h statusicon.h callable_obj.h conference_obj.h accountlist.h sliders.h statusicon.h callable_obj.h conference_obj.h \
shortcuts.h
sflphone_client_gnome_LDADD = $(DEPS_LIBS) $(NOTIFY_LIBS) $(SFLPHONEGTK_LIBS) $(LIBSEXY_LIBS) $(LOG4C) sflphone_client_gnome_LDADD = $(DEPS_LIBS) $(NOTIFY_LIBS) $(SFLPHONEGTK_LIBS) $(LIBSEXY_LIBS) $(LOG4C)
... ...
......
...@@ -4,6 +4,7 @@ noinst_LTLIBRARIES = libconfig.la ...@@ -4,6 +4,7 @@ noinst_LTLIBRARIES = libconfig.la
libconfig_la_SOURCES = \ libconfig_la_SOURCES = \
addressbook-config.c \ addressbook-config.c \
shortcuts-config.c \
assistant.c \ assistant.c \
preferencesdialog.c \ preferencesdialog.c \
accountlistconfigdialog.c \ accountlistconfigdialog.c \
... ...
......
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
#include <mainwindow.h> #include <mainwindow.h>
#include <audioconf.h> #include <audioconf.h>
#include <addressbook-config.h> #include <addressbook-config.h>
#include <shortcuts-config.h>
#include <hooks-config.h> #include <hooks-config.h>
#include <utils.h> #include <utils.h>
...@@ -309,6 +310,11 @@ show_preferences_dialog () ...@@ -309,6 +310,11 @@ show_preferences_dialog ()
_("Hooks"))); _("Hooks")));
gtk_notebook_page_num (GTK_NOTEBOOK(notebook), tab); gtk_notebook_page_num (GTK_NOTEBOOK(notebook), tab);
// Shortcuts tab
tab = create_shortcuts_settings();
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), tab, gtk_label_new(_("Shortcuts")));
gtk_notebook_page_num(GTK_NOTEBOOK(notebook), tab);
gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), 0); gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), 0);
result = gtk_dialog_run (dialog); result = gtk_dialog_run (dialog);
... ...
......
/*
* Copyright (C) 2010 Savoir-Faire Linux inc.
* Author: Julien Bonjean <julien.bonjean@savoirfairelinux.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include "shortcuts-config.h"
#include "shortcuts.h"
#include <gdk/gdkx.h>
GtkWidget*
create_shortcuts_settings()
{
GtkWidget *vbox, *result_frame, *window, *treeview, *scrolled_window, *table;
GtkListStore *store;
GtkTreeIter iter;
guint i = 0;
vbox = gtk_vbox_new(FALSE, 10);
gtk_container_set_border_width(GTK_CONTAINER(vbox), 10);
gnome_main_section_new(_("General"), &result_frame);
treeview = gtk_tree_view_new();
setup_tree_view(treeview);
store = gtk_list_store_new(COLUMNS, G_TYPE_STRING, G_TYPE_INT, G_TYPE_UINT);
Accelerator* list = shortcuts_get_list();
while (list[i].action != NULL)
{
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter, ACTION, list[i].action, MASK,
(gint) list[i].mask, VALUE, XKeycodeToKeysym(GDK_DISPLAY(),
list[i].value, 0), -1);
i++;
}
gtk_tree_view_set_model(GTK_TREE_VIEW (treeview), GTK_TREE_MODEL (store));
g_object_unref(store);
gtk_container_add(GTK_CONTAINER (result_frame), treeview);
gtk_box_pack_start(GTK_BOX(vbox), result_frame, FALSE, FALSE, 0);
gtk_widget_show_all(vbox);
return vbox;
}
/*
* Create a tree view with two columns. The first is an action and the
* second is a keyboard accelerator.
*/
static void
setup_tree_view(GtkWidget *treeview)
{
GtkCellRenderer *renderer;
GtkTreeViewColumn *column;
renderer = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes("Action", renderer, "text",
ACTION, NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW (treeview), column);
renderer = gtk_cell_renderer_accel_new();
g_object_set(renderer, "accel-mode", GTK_CELL_RENDERER_ACCEL_MODE_GTK,
"editable", TRUE, NULL);
column = gtk_tree_view_column_new_with_attributes("Shortcut", renderer,
"accel-mods", MASK, "accel-key", VALUE, NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW (treeview), column);
g_signal_connect (G_OBJECT (renderer), "accel_edited", G_CALLBACK (accel_edited), (gpointer) treeview);
}
static void
accel_edited(GtkCellRendererAccel *renderer, gchar *path, guint accel_key,
GdkModifierType mask, guint hardware_keycode, GtkTreeView *treeview)
{
GtkTreeModel *model;
GtkTreeIter iter;
// Update treeview
model = gtk_tree_view_get_model(treeview);
if (gtk_tree_model_get_iter_from_string(model, &iter, path))
gtk_list_store_set(GTK_LIST_STORE (model), &iter, MASK, (gint) mask, VALUE,
accel_key, -1);
gint code = XKeysymToKeycode(GDK_DISPLAY(), accel_key);
// Update GDK bindings
shortcuts_update_bindings(atoi(path), code);
}
/*
* Copyright (C) 2010 Savoir-Faire Linux inc.
* Author: Julien Bonjean <julien.bonjean@savoirfairelinux.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef _SHORTCUTS_CONFIG
#define _SHORTCUTS_CONFIG
#include <gtk/gtk.h>
#include <glib/gtypes.h>
#include "actions.h"
#include <utils.h>
G_BEGIN_DECLS
enum
{
ACTION = 0, MASK, VALUE, COLUMNS
};
GtkWidget*
create_shortcuts_settings();
static void
setup_tree_view(GtkWidget *treeview);
static void
accel_edited(GtkCellRendererAccel *renderer, gchar *path, guint accel_key,
GdkModifierType mask, guint hardware_keycode, GtkTreeView *treeview);
G_END_DECLS
#endif // _SHORTCUTS_CONFIG
...@@ -557,5 +557,12 @@ ...@@ -557,5 +557,12 @@
<arg type="as" name="list" direction="out"/> <arg type="as" name="list" direction="out"/>
</method> </method>
<method name="getShortcuts">
<arg type="a{si}" name="shortcutsMap" direction="out"/>
</method>
<method name="setShortcuts">
<arg type="a{si}" name="shortcutsMap" direction="in"/>
</method>
</interface> </interface>
</node> </node>
This diff is collapsed.
...@@ -606,8 +606,10 @@ guint dbus_get_window_position_y (void); ...@@ -606,8 +606,10 @@ guint dbus_get_window_position_y (void);
void dbus_set_window_position_x (const guint posx); void dbus_set_window_position_x (const guint posx);
void dbus_set_window_position_y (const guint posy); void dbus_set_window_position_y (const guint posy);
GHashTable* dbus_get_shortcuts(void);
void dbus_set_shortcuts(GHashTable * shortcuts);
void dbus_enable_status_icon (const gchar*); void dbus_enable_status_icon (const gchar*);
gchar* dbus_is_status_icon_enabled (void); gchar* dbus_is_status_icon_enabled (void);
#endif #endif
<?xml version="1.0" ?>
<node name="/org/sflphone/SFLphone">
<interface name="org.sflphone.SFLphone.ContactManager">
<!-- Contacts related methods -->
<!-- Called by the client to get all saved contacts -->
<method name="getContacts">
<arg type="s" name="accountID" direction="in"/>
<arg type="a{ss}" name="details" direction="out"/>
</method>
<!-- Called by the client to save all local contacts -->
<method name="setContacts">
<arg type="s" name="accountID" direction="in"/>
<arg type="a{ss}" name="details" direction="in"/>
</method>
<!-- /////////////////////// -->
<!-- Presence related methods -->
<!-- Called by the client to set its new presence status -->
<method name="setPresence">
<arg type="s" name="accountID" direction="in"/>
<arg type="s" name="presence" direction="in"/>
<arg type="s" name="additionalInfo" direction="in"/>
</method>
<!-- Called by the daemon when a contact presence changes -->
<method name="setContactPresence">
<arg type="s" name="accountID" direction="in"/>
<arg type="s" name="presence" direction="in"/>
<arg type="s" name="additionalInfo" direction="in"/>
</method>
</interface>
</node>
...@@ -29,6 +29,8 @@ ...@@ -29,6 +29,8 @@
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include <stdlib.h> #include <stdlib.h>
#include "shortcuts.h"
/** /**
* Stop logging engine * Stop logging engine
*/ */
...@@ -121,6 +123,8 @@ There is NO WARRANTY, to the extent permitted by law.\n\n"); ...@@ -121,6 +123,8 @@ There is NO WARRANTY, to the extent permitted by law.\n\n");
// Update the GUI // Update the GUI
update_actions (); update_actions ();
shortcuts_initialize_bindings();
/* start the main loop */ /* start the main loop */
gtk_main (); gtk_main ();
} }
...@@ -128,6 +132,8 @@ There is NO WARRANTY, to the extent permitted by law.\n\n"); ...@@ -128,6 +132,8 @@ There is NO WARRANTY, to the extent permitted by law.\n\n");
// Cleanly stop logging // Cleanly stop logging
shutdown_logging (); shutdown_logging ();
shortcuts_destroy_bindings();
return 0; return 0;
} }
... ...
......
/*
* Copyright (C) 2010 Savoir-Faire Linux inc.
* Author: Julien Bonjean <julien.bonjean@savoirfairelinux.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <string.h>
#include <stdlib.h>
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
#include <X11/Xlib.h>
#include <X11/XF86keysym.h>
#include <gdk/gdkx.h>
#include <dbus/dbus-glib.h>
#include "shortcuts.h"
#include "mainwindow.h"
#include "callable_obj.h"
#include "sflphone_const.h"
#include "dbus.h"
// used to store accelerator config
static Accelerator* accelerators_list;
// used to store config (for dbus calls)
static GHashTable* shortcutsMap;
/*
* Callbacks
*/
static void
pick_up_callback()
{
sflphone_pick_up();
}
static void
hang_up_callback()
{
sflphone_hang_up();
}
static void
popup_window_callback()
{
gtk_widget_hide(GTK_WIDGET(get_main_window()));
gtk_widget_show(GTK_WIDGET(get_main_window()));
gtk_window_move (GTK_WINDOW (get_main_window ()), dbus_get_window_position_x (), dbus_get_window_position_y ());
}
static void
default_callback()
{
ERROR("Missing shortcut callback");
}
/*
* return callback corresponding to a specific action
*/
static void*
get_action_callback(const gchar* action)
{
if(strcmp(action, "pick_up") == 0)
return pick_up_callback;
if(strcmp(action, "hang_up") == 0)
return hang_up_callback;
if(strcmp(action, "popup_window") == 0)
return popup_window_callback;
return default_callback;
}
/*
* Handle bindings
*/
/*
* Remove all existing bindings
*/
static void
remove_bindings()
{
GdkDisplay *display;
GdkScreen *screen;
GdkWindow *root;
display = gdk_display_get_default();
int i = 0;
int j = 0;
while (accelerators_list[i].action != NULL)
{
if (accelerators_list[i].value != 0)
{
for (j = 0; j < gdk_display_get_n_screens(display); j++)
{
screen = gdk_display_get_screen(display, j);
if (screen != NULL)
{
root = gdk_screen_get_root_window(screen);
ungrab_key(accelerators_list[i].value, root);
gdk_window_remove_filter(root, filter_keys, NULL);
}
}
}
i++;
}
}
/*
* Create all bindings, using stored configuration
*/
static void
create_bindings()
{
GdkDisplay *display;
GdkScreen *screen;
GdkWindow *root;
display = gdk_display_get_default();
int i = 0;
int j = 0;
while (accelerators_list[i].action != NULL)
{
if (accelerators_list[i].value != 0)
{
// update value in hashtable (used for dbus calls)
g_hash_table_replace(shortcutsMap, g_strdup(accelerators_list[i].action),
GINT_TO_POINTER(accelerators_list[i].value));
// updated GDK bindings
for (j = 0; j < gdk_display_get_n_screens(display); j++)
{
screen = gdk_display_get_screen(display, j);
if (screen != NULL)
{
root = gdk_screen_get_root_window(screen);
grab_key(accelerators_list[i].value, root);
gdk_window_add_filter(root, filter_keys, NULL);
}
}
}
i++;
}
}
/*
* Initialize a specific binding
*/
static void
initialize_binding(const gchar* action, const guint code)
{
//initialize_shortcuts_keys();
int index = 0;
while (accelerators_list[index].action != NULL)
{
if (strcmp(action, accelerators_list[index].action) == 0)
{
break;
}
index++;
}
if (accelerators_list[index].action == NULL)
{
ERROR("Should not happen: cannot find corresponding action");
return;
}
// update config value
accelerators_list[index].value = code;
// update bindings
create_bindings();
}
/*
* Prepare accelerators list
*/
static void
initialize_accelerators_list()
{
GList* shortcutsKeys = g_hash_table_get_keys(shortcutsMap);
accelerators_list = (Accelerator*)malloc((g_list_length(shortcutsKeys) + 1) *sizeof(Accelerator));
GList* shortcutsKeysElement;
int index = 0;
for (shortcutsKeysElement = shortcutsKeys; shortcutsKeysElement; shortcutsKeysElement
= shortcutsKeysElement->next)
{
gchar* action = shortcutsKeysElement->data;
accelerators_list[index].action = g_strdup(action);
accelerators_list[index].callback = get_action_callback(action);
accelerators_list[index].mask = 0;
accelerators_list[index].value = 0;
index++;
}
// last element must be null
accelerators_list[index].action = 0;
accelerators_list[index].callback = 0;
accelerators_list[index].mask = 0;
accelerators_list[index].value = 0;
}
/*
* "Public" functions
*/
/*
* Update current bindings with a new value
*/
void
shortcuts_update_bindings(const guint index, const guint code)
{
// first remove all existing bindings
remove_bindings();
// store new value
accelerators_list[index].value = code;
// recreate all bindings
create_bindings();
// update configuration
dbus_set_shortcuts(shortcutsMap);
}
/*
* Initialize bindings with configuration retrieved from dbus
*/
void
shortcuts_initialize_bindings()
{
// get shortcuts stored in config through dbus
shortcutsMap = dbus_get_shortcuts();
// initialize list of keys
initialize_accelerators_list();
// iterate through keys to initialize bindings
GList* shortcutsKeys = g_hash_table_get_keys(shortcutsMap);
GList* shortcutsKeysElement;
for (shortcutsKeysElement = shortcutsKeys; shortcutsKeysElement; shortcutsKeysElement
= shortcutsKeysElement->next)
{
gchar* key = shortcutsKeysElement->data;
int shortcut = (size_t) g_hash_table_lookup(shortcutsMap, key);
if(shortcut != 0)
initialize_binding(key, shortcut);
}
}
/*
* Initialize bindings with configuration retrieved from dbus
*/
void
shortcuts_destroy_bindings()
{
// remove bindings
remove_bindings();
// free pointers
int index = 0;
while (accelerators_list[index].action != NULL)
{
g_free(accelerators_list[index].action);
index++;
}
free(accelerators_list);
}
Accelerator*
shortcuts_get_list()
{
return accelerators_list;
}
/*
* XLib functions
*/
/*
* filter used when an event is catched
*/
static GdkFilterReturn
filter_keys(GdkXEvent *xevent, GdkEvent *event, gpointer data)
{
XEvent *xev;
XKeyEvent *key;
xev = (XEvent *) xevent;
if (xev->type != KeyPress)
{
return GDK_FILTER_CONTINUE;
}
key = (XKeyEvent *) xevent;
// try to find corresponding action
int i = 0;
while (accelerators_list[i].action != NULL)
{
if (accelerators_list[i].value == key->keycode)
{
DEBUG("catched key for action: %s (%d)", accelerators_list[i].action,
accelerators_list[i].value);
// call associated callback function
accelerators_list[i].callback();
return GDK_FILTER_REMOVE;
}
i++;
}
DEBUG("Should not be reached :(\n");
return GDK_FILTER_CONTINUE;
}
/*
* Remove key "catcher" from GDK layer
*/
static void
ungrab_key(int key_code, GdkWindow *root)
{
gdk_error_trap_push();
XUngrabKey(GDK_DISPLAY(), key_code, 0, GDK_WINDOW_XID(root));
XUngrabKey(GDK_DISPLAY(), key_code, Mod2Mask, GDK_WINDOW_XID(root));
XUngrabKey(GDK_DISPLAY(), key_code, Mod5Mask, GDK_WINDOW_XID(root));
XUngrabKey(GDK_DISPLAY(), key_code, LockMask, GDK_WINDOW_XID(root));
XUngrabKey(GDK_DISPLAY(), key_code, Mod2Mask | Mod5Mask, GDK_WINDOW_XID(root));
XUngrabKey(GDK_DISPLAY(), key_code, Mod2Mask | LockMask, GDK_WINDOW_XID(root));
XUngrabKey(GDK_DISPLAY(), key_code, Mod5Mask | LockMask, GDK_WINDOW_XID(root));
XUngrabKey(GDK_DISPLAY(), key_code, Mod2Mask | Mod5Mask | LockMask,
GDK_WINDOW_XID(root));
gdk_flush();
if (gdk_error_trap_pop())
{
ERROR("Error ungrabbing key");
}
}
/*
* Add key "catcher" to GDK layer
*/
static void
grab_key(int key_code, GdkWindow *root)
{
gdk_error_trap_push();
XGrabKey(GDK_DISPLAY(), key_code, 0, GDK_WINDOW_XID(root), True,
GrabModeAsync, GrabModeAsync);
XGrabKey(GDK_DISPLAY(), key_code, Mod2Mask, GDK_WINDOW_XID(root), True,
GrabModeAsync, GrabModeAsync);
XGrabKey(GDK_DISPLAY(), key_code, Mod5Mask, GDK_WINDOW_XID(root), True,
GrabModeAsync, GrabModeAsync);
XGrabKey(GDK_DISPLAY(), key_code, LockMask, GDK_WINDOW_XID(root), True,
GrabModeAsync, GrabModeAsync);
XGrabKey(GDK_DISPLAY(), key_code, Mod2Mask | Mod5Mask, GDK_WINDOW_XID(root),
True, GrabModeAsync, GrabModeAsync);
XGrabKey(GDK_DISPLAY(), key_code, Mod2Mask | LockMask, GDK_WINDOW_XID(root),
True, GrabModeAsync, GrabModeAsync);
XGrabKey(GDK_DISPLAY(), key_code, Mod5Mask | LockMask, GDK_WINDOW_XID(root),
True, GrabModeAsync, GrabModeAsync);
XGrabKey(GDK_DISPLAY(), key_code, Mod2Mask | Mod5Mask | LockMask,
GDK_WINDOW_XID(root), True, GrabModeAsync, GrabModeAsync);
gdk_flush();
if (gdk_error_trap_pop())
{
ERROR("Error grabbing key");
}
}
/*
* Copyright (C) 2010 Savoir-Faire Linux inc.
* Author: Julien Bonjean <julien.bonjean@savoirfairelinux.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef SHORTCUTS_H_
#define SHORTCUTS_H_
typedef struct
{
gchar *action;
GdkModifierType mask;
guint value;
void
(*callback)(void);
} Accelerator;
static void
grab_key(int key_code, GdkWindow *root);
static void
ungrab_key(int key_code, GdkWindow *root);
static GdkFilterReturn
filter_keys(GdkXEvent *xevent, GdkEvent *event, gpointer data);
static void
remove_bindings();
static void
create_bindings();
static void
pick_up_callback();
static void
hang_up_callback();
static void
initialize_binding(const gchar* action, const guint code);
static void
initialize_shortcuts_keys();
static void*
get_action_callback(const gchar* action);
/*
* "Public" functions
*/
void
shortcuts_initialize_bindings();
void
shortcuts_update_bindings(const guint index, const guint code);
void
shortcuts_destroy_bindings();
Accelerator*
shortcuts_get_list();
#endif /* SHORTCUTS_H_ */
...@@ -43,6 +43,9 @@ ...@@ -43,6 +43,9 @@
</tool> </tool>
</toolChain> </toolChain>
</folderInfo> </folderInfo>
<sourceEntries>
<entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name=""/>
</sourceEntries>
</configuration> </configuration>
</storageModule> </storageModule>
<storageModule moduleId="scannerConfiguration"> <storageModule moduleId="scannerConfiguration">
... ...
......
#!/bin/bash
#####################################################
# File Name: autogen.sh
#
# Purpose :
#
# Author: Julien Bonjean (julien@bonjean.info)
#
# Creation Date: 2009-05-26
# Last Modified: 2009-06-01 18:25:28 -0400
#####################################################
if [ -e /usr/share/misc/config.guess ]; then
rm -f config.sub config.guess
ln -s /usr/share/misc/config.sub .
ln -s /usr/share/misc/config.guess .
elif [ -e /usr/lib/rpm/config.guess ]; then
rm -f config.sub config.guess
ln -s /usr/lib/rpm/config.sub .
ln -s /usr/lib/rpm/config.guess .
else
aclocal --force
automake --add-missing --force-missing --copy
fi
exit 0
...@@ -557,5 +557,12 @@ ...@@ -557,5 +557,12 @@
<arg type="as" name="list" direction="out"/> <arg type="as" name="list" direction="out"/>
</method> </method>
<method name="getShortcuts">
<arg type="a{si}" name="shortcutsMap" direction="out"/>
</method>
<method name="setShortcuts">
<arg type="a{si}" name="shortcutsMap" direction="in"/>
</method>
</interface> </interface>
</node> </node>
This diff is collapsed.
...@@ -37,6 +37,9 @@ public: ...@@ -37,6 +37,9 @@ public:
ConfigurationManager(DBus::Connection& connection); ConfigurationManager(DBus::Connection& connection);
static const char* SERVER_PATH; static const char* SERVER_PATH;
private:
std::vector<std::string> shortcutsKeys;
public: public:
std::map< std::string, std::string > getAccountDetails( const std::string& accountID ); std::map< std::string, std::string > getAccountDetails( const std::string& accountID );
...@@ -146,6 +149,9 @@ public: ...@@ -146,6 +149,9 @@ public:
std::vector<std::string> getAllIpInterface(void); std::vector<std::string> getAllIpInterface(void);
std::vector<std::string> getAllIpInterfaceByName(void); std::vector<std::string> getAllIpInterfaceByName(void);
std::map< std::string, int32_t > getShortcuts ();
void setShortcuts (const std::map< std::string, int32_t >& shortcutsMap);
}; };
... ...
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment