Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
- Loading branch information
1 parent
88ee530
commit a7fd6bd
Showing
3 changed files
with
159 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,33 +1,182 @@ | ||
#include <hildon/hildon-button.h> | ||
#include <libhildondesktop/libhildondesktop.h> | ||
#include <libconnui.h> | ||
#include <libintl.h> | ||
|
||
#include "config.h" | ||
|
||
#define _(x) dgettext(GETTEXT_PACKAGE, x) | ||
|
||
#define CONNUI_INTERNET_STATUS_MENU_ITEM_TYPE (connui_internet_status_menu_item_get_type()) | ||
#define CONNUI_INTERNET_STATUS_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONNUI_INTERNET_STATUS_MENU_ITEM_TYPE, ConnuiInternetStatusMenuItem)) | ||
|
||
typedef struct _ConnuiInternetStatusMenuItem ConnuiInternetStatusMenuItem; | ||
typedef struct _ConnuiInternetStatusMenuItemClass ConnuiInternetStatusMenuItemClass; | ||
typedef struct _ConnuiInternetStatusMenuItemPrivate ConnuiInternetStatusMenuItemPrivate; | ||
|
||
struct _ConnuiInternetStatusMenuItem | ||
{ | ||
HDStatusMenuItem parent; | ||
ConnuiInternetStatusMenuItemPrivate *priv; | ||
}; | ||
|
||
struct _ConnuiInternetStatusMenuItemClass | ||
{ | ||
HDStatusMenuItemClass parent; | ||
}; | ||
|
||
struct _ConnuiInternetStatusMenuItemPrivate | ||
{ | ||
GtkWidget *conn_icon; | ||
GtkWidget *button; | ||
struct pixbuf_cache *pixbuf_cache; | ||
struct pixbuf_anim *pixbuf_anim; | ||
struct network_entry *network; | ||
int connection_state; | ||
int is_active; | ||
int is_displayed; | ||
int signals_set; | ||
gboolean suspended; | ||
guint32 suspendcode; | ||
gint signal_strength; | ||
osso_context_t *osso_context; | ||
osso_display_state_t display_state; | ||
struct timespec tp; | ||
}; | ||
|
||
HD_DEFINE_PLUGIN_MODULE(ConnuiInternetStatusMenuItem, | ||
connui_internet_status_menu, | ||
connui_internet_status_menu_item, | ||
HD_TYPE_STATUS_MENU_ITEM) | ||
|
||
static void | ||
connui_internet_status_menu_class_finalize (ConnuiInternetStatusMenuItemClass *klass) | ||
connui_internet_status_menu_item_class_finalize(ConnuiInternetStatusMenuItemClass *klass) | ||
{ | ||
} | ||
|
||
static void | ||
connui_internet_status_menu_item_request_select_connection(GtkButton *button, | ||
gpointer user_data) | ||
{ | ||
// FIXME | ||
} | ||
|
||
static void | ||
_connui_internet_status_menu_item_inet_status_cb(int state, | ||
struct network_entry *entry, | ||
gpointer user_data) | ||
{ | ||
// FIXME | ||
} | ||
|
||
static void | ||
connui_internet_status_menu_item_set_active_conn_info(ConnuiInternetStatusMenuItem *self) | ||
{ | ||
// FIXME | ||
} | ||
|
||
static void | ||
connui_internet_status_menu_class_init (ConnuiInternetStatusMenuItemClass *klass) | ||
connui_internet_status_menu_item_parent_set_signal(GtkWidget *widget, | ||
GtkObject *old_parent, | ||
gpointer user_data) | ||
{ | ||
// FIXME | ||
} | ||
|
||
static void | ||
connui_internet_status_menu_init (ConnuiInternetStatusMenuItem *applet) | ||
connui_internet_status_menu_item_cellular_data_suspended_status_cb(gboolean suspended, | ||
guint32 suspendcode, | ||
gpointer user_data) | ||
{ | ||
ConnuiInternetStatusMenuItem *self = | ||
CONNUI_INTERNET_STATUS_MENU_ITEM(user_data); | ||
ConnuiInternetStatusMenuItemPrivate *priv = self->priv; | ||
|
||
g_return_if_fail(priv != NULL); | ||
|
||
priv->suspendcode = suspendcode; | ||
priv->suspended = suspended; | ||
|
||
connui_internet_status_menu_item_set_active_conn_info(self); | ||
} | ||
|
||
static void | ||
connui_internet_status_menu_item_display_cb(osso_display_state_t state, | ||
gpointer *user_data) | ||
{ | ||
|
||
ConnuiInternetStatusMenuItem *item = | ||
CONNUI_INTERNET_STATUS_MENU_ITEM(user_data); | ||
|
||
g_return_if_fail(item != NULL && item->priv != NULL); | ||
|
||
item->priv->display_state = state; | ||
|
||
if (state == OSSO_DISPLAY_OFF) | ||
{ | ||
connui_internet_status_menu_item_conn_strength_stop(item); | ||
if (item->priv->pixbuf_anim) | ||
connui_pixbuf_anim_stop(item->priv->pixbuf_anim); | ||
} | ||
else if (state == OSSO_DISPLAY_ON) | ||
{ | ||
connui_internet_status_menu_item_conn_strength_start(item); | ||
connui_internet_status_menu_item_start_anim(item); | ||
} | ||
} | ||
|
||
static void | ||
connui_internet_status_menu_item_class_init(ConnuiInternetStatusMenuItemClass *klass) | ||
{ | ||
g_type_class_add_private(klass, sizeof(ConnuiInternetStatusMenuItemPrivate)); | ||
} | ||
|
||
static void | ||
connui_internet_status_menu_item_init(ConnuiInternetStatusMenuItem *self) | ||
{ | ||
ConnuiInternetStatusMenuItemPrivate *priv = | ||
G_TYPE_INSTANCE_GET_PRIVATE(self, | ||
CONNUI_INTERNET_STATUS_MENU_ITEM_TYPE, | ||
ConnuiInternetStatusMenuItemPrivate); | ||
|
||
self->priv = priv; | ||
priv->pixbuf_cache = connui_pixbuf_cache_new(); | ||
priv->button = hildon_button_new(HILDON_SIZE_FINGER_HEIGHT, | ||
HILDON_BUTTON_ARRANGEMENT_VERTICAL); | ||
priv->conn_icon = gtk_image_new_from_file(NULL); | ||
|
||
hildon_button_set_style(HILDON_BUTTON(priv->button), | ||
HILDON_BUTTON_STYLE_PICKER); | ||
|
||
hildon_button_set_image(HILDON_BUTTON(priv->button), priv->conn_icon); | ||
|
||
hildon_button_set_title(HILDON_BUTTON(priv->button), | ||
_("stab_me_internet_connection")); | ||
hildon_button_set_alignment(HILDON_BUTTON(priv->button), 0.0, 0.0, 1.0, 1.0); | ||
g_signal_connect_data(G_OBJECT(priv->button), "clicked", | ||
(GCallback)connui_internet_status_menu_item_request_select_connection, | ||
self, NULL, G_CONNECT_AFTER); | ||
|
||
gtk_container_add(GTK_CONTAINER(self), priv->button); | ||
connui_internet_status_menu_item_set_active_conn_info(self); | ||
gtk_widget_show_all(GTK_WIDGET(self)); | ||
|
||
priv->tp.tv_sec = 0; | ||
/* FIXME - get application and version from autoconf or debian packagin */ | ||
priv->osso_context = osso_initialize("connui_internet_status_menu_item", "2.71+0m5", 1, 0);; | ||
priv->tp.tv_nsec = 0; | ||
|
||
osso_hw_set_display_event_cb( | ||
priv->osso_context, | ||
(osso_display_event_cb_f *)connui_internet_status_menu_item_display_cb, | ||
self); | ||
|
||
if (!connui_inetstate_status(_connui_internet_status_menu_item_inet_status_cb, self)) | ||
ULOG_ERR("inet status: cannot receive status updates"); | ||
|
||
if (!connui_cellular_data_suspended_status(connui_internet_status_menu_item_cellular_data_suspended_status_cb, self)) | ||
ULOG_ERR("inet status: cannot receive cellular data suspended updates"); | ||
|
||
g_signal_connect_data(G_OBJECT(self), "parent-set", | ||
G_CALLBACK(connui_internet_status_menu_item_parent_set_signal), | ||
self, NULL, 0); | ||
} |