add incremental seeking as an option (enabled by default)

This commit is contained in:
unK
2008-09-17 20:30:11 +02:00
parent 022bf9781e
commit 3bbe2c5054
4 changed files with 37 additions and 24 deletions

View File

@@ -96,6 +96,8 @@
# #
#playlist_display_mode = "normal" (classic/columns) #playlist_display_mode = "normal" (classic/columns)
# #
#incremental_seeking = "yes"
#
#autocenter_mode = "no" #autocenter_mode = "no"
# #
#repeat_one_mode = "no" #repeat_one_mode = "no"
@@ -112,14 +114,14 @@
# #
#statusbar_visibility = "yes" #statusbar_visibility = "yes"
# #
#fancy_scrolling = "yes"
#
#enable_window_title = "yes" #enable_window_title = "yes"
# #
##### colors definitions ##### ##### colors definitions #####
# #
#colors_enabled = "yes" #colors_enabled = "yes"
# #
#fancy_scrolling = "yes"
#
#empty_tag_color = "cyan" #empty_tag_color = "cyan"
# #
#header_window_color = "default" #header_window_color = "default"

View File

@@ -2090,39 +2090,44 @@ int main(int argc, char *argv[])
block_progressbar_update = 1; block_progressbar_update = 1;
LockStatusbar(); LockStatusbar();
int songpos, in; int songpos;
time_t t = time(NULL);
songpos = Mpd->GetElapsedTime(); songpos = Mpd->GetElapsedTime();
Song &s = mPlaylist->at(now_playing); Song &s = mPlaylist->at(now_playing);
while (1) while (Keypressed(input, Key.SeekForward) || Keypressed(input, Key.SeekBackward))
{ {
TraceMpdStatus(); TraceMpdStatus();
timer = time(NULL); timer = time(NULL);
mPlaylist->ReadKey(in); mPlaylist->ReadKey(input);
if (Keypressed(in, Key.SeekForward) || Keypressed(in, Key.SeekBackward))
int howmuch = Config.incremental_seeking ? (timer-t)/2+1 : 1;
if (songpos < s.GetTotalLength() && Keypressed(input, Key.SeekForward))
{ {
if (songpos < s.GetTotalLength() && Keypressed(in, Key.SeekForward)) songpos += howmuch;
songpos++; if (songpos > s.GetTotalLength())
if (songpos < s.GetTotalLength() && songpos > 0 && Keypressed(in, Key.SeekBackward)) songpos = s.GetTotalLength();
songpos--; }
if (songpos < s.GetTotalLength() && songpos > 0 && Keypressed(input, Key.SeekBackward))
{
songpos -= howmuch;
if (songpos < 0) if (songpos < 0)
songpos = 0; songpos = 0;
wFooter->Bold(1);
string tracklength = "[" + Song::ShowTime(songpos) + "/" + s.GetLength() + "]";
wFooter->WriteXY(wFooter->GetWidth()-tracklength.length(), 1, tracklength);
double progressbar_size = (double)songpos/(s.GetTotalLength());
int howlong = wFooter->GetWidth()*progressbar_size;
mvwhline(wFooter->RawWin(), 0, 0, 0, wFooter->GetWidth());
mvwhline(wFooter->RawWin(), 0, 0, '=',howlong);
mvwaddch(wFooter->RawWin(), 0, howlong, '>');
wFooter->Bold(0);
wFooter->Refresh();
} }
else
break; wFooter->Bold(1);
string tracklength = "[" + Song::ShowTime(songpos) + "/" + s.GetLength() + "]";
wFooter->WriteXY(wFooter->GetWidth()-tracklength.length(), 1, tracklength);
double progressbar_size = (double)songpos/(s.GetTotalLength());
int howlong = wFooter->GetWidth()*progressbar_size;
mvwhline(wFooter->RawWin(), 0, 0, 0, wFooter->GetWidth());
mvwhline(wFooter->RawWin(), 0, 0, '=',howlong);
mvwaddch(wFooter->RawWin(), 0, howlong, '>');
wFooter->Bold(0);
wFooter->Refresh();
} }
Mpd->Seek(songpos); Mpd->Seek(songpos);

View File

@@ -185,6 +185,7 @@ void DefaultConfiguration(ncmpcpp_config &conf)
conf.wrapped_search = true; conf.wrapped_search = true;
conf.space_selects = false; conf.space_selects = false;
conf.albums_in_tag_editor = false; conf.albums_in_tag_editor = false;
conf.incremental_seeking = true;
conf.set_window_title = true; conf.set_window_title = true;
conf.mpd_connection_timeout = 15; conf.mpd_connection_timeout = 15;
conf.crossfade_time = 5; conf.crossfade_time = 5;
@@ -564,6 +565,10 @@ void ReadConfiguration(ncmpcpp_config &conf)
{ {
conf.albums_in_tag_editor = v == "albums"; conf.albums_in_tag_editor = v == "albums";
} }
else if (it->find("incremental_seeking") != string::npos)
{
conf.incremental_seeking = v == "yes";
}
else if (it->find("enable_window_title") != string::npos) else if (it->find("enable_window_title") != string::npos)
{ {
conf.set_window_title = v == "yes"; conf.set_window_title = v == "yes";

View File

@@ -134,6 +134,7 @@ struct ncmpcpp_config
bool wrapped_search; bool wrapped_search;
bool space_selects; bool space_selects;
bool albums_in_tag_editor; bool albums_in_tag_editor;
bool incremental_seeking;
int mpd_connection_timeout; int mpd_connection_timeout;
int crossfade_time; int crossfade_time;