diff -Naur ncmpc-0.11.1.orig/src/command.c ncmpc-0.11.1/src/command.c --- ncmpc-0.11.1.orig/src/command.c Sun Jan 23 18:37:42 2005 +++ ncmpc-0.11.1/src/command.c Sat Jun 9 16:48:08 2007 @@ -109,8 +109,12 @@ N_("Previous track") }, { { 'f', 0, 0 }, 0, CMD_SEEK_FORWARD, "seek-forward", N_("Seek forward") }, + { { 'F', 0, 0 }, 0, CMD_SEEK_FORWARD_FAST, "seek-forward-fast", + N_("Seek forward fast") }, { { 'b', 0, 0 }, 0, CMD_SEEK_BACKWARD, "seek-backward", N_("Seek backward") }, + { { 'B', 0, 0 }, 0, CMD_SEEK_BACKWARD_FAST, "seek-backward-fast", + N_("Seek backward fast") }, { { '+', RGHT, 0 }, 0, CMD_VOLUME_UP, "volume-up", N_("Increase volume") }, { { '-', LEFT, 0 }, 0, CMD_VOLUME_DOWN, "volume-down", diff -Naur ncmpc-0.11.1.orig/src/command.h ncmpc-0.11.1/src/command.h --- ncmpc-0.11.1.orig/src/command.h Sun Jan 23 18:37:42 2005 +++ ncmpc-0.11.1/src/command.h Sat Jun 9 16:47:38 2007 @@ -14,7 +14,9 @@ CMD_TRACK_NEXT, CMD_TRACK_PREVIOUS, CMD_SEEK_FORWARD, + CMD_SEEK_FORWARD_FAST, CMD_SEEK_BACKWARD, + CMD_SEEK_BACKWARD_FAST, CMD_SHUFFLE, CMD_RANDOM, CMD_CLEAR, diff -Naur ncmpc-0.11.1.orig/src/screen.c ncmpc-0.11.1/src/screen.c --- ncmpc-0.11.1.orig/src/screen.c Sun Jan 23 18:37:42 2005 +++ ncmpc-0.11.1/src/screen.c Sat Jun 9 16:49:58 2007 @@ -18,6 +18,10 @@ * */ +/* Suit seek time for recorded radio plays (30 seconds)*/ +#define FAST_FORWARD_SEEK_TIME 30 +#define FAST_BACKWARD_SEEK_TIME 30 + #include #include #include @@ -702,7 +706,9 @@ { if( c->song && seek_id == c->song->id && (screen->last_cmd == CMD_SEEK_FORWARD || - screen->last_cmd == CMD_SEEK_BACKWARD) ) + screen->last_cmd == CMD_SEEK_FORWARD_FAST || + screen->last_cmd == CMD_SEEK_BACKWARD || + screen->last_cmd == CMD_SEEK_BACKWARD_FAST) ) { mpdclient_cmd_seek(c, seek_id, seek_target_time); } @@ -775,6 +781,20 @@ case CMD_STOP: mpdclient_cmd_stop(c); break; + case CMD_SEEK_FORWARD_FAST: + if( !IS_STOPPED(c->status->state) ) + { + if( c->song && seek_id != c->song->id ) + { + seek_id = c->song->id; + seek_target_time = c->status->elapsedTime; + } + seek_target_time += FAST_FORWARD_SEEK_TIME; + if( seek_target_time < c->status->totalTime ) + break; + seek_target_time = c->status->totalTime; + } + break; case CMD_SEEK_FORWARD: if( !IS_STOPPED(c->status->state) ) { @@ -804,6 +824,19 @@ seek_target_time = c->status->elapsedTime; } seek_target_time--; + if( seek_target_time < 0 ) + seek_target_time=0; + } + break; + case CMD_SEEK_BACKWARD_FAST: + if( !IS_STOPPED(c->status->state) ) + { + if( seek_id != c->song->id ) + { + seek_id = c->song->id; + seek_target_time = c->status->elapsedTime; + } + seek_target_time -= FAST_BACKWARD_SEEK_TIME; if( seek_target_time < 0 ) seek_target_time=0; } diff -Naur ncmpc-0.11.1.orig/src/screen_help.c ncmpc-0.11.1/src/screen_help.c --- ncmpc-0.11.1.orig/src/screen_help.c Sun Jan 23 18:37:42 2005 +++ ncmpc-0.11.1/src/screen_help.c Sat Jun 9 16:56:22 2007 @@ -72,7 +72,9 @@ { 0, CMD_TRACK_NEXT, NULL }, { 0, CMD_TRACK_PREVIOUS, NULL }, { 0, CMD_SEEK_FORWARD, NULL }, + { 0, CMD_SEEK_FORWARD_FAST, NULL }, { 0, CMD_SEEK_BACKWARD, NULL }, + { 0, CMD_SEEK_BACKWARD_FAST, NULL }, { 0, CMD_VOLUME_DOWN, NULL }, { 0, CMD_VOLUME_UP, NULL }, { 0, CMD_NONE, NULL },