diff --git a/dalston/Makefile.am b/dalston/Makefile.am index e3bc4a4..2d431fd 100644 --- a/dalston/Makefile.am +++ b/dalston/Makefile.am @@ -18,7 +18,11 @@ libdalston_la_SOURCES = dalston-battery-monitor.c \ dalston-volume-applet.c \ dalston-volume-applet.h \ dalston-button-monitor.c \ - dalston-button-monitor.h + dalston-button-monitor.h \ + gpm-popup-window.c \ + gpm-popup-window.h \ + dalston-hal-key-monitor.c \ + dalston-hal-key-monitor.h libdalston_la_CFLAGS = -I$(top_srcdir) \ $(DBUS_GLIB_CFLAGS) \ diff --git a/dalston/dalston-brightness-manager.c b/dalston/dalston-brightness-manager.c index beecbfe..9a98270 100644 --- a/dalston/dalston-brightness-manager.c +++ b/dalston/dalston-brightness-manager.c @@ -356,7 +356,7 @@ dalston_brightness_manager_new (void) return g_object_new (DALSTON_TYPE_BRIGHTNESS_MANAGER, NULL); } -static void +void dalston_brightness_manager_get_brightness (DalstonBrightnessManager *manager) { DalstonBrightnessManagerPrivate *priv = GET_PRIVATE (manager); @@ -404,6 +404,14 @@ dalston_brightness_manager_start_monitoring (DalstonBrightnessManager *manager) dalston_brightness_manager_get_brightness (manager); } +gboolean +dalston_brightness_manager_is_active (DalstonBrightnessManager *manager) +{ + DalstonBrightnessManagerPrivate *priv = GET_PRIVATE (manager); + + return priv->monitoring_timeout != 0; +} + void dalston_brightness_manager_stop_monitoring (DalstonBrightnessManager *manager) { diff --git a/dalston/dalston-brightness-manager.h b/dalston/dalston-brightness-manager.h index 432e196..ea305c4 100644 --- a/dalston/dalston-brightness-manager.h +++ b/dalston/dalston-brightness-manager.h @@ -63,6 +63,8 @@ void dalston_brightness_manager_stop_monitoring (DalstonBrightnessManager *manag void dalston_brightness_manager_set_brightness (DalstonBrightnessManager *manager, gint value); gboolean dalston_brightness_manager_is_controllable (DalstonBrightnessManager *manager); +void dalston_brightness_manager_get_brightness (DalstonBrightnessManager *manager); +gboolean dalston_brightness_manager_is_active (DalstonBrightnessManager *manager); G_END_DECLS diff --git a/dalston/dalston-brightness-slider.c b/dalston/dalston-brightness-slider.c index 433743f..cf60b3d 100644 --- a/dalston/dalston-brightness-slider.c +++ b/dalston/dalston-brightness-slider.c @@ -22,6 +22,8 @@ #include "dalston-brightness-slider.h" #include +#include "gpm-popup-window.h" +#include "dalston-hal-key-monitor.h" #include @@ -34,9 +36,10 @@ typedef struct _DalstonBrightnessSliderPrivate DalstonBrightnessSliderPrivate; struct _DalstonBrightnessSliderPrivate { DalstonBrightnessManager *manager; - gint num_levels; gint cur_value; + GpmPopupWindow *popup; + DalstonHalKeyMonitor *monitor; }; enum @@ -117,14 +120,21 @@ dalston_brightness_slider_update (DalstonBrightnessSlider *slider) if (priv->num_levels > 0) { + float percent = (float) priv->cur_value / ((float) priv->num_levels -1); + g_signal_handlers_block_by_func (slider, _range_value_changed_cb, slider); gtk_range_set_value (GTK_RANGE (slider), priv->cur_value); gtk_range_set_fill_level (GTK_RANGE (slider), (gdouble)priv->cur_value); + g_signal_handlers_unblock_by_func (slider, _range_value_changed_cb, slider); + if (!dalston_brightness_manager_is_active (priv->manager)) { + gtk_widget_show ((GtkWidget *)priv->popup); + gpm_popup_window_set_value (priv->popup, percent); + } } } @@ -263,10 +273,17 @@ dalston_brightness_slider_init (DalstonBrightnessSlider *self) GtkWidget * dalston_brightness_slider_new (DalstonBrightnessManager *manager) { - return g_object_new (DALSTON_TYPE_BRIGHTNESS_SLIDER, + DalstonBrightnessSlider *slider = g_object_new (DALSTON_TYPE_BRIGHTNESS_SLIDER, "manager", manager, NULL); + + DalstonBrightnessSliderPrivate *priv = GET_PRIVATE (slider); + + priv->popup = (GpmPopupWindow *)gpm_popup_window_new (manager); + priv->monitor = dalston_hal_key_monitor_new (priv->popup); + + return (GtkWidget *)slider; } diff --git a/data/Makefile.am b/data/Makefile.am index 10e6248..b549a88 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -3,4 +3,7 @@ SUBDIRS = icons autostartdir = $(sysconfdir)/xdg/autostart autostart_DATA = dalston-volume-applet.desktop dalston-power-applet.desktop -EXTRA_DIST = $(autostart_DATA) +pkgdata_DATA = gpm-feedback-widget.ui + +EXTRA_DIST = $(autostart_DATA) \ + $(pkgdata_DATA) diff --git a/data/icons/Makefile.am b/data/icons/Makefile.am index 7c2a0eb..23e3f8a 100644 --- a/data/icons/Makefile.am +++ b/data/icons/Makefile.am @@ -1,4 +1,7 @@ iconsdir = $(pkgdatadir)/icons +themedir = $(pkgdatadir)/icons/hicolor +size = scalable +context = status icons_DATA = \ dalston-power-25.png \ @@ -29,4 +32,8 @@ icons_DATA = \ dalston-volume-applet-3-active.png \ dalston-volume-applet-3-normal.png +ticonsdir = $(themedir)/$(size)/$(context) + +ticons_DATA = gpm-brightness-lcd.svg + EXTRA_DIST = $(icons_DATA)