Exemplo n.º 1
0
int mpd_player_set_random(MpdObj * mi, int random)
{
	if (!mpd_check_connected(mi)) {
		debug_printf(DEBUG_WARNING, "not connected\n");
		return MPD_NOT_CONNECTED;
	}
	if (mpd_lock_conn(mi)) {
		debug_printf(DEBUG_WARNING, "lock failed\n");
		return MPD_LOCK_FAILED;
	}
	mpd_sendRandomCommand(mi->connection, random);
	mpd_finishCommand(mi->connection);

	mpd_unlock_conn(mi);
	mpd_status_queue_update(mi);
	return MPD_OK;
}
Exemplo n.º 2
0
int cmd_random ( int argc, char ** argv, mpd_Connection * conn )
{
	int mode;

	if(argc==1) {
		mode = get_boolean(argv[0]);
		if (mode < 0)
			return -1;
	}
	else {
		mpd_Status * status;
		status = getStatus(conn);
		mode = !status->random;
		mpd_freeStatus(status);
	}

	mpd_sendRandomCommand(conn,mode);
	my_finishCommand(conn);

	return 1;
}
Exemplo n.º 3
0
int main(int argc, char **argv)
{
	char *configfilename = "/etc/mpc2x.conf";
	config = config_file(configfilename);
	
	bool quit = false;

	// Init SDL
	SDL_Init(SDL_INIT_JOYSTICK | SDL_INIT_VIDEO | SDL_INIT_TIMER);
	// Prepare screen for GP2X
	screen = SDL_SetVideoMode( WINDOW_WIDTH, WINDOW_HEIGHT, WINDOW_DEPTH, SDL_SWSURFACE);
	if(!screen) {
		printf("SDL_SetVideoMode screen not initialised: %s\n",SDL_GetError());
		shutdown();
	}
	// Set window title, which we don't need on gp2x
	SDL_WM_SetCaption(WINDOW_TITLE, 0 );
	// Disable mouse cursus
	SDL_ShowCursor(SDL_DISABLE);

	// initialise the font stuff
	TTF_Init();

	// load the ttf font to be used
	char *fontpath = (char*) malloc(100);
	strcpy(fontpath,config->skin_path); // assume the font is in the skin path, should do this other way!
	strcat(fontpath,config->font_path);
	font = TTF_OpenFont(fontpath, 16);
	free(fontpath);
	// Initialize the joystick
	SDL_JoystickOpen(0);

	songname = "........Not connected or no song playing at the moment...........";
	scrollpos = 0;
	mpdConnect();
	buildGUI();
	updateGUI();
	
	#define SONGTITLEINTERVAL 10
	int interval = 0;

	while (!quit)
	{
		SDL_Delay(100);
		interval++;
		if (interval == SONGTITLEINTERVAL) {
			mpdGetSongTitle();
			interval = 0;
			}

		updateGUI();
		
		SDL_Event event;
		while( SDL_PollEvent( &event ) )
		{
			switch( event.type )
			{
				case SDL_JOYBUTTONUP:
					drawText(screen, "[ |< ]", 20, 200, 255, 255, 255);
					drawText(screen, "[>/||]", 80, 200, 255, 255, 255);
					drawText(screen, "[ >| ]", 140, 200, 255, 255, 255);
					SDL_Flip(screen);
					break;
				case SDL_JOYBUTTONDOWN:
					switch( event.jbutton.button )
					{
						case GP2X_BUTTON_VOLUP :
						// volume up
							mpd_sendSetvolCommand(conn, status->volume + 5);
							mpd_finishCommand(conn);
							break;
						case GP2X_BUTTON_VOLDOWN :
						// volume down
							mpd_sendSetvolCommand(conn, status->volume - 5);
							mpd_finishCommand(conn);
							break;
						case GP2X_BUTTON_A :
						// play/pause
							if(status->state == MPD_STATUS_STATE_PLAY)
							{
								mpd_sendPauseCommand(conn,1);
							}
							else if(status->state == MPD_STATUS_STATE_PAUSE || status->state == MPD_STATUS_STATE_STOP)
							{
								mpd_sendPauseCommand(conn,0);
							}
							mpd_finishCommand(conn);
							drawText(screen, "[>/||]", 80, 200, 255, 255, 0);
							SDL_Flip(screen);
							break;
						case GP2X_BUTTON_R :
						// next track
							mpd_sendNextCommand(conn);
							mpd_finishCommand(conn);
							drawText(screen, "[ >| ]", 140, 200, 255, 255, 0);
							SDL_Flip(screen);
							break;
						case GP2X_BUTTON_L :
						// prev track
							mpd_sendPrevCommand(conn);
							mpd_finishCommand(conn);
							drawText(screen, "[ |< ]", 20, 200, 255, 255, 0);
							SDL_Flip(screen);
							break;
						case GP2X_BUTTON_Y :
						// shuffle toggle
							if(status->random == 0)
							{
								mpd_sendRandomCommand(conn,1);
							}
							else
							{
								mpd_sendRandomCommand(conn,0);
							}
							mpd_finishCommand(conn);
							break;
						case GP2X_BUTTON_B :
						// repeat toggle
							if(status->repeat == 0)
							{
								mpd_sendRepeatCommand(conn,1);
							}
							else
							{
								mpd_sendRepeatCommand(conn,0);
							}
							mpd_finishCommand(conn);
							break;
						case GP2X_BUTTON_START :
						// quit
						 	quit=true;
							break;
						case GP2X_BUTTON_SELECT :
						// cycle other screens
							break;
						case GP2X_BUTTON_RIGHT :
						// forward in song
							mpd_sendSeekCommand(conn, status->song, status->elapsedTime + 5);
							mpd_finishCommand(conn);
							break;
						case GP2X_BUTTON_LEFT :
						// backward in song
							mpd_sendSeekCommand(conn, status->song, status->elapsedTime - 5);
							mpd_finishCommand(conn);
							break;
						default:
							break;
					}
					break;
				case SDL_KEYDOWN:
					switch( event.key.keysym.sym )
					{
						case SDLK_KP_PLUS :
						// volume up
							mpd_sendSetvolCommand(conn, status->volume + 5);
							mpd_finishCommand(conn);
							break;
						case SDLK_KP_MINUS :
						// volume down
							mpd_sendSetvolCommand(conn, status->volume - 5);
							mpd_finishCommand(conn);
							break;
						case SDLK_SPACE :
						// play/pause
							if(status->state == MPD_STATUS_STATE_PLAY)
							{
								mpd_sendPauseCommand(conn,1);
							}
							else if(status->state == MPD_STATUS_STATE_PAUSE || status->state == MPD_STATUS_STATE_STOP)
							{
								mpd_sendPauseCommand(conn,0);
							}
							mpd_finishCommand(conn);
							drawText(screen, "[>/||]", 80, 200, 255, 255, 0);
							SDL_Flip(screen);
							break;
						case SDLK_RIGHT	:
						// next track
							mpd_sendNextCommand(conn);
							mpd_finishCommand(conn);
							drawText(screen, "[ >| ]", 140, 200, 255, 255, 0);
							SDL_Flip(screen);
							break;
						case SDLK_LEFT :
						// prev track
							mpd_sendPrevCommand(conn);
							mpd_finishCommand(conn);
							drawText(screen, "[ |< ]", 20, 200, 255, 255, 0);
							SDL_Flip(screen);
							break;
						case SDLK_s :
						// shuffle toggle
							if(status->random == 0)
							{
								mpd_sendRandomCommand(conn,1);
							}
							else
							{
								mpd_sendRandomCommand(conn,0);
							}
							mpd_finishCommand(conn);
							break;
						case SDLK_r :
						// repeat toggle
							if(status->repeat == 0)
							{
								mpd_sendRepeatCommand(conn,1);
							}
							else
							{
								mpd_sendRepeatCommand(conn,0);
							}
							mpd_finishCommand(conn);
							break;
						case SDLK_ESCAPE :
						// quit
						 	quit=true;
							break;
						case SDLK_TAB :
						// cycle other screens
							break;
						case SDLK_UP :
						// forward in song
							mpd_sendSeekCommand(conn, status->song, status->elapsedTime + 5);
							mpd_finishCommand(conn);
							break;
						case SDLK_DOWN :
						// backward in song
							mpd_sendSeekCommand(conn, status->song, status->elapsedTime - 5);
							mpd_finishCommand(conn);
							break;
						default:
							break;
					}
					break;
			}
		}
	}

	shutdown();
	return 0;
}