#include "ui_pref.h"
static GtkMenuItem **sensor_menu_items;
+static GtkWidget *main_window;
+static int appindicator_supported = 1;
static void cb_menu_show(GtkMenuItem *mi, gpointer data)
{
ui_psensor_quit(data);
}
-static void
-cb_menu_preferences(GtkMenuItem *mi, gpointer data)
+static void cb_menu_preferences(GtkMenuItem *mi, gpointer data)
{
#ifdef HAVE_APPINDICATOR_029
gdk_threads_enter();
update_sensor_menu_items(ui->sensors);
}
+static GtkStatusIcon *unity_fallback(AppIndicator *indicator)
+{
+ log_printf(LOG_DEBUG, "ui_appindicator#unity_fallback");
+
+ gtk_widget_show_all(main_window);
+
+ appindicator_supported = 0;
+
+ return NULL;
+}
+
+static void unity_unfallback(AppIndicator *indicator,
+ GtkStatusIcon *status_icon)
+{
+ log_printf(LOG_DEBUG, "ui_appindicator#unity_unfallback");
+
+ appindicator_supported = 1;
+}
+
+
void ui_appindicator_init(struct ui_psensor *ui)
{
- GtkWidget *indicatormenu;
+ GtkWidget *menu;
+ AppIndicator *indicator;
+
+ main_window = ui->main_window;
+
+ indicator = app_indicator_new
+ ("psensor",
+ "psensor_normal",
+ APP_INDICATOR_CATEGORY_APPLICATION_STATUS);
+
+ APP_INDICATOR_GET_CLASS(indicator)->fallback = unity_fallback;
+ APP_INDICATOR_GET_CLASS(indicator)->unfallback = unity_unfallback;
- ui->indicator
- = app_indicator_new("psensor",
- "psensor",
- APP_INDICATOR_CATEGORY_APPLICATION_STATUS);
+ app_indicator_set_status(indicator, APP_INDICATOR_STATUS_ACTIVE);
+ app_indicator_set_attention_icon(indicator, "psensor_hot");
- app_indicator_set_status(ui->indicator, APP_INDICATOR_STATUS_ACTIVE);
- app_indicator_set_attention_icon(ui->indicator, "psensor_hot");
+ menu = get_menu(ui);
+ app_indicator_set_menu(indicator, GTK_MENU(menu));
- indicatormenu = get_menu(ui);
+ ui->indicator = indicator;
- gtk_widget_show_all(indicatormenu);
+ gtk_widget_show_all(menu);
+}
- app_indicator_set_menu(ui->indicator, GTK_MENU(indicatormenu));
+int is_appindicator_supported()
+{
+ return appindicator_supported;
+}
+
+void ui_appindicator_cleanup()
+{
+ /* TODO: cleanup menu items. */
}