aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorConor Curran <conor.curran@canonical.com>2011-03-09 18:01:58 +0000
committerConor Curran <conor.curran@canonical.com>2011-03-09 18:01:58 +0000
commit83554ba72ea7d455f9261355e37d4a5501577364 (patch)
tree268b1a7452bfd8bcff48eadc9ad1f72c456cd542
parentc552d82ff707e86eba876aaa8fda86e1596856a0 (diff)
parent7169ee044ae4bded4df95e4c3fb92b1dfa99b74b (diff)
downloadayatana-indicator-sound-83554ba72ea7d455f9261355e37d4a5501577364.tar.gz
ayatana-indicator-sound-83554ba72ea7d455f9261355e37d4a5501577364.tar.bz2
ayatana-indicator-sound-83554ba72ea7d455f9261355e37d4a5501577364.zip
merge the rewind/forwind work plus some refactoring and voip icon names
-rw-r--r--src/common-defs.h14
-rw-r--r--src/indicator-sound.c12
-rw-r--r--src/mpris2-controller.vala33
-rw-r--r--src/mpris2-interfaces.vala1
-rw-r--r--src/transport-menu-item.vala15
-rw-r--r--src/transport-widget.c199
-rw-r--r--src/transport-widget.h25
-rw-r--r--src/voip-input-widget.c4
-rw-r--r--vapi/common-defs.vapi26
9 files changed, 209 insertions, 120 deletions
diff --git a/src/common-defs.h b/src/common-defs.h
index 2184a48..da504de 100644
--- a/src/common-defs.h
+++ b/src/common-defs.h
@@ -31,6 +31,20 @@ typedef enum {
AVAILABLE
}SoundState;
+typedef enum {
+ TRANSPORT_ACTION_PREVIOUS,
+ TRANSPORT_ACTION_PLAY_PAUSE,
+ TRANSPORT_ACTION_NEXT,
+ TRANSPORT_ACTION_REWIND,
+ TRANSPORT_ACTION_FORWIND,
+ TRANSPORT_ACTION_NO_ACTION
+}TransportAction;
+
+typedef enum {
+ TRANSPORT_STATE_PLAYING,
+ TRANSPORT_STATE_PAUSED
+}TransportState;
+
#define NOT_ACTIVE -1
#define DBUSMENU_PROPERTY_EMPTY -1
diff --git a/src/indicator-sound.c b/src/indicator-sound.c
index 6e1acc9..7851e8a 100644
--- a/src/indicator-sound.c
+++ b/src/indicator-sound.c
@@ -532,17 +532,17 @@ key_press_cb(GtkWidget* widget, GdkEventKey* event, gpointer data)
switch (event->keyval) {
case GDK_Right:
transport_widget_react_to_key_press_event ( transport_widget,
- TRANSPORT_NEXT );
+ TRANSPORT_ACTION_NEXT );
digested = TRUE;
break;
case GDK_Left:
transport_widget_react_to_key_press_event ( transport_widget,
- TRANSPORT_PREVIOUS );
+ TRANSPORT_ACTION_PREVIOUS );
digested = TRUE;
break;
case GDK_KEY_space:
transport_widget_react_to_key_press_event ( transport_widget,
- TRANSPORT_PLAY_PAUSE );
+ TRANSPORT_ACTION_PLAY_PAUSE );
digested = TRUE;
break;
case GDK_Up:
@@ -587,17 +587,17 @@ key_release_cb(GtkWidget* widget, GdkEventKey* event, gpointer data)
switch (event->keyval) {
case GDK_Right:
transport_widget_react_to_key_release_event ( transport_widget,
- TRANSPORT_NEXT );
+ TRANSPORT_ACTION_NEXT );
digested = TRUE;
break;
case GDK_Left:
transport_widget_react_to_key_release_event ( transport_widget,
- TRANSPORT_PREVIOUS );
+ TRANSPORT_ACTION_PREVIOUS );
digested = TRUE;
break;
case GDK_KEY_space:
transport_widget_react_to_key_release_event ( transport_widget,
- TRANSPORT_PLAY_PAUSE );
+ TRANSPORT_ACTION_PLAY_PAUSE );
digested = TRUE;
break;
case GDK_Up:
diff --git a/src/mpris2-controller.vala b/src/mpris2-controller.vala
index c7305f4..6129458 100644
--- a/src/mpris2-controller.vala
+++ b/src/mpris2-controller.vala
@@ -17,6 +17,7 @@ You should have received a copy of the GNU General Public License along
with this program. If not, see <http://www.gnu.org/licenses/>.
*/
using Dbusmenu;
+using Transport;
/*
This class will entirely replace mpris-controller.vala hence why there is no
@@ -33,7 +34,7 @@ public class Mpris2Controller : GLib.Object
public Mpris2Controller(PlayerController ctrl)
{
- GLib.Object(owner: ctrl);
+ GLib.Object(owner: ctrl);
}
construct{
@@ -77,7 +78,7 @@ public class Mpris2Controller : GLib.Object
string state = this.player.PlaybackStatus;
//debug("in the property update and the playback status = %s and update = %s", state, (string)play_v);
Timeout.add ( 200, ensure_correct_playback_status );
- TransportMenuitem.state p = (TransportMenuitem.state)this.determine_play_state(state);
+ Transport.State p = (Transport.State)this.determine_play_state(state);
(this.owner.custom_items[PlayerController.widget_order.TRANSPORT] as TransportMenuitem).change_play_state(p);
}
Variant? meta_v = changed_properties.lookup("Metadata");
@@ -115,7 +116,7 @@ public class Mpris2Controller : GLib.Object
private bool ensure_correct_playback_status(){
//debug("TEST playback status = %s", this.player.PlaybackStatus);
- TransportMenuitem.state p = (TransportMenuitem.state)this.determine_play_state(this.player.PlaybackStatus);
+ Transport.State p = (Transport.State)this.determine_play_state(this.player.PlaybackStatus);
(this.owner.custom_items[PlayerController.widget_order.TRANSPORT] as TransportMenuitem).change_play_state(p);
return false;
}
@@ -142,19 +143,19 @@ public class Mpris2Controller : GLib.Object
return changed_updates;
}
- private TransportMenuitem.state determine_play_state(string? status){
+ private Transport.State determine_play_state(string? status){
if(status != null && status == "Playing"){
- return TransportMenuitem.state.PLAYING;
+ return Transport.State.PLAYING;
}
- return TransportMenuitem.state.PAUSED;
+ return Transport.State.PAUSED;
}
public void initial_update()
{
- TransportMenuitem.state update;
+ Transport.State update;
if(this.player.PlaybackStatus == null){
- update = TransportMenuitem.state.PAUSED;
+ update = Transport.State.PAUSED;
}
else{
update = determine_play_state (this.player.PlaybackStatus);
@@ -174,18 +175,26 @@ public class Mpris2Controller : GLib.Object
}
}
- public void transport_update(TransportMenuitem.action command)
+ public void transport_update(Transport.Action command)
{
//debug("transport_event input = %i", (int)command);
- if(command == TransportMenuitem.action.PLAY_PAUSE){
+ if(command == Transport.Action.PLAY_PAUSE){
this.player.PlayPause.begin();
}
- else if(command == TransportMenuitem.action.PREVIOUS){
+ else if(command == Transport.Action.PREVIOUS){
this.player.Previous.begin();
}
- else if(command == TransportMenuitem.action.NEXT){
+ else if(command == Transport.Action.NEXT){
this.player.Next.begin();
}
+ else if(command == Transport.Action.REWIND){
+ //debug("transport_event rewind = %i", (int)command);
+ this.player.Seek.begin(-500000);
+ }
+ else if(command == Transport.Action.FORWIND){
+ //debug("transport_event input = %i", (int)command);
+ this.player.Seek.begin(400000);
+ }
}
public bool connected()
diff --git a/src/mpris2-interfaces.vala b/src/mpris2-interfaces.vala
index 5506a47..5dab1d2 100644
--- a/src/mpris2-interfaces.vala
+++ b/src/mpris2-interfaces.vala
@@ -42,6 +42,7 @@ public interface MprisPlayer : Object {
public abstract async void PlayPause() throws IOError;
public abstract async void Next() throws IOError;
public abstract async void Previous() throws IOError;
+ public abstract async void Seek(int64 offset) throws IOError;
// signals
public signal void Seeked(int64 new_position);
}
diff --git a/src/transport-menu-item.vala b/src/transport-menu-item.vala
index b0009d9..67e9562 100644
--- a/src/transport-menu-item.vala
+++ b/src/transport-menu-item.vala
@@ -20,19 +20,10 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
using Dbusmenu;
using Gee;
using DbusmenuTransport;
+using Transport;
public class TransportMenuitem : PlayerItem
{
- public enum action{
- PREVIOUS,
- PLAY_PAUSE,
- NEXT
- }
-
- public enum state{
- PLAYING,
- PAUSED
- }
public TransportMenuitem(PlayerController parent)
{
@@ -40,7 +31,7 @@ public class TransportMenuitem : PlayerItem
this.property_set_int(MENUITEM_PLAY_STATE, 1);
}
- public void change_play_state(state update)
+ public void change_play_state(Transport.State update)
{
//debug("UPDATING THE TRANSPORT DBUSMENUITEM PLAY STATE WITH VALUE %i",
// (int)update);
@@ -62,7 +53,7 @@ public class TransportMenuitem : PlayerItem
int32 input = v.get_int32();
//debug("transport menu item -> handle_event with value %s", input.to_string());
//debug("transport owner name = %s", this.owner.app_info.get_name());
- this.owner.mpris_bridge.transport_update((action)input);
+ this.owner.mpris_bridge.transport_update((Transport.Action)input);
}
public static HashSet<string> attributes_format()
diff --git a/src/transport-widget.c b/src/transport-widget.c
index 7c96684..0fbc101 100644
--- a/src/transport-widget.c
+++ b/src/transport-widget.c
@@ -27,7 +27,6 @@ Uses code from ctk
#include <math.h>
#include "transport-widget.h"
-#include "common-defs.h"
#define RECT_WIDTH 130.0f
@@ -77,13 +76,15 @@ typedef struct _TransportWidgetPrivate TransportWidgetPrivate;
struct _TransportWidgetPrivate
{
- TransportWidgetEvent current_command;
- TransportWidgetEvent key_event;
- TransportWidgetEvent motion_event;
- TransportWidgetState current_state;
- GHashTable* command_coordinates;
- DbusmenuMenuitem* twin_item;
- gboolean has_focus;
+ TransportAction current_command;
+ TransportAction key_event;
+ TransportAction motion_event;
+ TransportState current_state;
+ GHashTable* command_coordinates;
+ DbusmenuMenuitem* twin_item;
+ gboolean has_focus;
+ gint hold_timer;
+ gint skip_frequency;
};
#define TRANSPORT_WIDGET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TRANSPORT_WIDGET_TYPE, TransportWidgetPrivate))
@@ -119,17 +120,20 @@ static void transport_widget_menu_hidden ( GtkWidget *menu,
static void transport_widget_notify ( GObject *item,
GParamSpec *pspec,
gpointer user_data );
-static TransportWidgetEvent transport_widget_determine_button_event ( TransportWidget* button,
+static TransportAction transport_widget_determine_button_event ( TransportWidget* button,
GdkEventButton* event);
-static TransportWidgetEvent transport_widget_determine_motion_event ( TransportWidget* button,
+static TransportAction transport_widget_determine_motion_event ( TransportWidget* button,
GdkEventMotion* event);
static void transport_widget_react_to_button_release ( TransportWidget* button,
- TransportWidgetEvent command);
+ TransportAction command);
static void transport_widget_toggle_play_pause ( TransportWidget* button,
- TransportWidgetState update);
+ TransportState update);
static void transport_widget_select (GtkItem* menu, gpointer Userdata);
static void transport_widget_deselect (GtkItem* menu, gpointer Userdata);
-static TransportWidgetEvent transport_widget_collision_detection (gint x, gint y);
+static TransportAction transport_widget_collision_detection (gint x, gint y);
+static void transport_widget_start_timing (TransportWidget* widget);
+static gboolean transport_widget_trigger_seek (gpointer userdata);
+static gboolean transport_widget_seek (gpointer userdata);
/// Init functions //////////////////////////////////////////////////////////
@@ -155,11 +159,13 @@ static void
transport_widget_init (TransportWidget *self)
{
TransportWidgetPrivate* priv = TRANSPORT_WIDGET_GET_PRIVATE(self);
- priv->current_command = TRANSPORT_NADA;
- priv->current_state = PAUSE;
- priv->key_event = TRANSPORT_NADA;
- priv->motion_event = TRANSPORT_NADA;
+ priv->current_command = TRANSPORT_ACTION_NO_ACTION;
+ priv->current_state = TRANSPORT_STATE_PAUSED;
+ priv->key_event = TRANSPORT_ACTION_NO_ACTION;
+ priv->motion_event = TRANSPORT_ACTION_NO_ACTION;
priv->has_focus = FALSE;
+ priv->hold_timer = 0;
+ priv->skip_frequency = 0;
priv->command_coordinates = g_hash_table_new_full(g_direct_hash,
g_direct_equal,
NULL,
@@ -170,7 +176,7 @@ transport_widget_init (TransportWidget *self)
previous_list = g_list_insert(previous_list, GINT_TO_POINTER(60), 2);
previous_list = g_list_insert(previous_list, GINT_TO_POINTER(34), 3);
g_hash_table_insert(priv->command_coordinates,
- GINT_TO_POINTER(TRANSPORT_PREVIOUS),
+ GINT_TO_POINTER(TRANSPORT_ACTION_PREVIOUS),
previous_list);
GList* play_list = NULL;
@@ -180,7 +186,7 @@ transport_widget_init (TransportWidget *self)
play_list = g_list_insert(play_list, GINT_TO_POINTER(43), 3);
g_hash_table_insert(priv->command_coordinates,
- GINT_TO_POINTER(TRANSPORT_PLAY_PAUSE),
+ GINT_TO_POINTER(TRANSPORT_ACTION_PLAY_PAUSE),
play_list);
GList* next_list = NULL;
@@ -190,7 +196,7 @@ transport_widget_init (TransportWidget *self)
next_list = g_list_insert(next_list, GINT_TO_POINTER(34), 3);
g_hash_table_insert(priv->command_coordinates,
- GINT_TO_POINTER(TRANSPORT_NEXT),
+ GINT_TO_POINTER(TRANSPORT_ACTION_NEXT),
next_list);
gtk_widget_set_size_request(GTK_WIDGET(self), 200, 43);
g_signal_connect (G_OBJECT(self),
@@ -248,7 +254,7 @@ transport_widget_is_selected ( TransportWidget* widget )
static void
transport_widget_toggle_play_pause(TransportWidget* button,
- TransportWidgetState update)
+ TransportState update)
{
TransportWidgetPrivate* priv = TRANSPORT_WIDGET_GET_PRIVATE(button);
priv->current_state = update;
@@ -276,7 +282,7 @@ transport_widget_menu_hidden ( GtkWidget *menu,
TransportWidget *transport)
{
g_return_if_fail(IS_TRANSPORT_WIDGET(transport));
- transport_widget_react_to_button_release(transport, TRANSPORT_NADA);
+ transport_widget_react_to_button_release(transport, TRANSPORT_ACTION_NO_ACTION);
}
static gboolean
@@ -285,9 +291,8 @@ transport_widget_motion_notify_event (GtkWidget *menuitem,
{
g_return_val_if_fail ( IS_TRANSPORT_WIDGET(menuitem), FALSE );
TransportWidgetPrivate* priv = TRANSPORT_WIDGET_GET_PRIVATE ( TRANSPORT_WIDGET(menuitem) );
- TransportWidgetEvent result = transport_widget_determine_motion_event ( TRANSPORT_WIDGET(menuitem),
+ TransportAction result = transport_widget_determine_motion_event ( TRANSPORT_WIDGET(menuitem),
event);
-
priv->motion_event = result;
gtk_widget_queue_draw (menuitem);
return TRUE;
@@ -300,8 +305,8 @@ transport_widget_leave_notify_event (GtkWidget *menuitem,
g_return_val_if_fail ( IS_TRANSPORT_WIDGET(menuitem), FALSE );
TransportWidgetPrivate* priv = TRANSPORT_WIDGET_GET_PRIVATE ( TRANSPORT_WIDGET(menuitem) );
- priv->motion_event = TRANSPORT_NADA;
- priv->current_command = TRANSPORT_NADA;
+ priv->motion_event = TRANSPORT_ACTION_NO_ACTION;
+ priv->current_command = TRANSPORT_ACTION_NO_ACTION;
gtk_widget_queue_draw (GTK_WIDGET(menuitem));
return TRUE;
@@ -313,15 +318,73 @@ transport_widget_button_press_event (GtkWidget *menuitem,
{
g_return_val_if_fail ( IS_TRANSPORT_WIDGET(menuitem), FALSE );
TransportWidgetPrivate* priv = TRANSPORT_WIDGET_GET_PRIVATE ( TRANSPORT_WIDGET(menuitem) );
- TransportWidgetEvent result = transport_widget_determine_button_event ( TRANSPORT_WIDGET(menuitem),
+ TransportAction result = transport_widget_determine_button_event ( TRANSPORT_WIDGET(menuitem),
event);
- if(result != TRANSPORT_NADA){
+ if(result != TRANSPORT_ACTION_NO_ACTION){
priv->current_command = result;
gtk_widget_queue_draw (GTK_WIDGET(menuitem));
+ transport_widget_start_timing (TRANSPORT_WIDGET(menuitem));
}
return TRUE;
}
-
+/**
+ * TODO rename or merge
+ * @param widget
+ */
+static void
+transport_widget_start_timing (TransportWidget* widget)
+{
+ TransportWidgetPrivate* priv = TRANSPORT_WIDGET_GET_PRIVATE (widget);
+ priv->hold_timer = g_timeout_add (800,
+ transport_widget_trigger_seek,
+ widget);
+}
+
+static gboolean
+transport_widget_trigger_seek (gpointer userdata)
+{
+ g_return_val_if_fail ( IS_TRANSPORT_WIDGET(userdata), FALSE );
+ TransportWidgetPrivate* priv = TRANSPORT_WIDGET_GET_PRIVATE (TRANSPORT_WIDGET(userdata));
+ priv->skip_frequency = g_timeout_add (100,
+ transport_widget_seek,
+ userdata);
+ return FALSE;
+}
+
+/**
+ * This will be called repeatedly until a key/button release is received
+ * @param userdata
+ * @return
+ */
+static gboolean
+transport_widget_seek (gpointer userdata)
+{
+ g_return_val_if_fail ( IS_TRANSPORT_WIDGET(userdata), FALSE );
+ TransportWidgetPrivate* priv = TRANSPORT_WIDGET_GET_PRIVATE (TRANSPORT_WIDGET(userdata));
+ GVariant* new_transport_state;
+ if(priv->current_command == TRANSPORT_ACTION_NEXT){
+ g_debug ("we should be skipping forward");
+ new_transport_state = g_variant_new_int32 ((int)TRANSPORT_ACTION_FORWIND);
+
+ dbusmenu_menuitem_handle_event ( priv->twin_item,
+ "Transport state change",
+ new_transport_state,
+ 0 );
+
+ }
+ else if(priv->current_command == TRANSPORT_ACTION_PREVIOUS){
+ g_debug ("we should be skipping back");
+ new_transport_state = g_variant_new_int32 ((int)TRANSPORT_ACTION_REWIND);
+
+ dbusmenu_menuitem_handle_event ( priv->twin_item,
+ "Transport state change",
+ new_transport_state,
+ 0 );
+ }
+
+ return TRUE;
+}
+
static gboolean
transport_widget_button_release_event (GtkWidget *menuitem,
GdkEventButton *event)
@@ -329,9 +392,11 @@ transport_widget_button_release_event (GtkWidget *menuitem,
g_return_val_if_fail(IS_TRANSPORT_WIDGET(menuitem), FALSE);
TransportWidget* transport = TRANSPORT_WIDGET(menuitem);
TransportWidgetPrivate * priv = TRANSPORT_WIDGET_GET_PRIVATE ( transport );
- TransportWidgetEvent result = transport_widget_determine_button_event ( transport,
+ TransportAction result = transport_widget_determine_button_event ( transport,
event );
- if (result != TRANSPORT_NADA && priv->current_command == result){
+ if (result != TRANSPORT_ACTION_NO_ACTION &&
+ priv->current_command == result &&
+ priv->skip_frequency == 0){
GVariant* new_transport_state = g_variant_new_int32 ((int)result);
dbusmenu_menuitem_handle_event ( priv->twin_item,
"Transport state change",
@@ -361,9 +426,9 @@ transport_widget_deselect (GtkItem* item, gpointer Userdata)
void
transport_widget_react_to_key_press_event ( TransportWidget* transport,
- TransportWidgetEvent transport_event )
+ TransportAction transport_event )
{
- if(transport_event != TRANSPORT_NADA){
+ if(transport_event != TRANSPORT_ACTION_NO_ACTION){
TransportWidgetPrivate * priv = TRANSPORT_WIDGET_GET_PRIVATE ( transport );
priv->current_command = transport_event;
priv->key_event = transport_event;
@@ -374,9 +439,9 @@ transport_widget_react_to_key_press_event ( TransportWidget* transport,
void
transport_widget_react_to_key_release_event ( TransportWidget* transport,
- TransportWidgetEvent transport_event )
+ TransportAction transport_event )
{
- if(transport_event != TRANSPORT_NADA){
+ if(transport_event != TRANSPORT_ACTION_NO_ACTION){
TransportWidgetPrivate * priv = TRANSPORT_WIDGET_GET_PRIVATE ( transport );
GVariant* new_transport_event = g_variant_new_int32((int)transport_event);
dbusmenu_menuitem_handle_event ( priv->twin_item,
@@ -395,52 +460,60 @@ transport_widget_focus_update ( TransportWidget* transport, gboolean focus )
priv->has_focus = focus;
}
-static TransportWidgetEvent
+static TransportAction
transport_widget_determine_button_event( TransportWidget* button,
GdkEventButton* event )
{
return transport_widget_collision_detection (event->x, event->y);
}
-static TransportWidgetEvent
+static TransportAction
transport_widget_determine_motion_event( TransportWidget* button,
GdkEventMotion* event )
{
return transport_widget_collision_detection (event->x, event->y);
}
-static TransportWidgetEvent
+static TransportAction
transport_widget_collision_detection ( gint x,
gint y )
{
- TransportWidgetEvent event = TRANSPORT_NADA;
+ TransportAction event = TRANSPORT_ACTION_NO_ACTION;
if (x > 67 && x < 112
&& y > 12 && y < 40){
- event = TRANSPORT_PREVIOUS;
+ event = TRANSPORT_ACTION_PREVIOUS;
}
else if (x > 111 && x < 153
&& y > 5 && y < 47){
- event = TRANSPORT_PLAY_PAUSE;
+ event = TRANSPORT_ACTION_PLAY_PAUSE;
}
else if (x > 152 && x < 197
&& y > 12 && y < 40){
- event = TRANSPORT_NEXT;
+ event = TRANSPORT_ACTION_NEXT;
}
return event;
}
static void
transport_widget_react_to_button_release ( TransportWidget* button,
- TransportWidgetEvent command )
+ TransportAction command )
{
g_return_if_fail(IS_TRANSPORT_WIDGET(button));
TransportWidgetPrivate* priv = TRANSPORT_WIDGET_GET_PRIVATE(button);
- priv->current_command = TRANSPORT_NADA;
- priv->key_event = TRANSPORT_NADA;
+ priv->current_command = TRANSPORT_ACTION_NO_ACTION;
+ priv->key_event = TRANSPORT_ACTION_NO_ACTION;
gtk_widget_queue_draw (GTK_WIDGET(button));
+ if (priv->hold_timer != 0){
+ g_source_remove (priv->hold_timer);
+ priv->hold_timer = 0;
+ }
+ if(priv->skip_frequency != 0){
+ g_source_remove (priv->skip_frequency);
+ priv->skip_frequency = 0;
+ }
}
/// internal helper functions //////////////////////////////////////////////////
@@ -1218,7 +1291,7 @@ draw (GtkWidget* button, cairo_t *cr)
MIDDLE_END);
//prev/next button
- if(priv->current_command == TRANSPORT_PREVIOUS)
+ if(priv->current_command == TRANSPORT_ACTION_PREVIOUS)
{
draw_gradient (cr,
X,
@@ -1244,7 +1317,7 @@ draw (GtkWidget* button, cairo_t *cr)
INNER_COMPRESSED_START,
INNER_COMPRESSED_END);
}
- else if(priv->current_command == TRANSPORT_NEXT)
+ else if(priv->current_command == TRANSPORT_ACTION_NEXT)
{
draw_gradient (cr,
RECT_WIDTH / 2 + X,
@@ -1270,7 +1343,7 @@ draw (GtkWidget* button, cairo_t *cr)
INNER_COMPRESSED_START,
INNER_COMPRESSED_END);
}
- else if (priv->motion_event == TRANSPORT_PREVIOUS)
+ else if (priv->motion_event == TRANSPORT_ACTION_PREVIOUS)
{
draw_gradient (cr,
X,
@@ -1296,7 +1369,7 @@ draw (GtkWidget* button, cairo_t *cr)
MIDDLE_START_PRELIGHT,
MIDDLE_END_PRELIGHT);
}
- else if (priv->motion_event == TRANSPORT_NEXT)
+ else if (priv->motion_event == TRANSPORT_ACTION_NEXT)
{
draw_gradient (cr,
RECT_WIDTH / 2 + X,
@@ -1324,7 +1397,7 @@ draw (GtkWidget* button, cairo_t *cr)
}
// play/pause shadow
- if(priv->current_command != TRANSPORT_PLAY_PAUSE)
+ if(priv->current_command != TRANSPORT_ACTION_PLAY_PAUSE)
{
cairo_save (cr);
cairo_rectangle (cr, X, Y, RECT_WIDTH, MIDDLE_RADIUS*2);
@@ -1341,7 +1414,7 @@ draw (GtkWidget* button, cairo_t *cr)
}
// play/pause button
- if(priv->current_command == TRANSPORT_PLAY_PAUSE)
+ if(priv->current_command == TRANSPORT_ACTION_PLAY_PAUSE)
{
draw_circle (cr,
X + RECT_WIDTH / 2.0f - 2.0f * OUTER_RADIUS - 5.5f,
@@ -1357,7 +1430,7 @@ draw (GtkWidget* button, cairo_t *cr)
INNER_COMPRESSED_START,
INNER_COMPRESSED_END);
}
- else if (priv->motion_event == TRANSPORT_PLAY_PAUSE)
+ else if (priv->motion_event == TRANSPORT_ACTION_PLAY_PAUSE)
{
/* this subtle offset is to fix alpha borders, should be removed once this draw routine will be refactored */
draw_circle (cr,
@@ -1392,7 +1465,7 @@ draw (GtkWidget* button, cairo_t *cr)
}
// draw previous-button drop-shadow
- if (priv->has_focus && priv->key_event == TRANSPORT_PREVIOUS)
+ if (priv->has_focus && priv->key_event == TRANSPORT_ACTION_PREVIOUS)
{
_setup (&cr_surf, &surf, PREV_WIDTH+6, PREV_HEIGHT+6);
_mask_prev (cr_surf,
@@ -1452,7 +1525,7 @@ draw (GtkWidget* button, cairo_t *cr)
_finalize (cr, &cr_surf, &surf, PREV_X, PREV_Y);
// draw next-button drop-shadow
- if (priv->has_focus && priv->key_event == TRANSPORT_NEXT)
+ if (priv->has_focus && priv->key_event == TRANSPORT_ACTION_NEXT)
{
_setup (&cr_surf, &surf, NEXT_WIDTH+6, NEXT_HEIGHT+6);
_mask_next (cr_surf,
@@ -1512,9 +1585,10 @@ draw (GtkWidget* button, cairo_t *cr)
_finalize (cr, &cr_surf, &surf, NEXT_X, NEXT_Y);
// draw pause-button drop-shadow
- if(priv->current_state == PLAY)
+ if(priv->current_state == TRANSPORT_STATE_PLAYING)
{
- if (priv->has_focus && (priv->key_event == TRANSPORT_NADA || priv->key_event == TRANSPORT_PLAY_PAUSE))
+ if (priv->has_focus && (priv->key_event == TRANSPORT_ACTION_NO_ACTION ||
+ priv->key_event == TRANSPORT_ACTION_PLAY_PAUSE))
{
_setup (&cr_surf, &surf, PAUSE_WIDTH+6, PAUSE_HEIGHT+6);
_mask_pause (cr_surf,
@@ -1573,9 +1647,10 @@ draw (GtkWidget* button, cairo_t *cr)
TRUE);
_finalize (cr, &cr_surf, &surf, PAUSE_X, PAUSE_Y);
}
- else if(priv->current_state == PAUSE)
+ else if(priv->current_state == TRANSPORT_STATE_PAUSED)
{
- if (priv->has_focus && (priv->key_event == TRANSPORT_NADA || priv->key_event == TRANSPORT_PLAY_PAUSE))
+ if (priv->has_focus && (priv->key_event == TRANSPORT_ACTION_NO_ACTION ||
+ priv->key_event == TRANSPORT_ACTION_PLAY_PAUSE))
{
_setup (&cr_surf, &surf, PLAY_WIDTH+6, PLAY_HEIGHT+6);
_mask_play (cr_surf,
@@ -1644,11 +1719,11 @@ transport_widget_set_twin_item(TransportWidget* self,
priv->twin_item = twin_item;
g_signal_connect(G_OBJECT(priv->twin_item), "property-changed",
G_CALLBACK(transport_widget_property_update), self);
- gint initial_state = dbusmenu_menuitem_property_get_int( twin_item,
+ gint initial_state = dbusmenu_menuitem_property_get_int (twin_item,
DBUSMENU_TRANSPORT_MENUITEM_PLAY_STATE );
//g_debug("TRANSPORT WIDGET - INITIAL UPDATE = %i", initial_state);
- transport_widget_toggle_play_pause( self,
- (TransportWidgetState)initial_state);
+ transport_widget_toggle_play_pause (self,
+ (TransportState)initial_state);
}
/**
@@ -1667,7 +1742,7 @@ transport_widget_property_update(DbusmenuMenuitem* item, gchar* property,
{
int update_value = g_variant_get_int32(value);
//g_debug("transport_widget_update_state - with value %i", update_value);
- transport_widget_toggle_play_pause(bar, (TransportWidgetState)update_value);
+ transport_widget_toggle_play_pause(bar, (TransportState)update_value);
}
}
diff --git a/src/transport-widget.h b/src/transport-widget.h
index d02f59b..e5e91dc 100644
--- a/src/transport-widget.h
+++ b/src/transport-widget.h
@@ -23,6 +23,8 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
#include <gtk/gtkmenuitem.h>
#include <libdbusmenu-gtk/menuitem.h>
+#include "common-defs.h"
+
G_BEGIN_DECLS
#define TRANSPORT_WIDGET_TYPE (transport_widget_get_type ())
@@ -35,17 +37,6 @@ G_BEGIN_DECLS
typedef struct _TransportWidget TransportWidget;
typedef struct _TransportWidgetClass TransportWidgetClass;
-typedef enum {
- TRANSPORT_PREVIOUS,
- TRANSPORT_PLAY_PAUSE,
- TRANSPORT_NEXT,
- TRANSPORT_NADA
-}TransportWidgetEvent;
-
-typedef enum {
- PLAY,
- PAUSE
-}TransportWidgetState;
struct _TransportWidgetClass {
GtkMenuItemClass parent_class;
@@ -65,12 +56,12 @@ typedef struct
void _color_shade (const CairoColorRGB *a, float k, CairoColorRGB *b);
GType transport_widget_get_type (void);
-GtkWidget* transport_widget_new ( DbusmenuMenuitem *item );
-void transport_widget_react_to_key_press_event ( TransportWidget* widget,
- TransportWidgetEvent transport_event );
-void transport_widget_react_to_key_release_event ( TransportWidget* widget,
- TransportWidgetEvent transport_event );
-gboolean transport_widget_is_selected ( TransportWidget* widget );
+GtkWidget* transport_widget_new (DbusmenuMenuitem *item);
+void transport_widget_react_to_key_press_event (TransportWidget* widget,
+ TransportAction transport_event);
+void transport_widget_react_to_key_release_event (TransportWidget* widget,
+ TransportAction transport_event);
+gboolean transport_widget_is_selected (TransportWidget* widget);
G_END_DECLS
#endif
diff --git a/src/voip-input-widget.c b/src/voip-input-widget.c
index 9b29feb..fc295ce 100644
--- a/src/voip-input-widget.c
+++ b/src/voip-input-widget.c
@@ -95,12 +95,12 @@ voip_input_widget_init (VoipInputWidget *self)
g_signal_connect(priv->ido_voip_input_slider, "slider-released", G_CALLBACK(voip_input_widget_slider_released), self);
GtkWidget* primary_image = ido_scale_menu_item_get_primary_image((IdoScaleMenuItem*)priv->ido_voip_input_slider);
- GIcon * primary_gicon = g_themed_icon_new_with_default_fallbacks("audio-input-microphone");
+ GIcon * primary_gicon = g_themed_icon_new_with_default_fallbacks("audio-input-microphone-none-panel");
gtk_image_set_from_gicon(GTK_IMAGE(primary_image), primary_gicon, GTK_ICON_SIZE_MENU);
g_object_unref(primary_gicon);
GtkWidget* secondary_image = ido_scale_menu_item_get_secondary_image((IdoScaleMenuItem*)priv->ido_voip_input_slider);
- GIcon * secondary_gicon = g_themed_icon_new_with_default_fallbacks("audio-input-microphone-high");
+ GIcon * secondary_gicon = g_themed_icon_new_with_default_fallbacks("audio-input-microphone-high-panel");
gtk_image_set_from_gicon(GTK_IMAGE(secondary_image), secondary_gicon, GTK_ICON_SIZE_MENU);
g_object_unref(secondary_gicon);
diff --git a/vapi/common-defs.vapi b/vapi/common-defs.vapi
index 7b38e9c..7cac0de 100644
--- a/vapi/common-defs.vapi
+++ b/vapi/common-defs.vapi
@@ -41,14 +41,6 @@ namespace DbusmenuTitle{
}
[CCode (cheader_filename = "common-defs.h")]
-namespace DbusmenuScrub{
- public const string MENUITEM_TYPE;
- public const string MENUITEM_POSITION;
- public const string MENUITEM_DURATION;
- public const string MENUITEM_PLAY_STATE;
-}
-
-[CCode (cheader_filename = "common-defs.h")]
namespace DbusmenuPlaylists{
public const string MENUITEM_TYPE;
public const string MENUITEM_TITLE;
@@ -57,4 +49,20 @@ namespace DbusmenuPlaylists{
[CCode (cheader_filename = "common-defs.h")]
namespace DbusmenuPlaylist{
public const string MENUITEM_PATH;
-} \ No newline at end of file
+}
+
+
+[CCode (cprefix ="Transport", cheader_filename = "common-defs.h")]
+namespace Transport{
+ public enum Action{
+ PREVIOUS,
+ PLAY_PAUSE,
+ NEXT,
+ REWIND,
+ FORWIND
+ }
+ public enum State{
+ PLAYING,
+ PAUSED
+ }
+}