static bool_t raise_cb (MprisMediaPlayer2 * object, GDBusMethodInvocation * call, void * unused) { aud_interface_show (TRUE); mpris_media_player2_complete_raise (object, call); return TRUE; }
static void si_window_close(gpointer data, gpointer user_data) { gboolean *handle = (gboolean*) data; if (aud_get_bool ("statusicon", "close_to_tray")) { *handle = TRUE; aud_interface_show (FALSE); } }
static void si_enable(gboolean enable) { static GtkStatusIcon *si_applet = NULL; if (enable && ! si_applet) { GtkWidget *si_smenu; si_applet = si_create(); if (si_applet == NULL) { g_warning("StatusIcon plugin: unable to create a status icon.\n"); return; } g_object_set_data(G_OBJECT(si_applet), "timer_id", GINT_TO_POINTER(0)); g_object_set_data(G_OBJECT(si_applet), "timer_active", GINT_TO_POINTER(0)); g_object_set_data(G_OBJECT(si_applet), "popup_active", GINT_TO_POINTER(0)); g_signal_connect(G_OBJECT(si_applet), "button-press-event", G_CALLBACK(si_cb_btpress), NULL); g_signal_connect(G_OBJECT(si_applet), "scroll-event", G_CALLBACK(si_cb_btscroll), NULL); g_signal_connect(G_OBJECT(si_applet), "query-tooltip", G_CALLBACK(si_cb_tooltip), NULL); gtk_status_icon_set_has_tooltip(si_applet, TRUE); gtk_status_icon_set_visible(si_applet, TRUE); /* small menu that can be used in place of the audacious standard one */ si_smenu = si_smallmenu_create(); g_object_set_data(G_OBJECT(si_applet), "smenu", si_smenu); hook_associate("title change", si_popup_reshow, si_applet); hook_associate("window close", si_window_close, NULL); } if (! enable && si_applet) { /* Prevent accidentally hiding of the interface * by disabling the plugin while Audacious is closed to the tray. */ extern GeneralPlugin _aud_plugin_self; PluginHandle *si = aud_plugin_by_header(&_aud_plugin_self); if (! aud_plugin_get_enabled(si) && ! aud_interface_is_shown()) aud_interface_show(TRUE); GtkWidget *si_smenu = g_object_get_data(G_OBJECT(si_applet), "smenu"); si_popup_timer_stop(si_applet); /* just in case the timer is active */ gtk_widget_destroy(si_smenu); g_object_unref(si_applet); si_applet = NULL; hook_dissociate("title change", si_popup_reshow); hook_dissociate("window close", si_window_close); } }
static gboolean si_cb_btpress(GtkStatusIcon * icon, GdkEventButton * event, gpointer user_data) { if (event->type != GDK_BUTTON_PRESS) return FALSE; si_popup_timer_stop(icon); si_popup_hide(icon); switch (event->button) { case 1: { if (event->state & GDK_SHIFT_MASK) aud_drct_pl_next(); else aud_interface_show (! (aud_interface_is_shown () && aud_interface_is_focused ())); break; } case 2: { aud_drct_pause(); break; } case 3: if (event->state & GDK_SHIFT_MASK) aud_drct_pl_prev(); else { if (recreate_smallmenu == TRUE) si_smallmenu_recreate(icon); si_smallmenu_show(event->x_root, event->y_root, 3, event->time, icon); } break; } return TRUE; }
static void show_cb (void) { aud_interface_show (TRUE); }
/* handle keys */ gboolean handle_keyevent (EVENT event) { gint current_volume, old_volume; static gint volume_static = 0; gboolean play, mute; /* playing or not */ play = aud_drct_get_playing (); /* get current volume */ aud_drct_get_volume_main (¤t_volume); old_volume = current_volume; if (current_volume) { /* volume is not mute */ mute = FALSE; } else { /* volume is mute */ mute = TRUE; } /* mute the playback */ if (event == EVENT_MUTE) { if (!mute) { volume_static = current_volume; aud_drct_set_volume_main (0); mute = TRUE; } else { aud_drct_set_volume_main (volume_static); mute = FALSE; } return TRUE; } /* decreace volume */ if (event == EVENT_VOL_DOWN) { if (mute) { current_volume = old_volume; old_volume = 0; mute = FALSE; } if ((current_volume -= plugin_cfg.vol_decrement) < 0) { current_volume = 0; } if (current_volume != old_volume) { aud_drct_set_volume_main (current_volume); } old_volume = current_volume; return TRUE; } /* increase volume */ if (event == EVENT_VOL_UP) { if (mute) { current_volume = old_volume; old_volume = 0; mute = FALSE; } if ((current_volume += plugin_cfg.vol_increment) > 100) { current_volume = 100; } if (current_volume != old_volume) { aud_drct_set_volume_main (current_volume); } old_volume = current_volume; return TRUE; } /* play */ if (event == EVENT_PLAY) { aud_drct_play (); return TRUE; } /* pause */ if (event == EVENT_PAUSE) { if (!play) aud_drct_play (); else aud_drct_pause (); return TRUE; } /* stop */ if (event == EVENT_STOP) { aud_drct_stop (); return TRUE; } /* prev track */ if (event == EVENT_PREV_TRACK) { aud_drct_pl_prev (); return TRUE; } /* next track */ if (event == EVENT_NEXT_TRACK) { aud_drct_pl_next (); return TRUE; } /* forward */ if (event == EVENT_FORWARD) { aud_drct_seek (aud_drct_get_time () + 5000); return TRUE; } /* backward */ if (event == EVENT_BACKWARD) { gint time = aud_drct_get_time (); if (time > 5000) time -= 5000; /* Jump 5s back */ else time = 0; aud_drct_seek (time); return TRUE; } /* Open Jump-To-File dialog */ if (event == EVENT_JUMP_TO_FILE) { aud_interface_show_jump_to_track (); return TRUE; } /* Toggle Windows */ if (event == EVENT_TOGGLE_WIN) { aud_interface_show (! (aud_interface_is_shown () && aud_interface_is_focused ())); return TRUE; } /* Show OSD through AOSD plugin*/ if (event == EVENT_SHOW_AOSD) { hook_call("aosd toggle", NULL); return TRUE; } if (event == EVENT_TOGGLE_REPEAT) { aud_set_bool (NULL, "repeat", ! aud_get_bool (NULL, "repeat")); return TRUE; } if (event == EVENT_TOGGLE_SHUFFLE) { aud_set_bool (NULL, "shuffle", ! aud_get_bool (NULL, "shuffle")); return TRUE; } if (event == EVENT_TOGGLE_STOP) { aud_set_bool (NULL, "stop_after_current_song", ! aud_get_bool (NULL, "stop_after_current_song")); return TRUE; } if (event == EVENT_RAISE) { aud_interface_show (TRUE); return TRUE; } return FALSE; }