#include "ui_pref.h"
#include "ui_sensorpref.h"
#include "ui_sensorlist.h"
+#include "ui_appindicator.h"
static gboolean
on_delete_event_cb(GtkWidget *widget, GdkEvent *event, gpointer data)
{
+ struct ui_psensor *ui = data;
#if defined(HAVE_APPINDICATOR) || defined(HAVE_APPINDICATOR_029)
- gtk_widget_hide(((struct ui_psensor *)data)->main_window);
+ if (is_appindicator_supported())
+ gtk_widget_hide(ui->main_window);
+ else
+ ui_psensor_quit(ui);
#else
- ui_psensor_quit();
+ ui_psensor_quit(ui);
#endif
return TRUE;
#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)
{
update_sensor_menu_items(ui->sensors);
}
+static GtkStatusIcon* unity_fallback(AppIndicator *indicator)
+{
+ gtk_widget_show_all(main_window);
+
+ appindicator_supported = 0;
+
+ return NULL;
+}
+
+static void unity_unfallback(AppIndicator *indicator,
+ GtkStatusIcon *status_icon)
+{
+ appindicator_supported = 1;
+}
+
+
void ui_appindicator_init(struct ui_psensor *ui)
{
GtkWidget *indicatormenu;
+ main_window = ui->main_window;
+
ui->indicator
= app_indicator_new("psensor",
"psensor",
APP_INDICATOR_CATEGORY_APPLICATION_STATUS);
+ APP_INDICATOR_GET_CLASS(ui->indicator)->fallback = unity_fallback;
+ APP_INDICATOR_GET_CLASS(ui->indicator)->unfallback = unity_unfallback;
+
app_indicator_set_status(ui->indicator, APP_INDICATOR_STATUS_ACTIVE);
app_indicator_set_attention_icon(ui->indicator, "psensor_hot");
app_indicator_set_menu(ui->indicator, GTK_MENU(indicatormenu));
}
+
+int is_appindicator_supported()
+{
+ return appindicator_supported;
+}