void alarm_current_volume(GtkButton *button, gpointer data) { gint vol; GtkAdjustment *adj; AUDDBG("on_current_button_clicked\n"); aud_drct_get_volume_main(&vol); adj = gtk_range_get_adjustment(alarm_conf.volume); gtk_adjustment_set_value(adj, (gfloat)vol); }
static bool_t update (GObject * object) { int64_t pos = 0; int vol = 0; if (aud_drct_get_playing () && aud_drct_get_ready ()) pos = (int64_t) aud_drct_get_time () * 1000; aud_drct_get_volume_main (& vol); g_signal_handlers_block_by_func (object, (void *) volume_changed, NULL); g_object_set (object, "position", pos, "volume", (double) vol / 100, NULL); g_signal_handlers_unblock_by_func (object, (void *) volume_changed, NULL); return TRUE; }
static void *alarm_fade(void *arg) { fader *vols = (fader *)arg; guint i; gint v; gint inc, diff, adiff; /* lock */ pthread_mutex_lock(&fader_lock); /* slide volume */ /* the Kaspar Giger way of fading, check the current mixer volume and * increment from there so that if you have some other app lowering the * volume at the same time, the alarm plugin will not ignore it. If you have * some other app increasing the volume, then it could get louder than you expect * though - because the loop does not recalculate the difference each time. */ /* difference between the 2 volumes */ diff = vols->end - vols->start; adiff = abs(diff); /* Are we going up or down? */ if(diff < 0) inc = -1; else inc = 1; aud_drct_set_volume_main((gint)vols->start); //for(i=0;i<(vols->end - vols->start);i++) for(i=0;i<adiff;i++) { //threadsleep((gfloat)fading / (vols->end - vols->start)); threadsleep((gfloat)fading / (gfloat)adiff); aud_drct_get_volume_main(&v); aud_drct_set_volume_main(v + inc); } /* Setting the volume to the end volume sort of defeats the point if having * the code in there to allow other apps to control volume too :) */ //aud_drct_set_volume_main((gint)vols->end); /* and */ pthread_mutex_unlock(&fader_lock); AUDDBG("volume = %f%%\n", (gdouble)vols->end); return 0; }
static gboolean ui_volume_slider_update(gpointer data) { gint volume; if (volume_slider_is_moving || data == NULL) return TRUE; aud_drct_get_volume_main(&volume); if (volume == (gint) gtk_scale_button_get_value(GTK_SCALE_BUTTON(data))) return TRUE; g_signal_handler_block(data, volume_change_handler_id); gtk_scale_button_set_value(GTK_SCALE_BUTTON(data), volume); g_signal_handler_unblock(data, volume_change_handler_id); return TRUE; }
static void *alarm_stop_thread(void *args) { gint currvol; fader fade_vols; alarm_thread_t f; AUDDBG("alarm_stop_thread\n"); /* sleep for however long we are meant to be sleeping for until * its time to shut up */ threadsleep(((stop_h * 60) + stop_m) * 60); AUDDBG("alarm_stop triggered\n"); if (alarm_dialog) gtk_widget_destroy(alarm_dialog); aud_drct_get_volume_main(&currvol), /* fade back to zero */ fade_vols.start = currvol; fade_vols.end = 0; /* The fader thread locks the fader_mutex now */ f = alarm_thread_create(alarm_fade, &fade_vols, 0); pthread_join(f.tid, NULL); aud_drct_stop(); /* might as well set the volume to something higher than zero so we * dont confuse the poor people who just woke up and cant work out why * theres no music playing when they press the little play button :) */ aud_drct_set_volume_main(currvol); AUDDBG("alarm_stop done\n"); return(NULL); }
/* 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; }
static void volume_down (void) { int vol = 0; aud_drct_get_volume_main (& vol); aud_drct_set_volume_main (vol - 5); }
static void volume_up (void) { int vol = 0; aud_drct_get_volume_main (& vol); aud_drct_set_volume_main (vol + 5); }
static gboolean lirc_input_callback (GIOChannel * source, GIOCondition condition, void * data) { char *code; char *c; gint playlist_time, playlist_pos, output_time, v; int ret; char *ptr; gint balance; #if 0 gboolean show_pl; #endif int n; gchar *utf8_title_markup; while ((ret = lirc_nextcode (&code)) == 0 && code != NULL) { while ((ret = lirc_code2char (config, code, &c)) == 0 && c != NULL) { if (strcasecmp ("PLAY", c) == 0) aud_drct_play (); else if (strcasecmp ("STOP", c) == 0) aud_drct_stop (); else if (strcasecmp ("PAUSE", c) == 0) aud_drct_pause (); else if (strcasecmp ("PLAYPAUSE", c) == 0) aud_drct_play_pause (); else if (strncasecmp ("NEXT", c, 4) == 0) { ptr = c + 4; while (isspace (*ptr)) ptr++; n = atoi (ptr); if (n <= 0) n = 1; for (; n > 0; n--) { aud_drct_pl_next (); } } else if (strncasecmp ("PREV", c, 4) == 0) { ptr = c + 4; while (isspace (*ptr)) ptr++; n = atoi (ptr); if (n <= 0) n = 1; for (; n > 0; n--) { aud_drct_pl_prev (); } } else if (strcasecmp ("SHUFFLE", c) == 0) aud_set_bool (NULL, "shuffle", ! aud_get_bool (NULL, "shuffle")); else if (strcasecmp ("REPEAT", c) == 0) aud_set_bool (NULL, "repeat", ! aud_get_bool (NULL, "repeat")); else if (strncasecmp ("FWD", c, 3) == 0) { ptr = c + 3; while (isspace (*ptr)) ptr++; n = atoi (ptr) * 1000; if (n <= 0) n = 5000; output_time = aud_drct_get_time (); int playlist = aud_playlist_get_active (); playlist_pos = aud_playlist_get_position (playlist); playlist_time = aud_playlist_entry_get_length (playlist, playlist_pos, FALSE); if (playlist_time - output_time < n) output_time = playlist_time - n; aud_drct_seek (output_time + n); } else if (strncasecmp ("BWD", c, 3) == 0) { ptr = c + 3; while (isspace (*ptr)) ptr++; n = atoi (ptr) * 1000; if (n <= 0) n = 5000; output_time = aud_drct_get_time (); if (output_time < n) output_time = n; aud_drct_seek (output_time - n); } else if (strncasecmp ("VOL_UP", c, 6) == 0) { ptr = c + 6; while (isspace (*ptr)) ptr++; n = atoi (ptr); if (n <= 0) n = 5; aud_drct_get_volume_main (&v); if (v > (100 - n)) v = 100 - n; aud_drct_set_volume_main (v + n); } else if (strncasecmp ("VOL_DOWN", c, 8) == 0) { ptr = c + 8; while (isspace (*ptr)) ptr++; n = atoi (ptr); if (n <= 0) n = 5; aud_drct_get_volume_main (&v); if (v < n) v = n; aud_drct_set_volume_main (v - n); } else if (strcasecmp ("QUIT", c) == 0) { aud_drct_quit (); } else if (strcasecmp ("MUTE", c) == 0) { if (mute == 0) { mute = 1; /* store the master volume so we can restore it on unmute. */ aud_drct_get_volume_main (&mute_vol); aud_drct_set_volume_main (0); } else { mute = 0; aud_drct_set_volume_main (mute_vol); } } else if (strncasecmp ("BAL_LEFT", c, 8) == 0) { ptr = c + 8; while (isspace (*ptr)) ptr++; n = atoi (ptr); if (n <= 0) n = 5; aud_drct_get_volume_balance (&balance); balance -= n; if (balance < -100) balance = -100; aud_drct_set_volume_balance (balance); } else if (strncasecmp ("BAL_RIGHT", c, 9) == 0) { ptr = c + 9; while (isspace (*ptr)) ptr++; n = atoi (ptr); if (n <= 0) n = 5; aud_drct_get_volume_balance (&balance); balance += n; if (balance > 100) balance = 100; aud_drct_set_volume_balance (balance); } else if (strcasecmp ("BAL_CENTER", c) == 0) { balance = 0; aud_drct_set_volume_balance (balance); } else if (strcasecmp ("LIST", c) == 0) { #if 0 show_pl = aud_drct_pl_win_is_visible (); show_pl = (show_pl) ? 0 : 1; aud_drct_pl_win_toggle (show_pl); #endif } else if (strcasecmp ("PLAYLIST_CLEAR", c) == 0) { aud_drct_stop (); int playlist = aud_playlist_get_active (); aud_playlist_entry_delete (playlist, 0, aud_playlist_entry_count (playlist)); } else if (strncasecmp ("PLAYLIST_ADD ", c, 13) == 0) { aud_drct_pl_add (c + 13, -1); } else if ((strlen (c) == 1) && ((*c >= '0') || (*c <= '9'))) { if (track_no_pos < 63) { if (tid) g_source_remove (tid); track_no[track_no_pos++] = *c; track_no[track_no_pos] = 0; tid = g_timeout_add (1500, jump_to, NULL); utf8_title_markup = g_markup_printf_escaped ("%s", track_no); hook_call ("aosd toggle", utf8_title_markup); } } else { fprintf (stderr, _("%s: unknown command \"%s\"\n"), plugin_name, c); } } free (code); if (ret == -1) break; } if (ret == -1) { /* something went badly wrong */ fprintf (stderr, _("%s: disconnected from LIRC\n"), plugin_name); cleanup (); if (aud_get_bool ("lirc", "enable_reconnect")) { int reconnect_timeout = aud_get_int ("lirc", "reconnect_timeout"); fprintf (stderr, _("%s: will try reconnect every %d seconds...\n"), plugin_name, reconnect_timeout); g_timeout_add (1000 * reconnect_timeout, reconnect_lirc, NULL); } } return TRUE; }
static void on_media_player_key_pressed (DBusGProxy *proxy, const gchar *application, const gchar *key) { if (strcmp ("Audacious", application) == 0) { gint current_volume /* , old_volume */ ; static gint volume_static = 0; gboolean mute; /* 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 (strcmp ("Mute", key) == 0) { 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; } /* decreace volume */ /* if ((keycode == plugin_cfg.vol_down) && (state == plugin_cfg.vol_down_mask)) { 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) { xmms_remote_set_main_volume (audacioushotkey.xmms_session, current_volume); } old_volume = current_volume; return TRUE; }*/ /* increase volume */ /* if ((keycode == plugin_cfg.vol_up) && (state == plugin_cfg.vol_up_mask)) { 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) { xmms_remote_set_main_volume (audacioushotkey.xmms_session, current_volume); } old_volume = current_volume; return TRUE; }*/ /* play or pause */ if (strcmp ("Play", key) == 0 || strcmp ("Pause", key) == 0) { aud_drct_play_pause (); return; } /* stop */ if (strcmp ("Stop", key) == 0) { aud_drct_stop (); return; } /* prev track */ if (strcmp ("Previous", key) == 0) { aud_drct_pl_prev (); return; } /* next track */ if (strcmp ("Next", key) == 0) { aud_drct_pl_next (); return; } } }