block displaying elapsed time while seeking properly (alternative ui)

This commit is contained in:
Andrzej Rybczak
2009-08-30 06:53:15 +02:00
parent 762f233b96
commit 0a22debf0e
3 changed files with 5 additions and 2 deletions

View File

@@ -44,6 +44,7 @@ namespace Global
extern bool UpdateStatusImmediately; extern bool UpdateStatusImmediately;
extern bool MessagesAllowed; extern bool MessagesAllowed;
extern bool SeekingInProgress;
extern bool RedrawHeader; extern bool RedrawHeader;
extern bool RedrawStatusbar; extern bool RedrawStatusbar;

View File

@@ -81,6 +81,7 @@ size_t Global::MainHeight;
bool Global::BlockItemListUpdate = 0; bool Global::BlockItemListUpdate = 0;
bool Global::MessagesAllowed = 0; bool Global::MessagesAllowed = 0;
bool Global::SeekingInProgress = 0;
bool Global::RedrawHeader = 1; bool Global::RedrawHeader = 1;
namespace namespace
@@ -1108,6 +1109,7 @@ int main(int argc, char *argv[])
songpos = Mpd.GetElapsedTime(); songpos = Mpd.GetElapsedTime();
SeekingInProgress = 1;
while (Keypressed(input, Key.SeekForward) || Keypressed(input, Key.SeekBackward)) while (Keypressed(input, Key.SeekForward) || Keypressed(input, Key.SeekBackward))
{ {
TraceMpdStatus(); TraceMpdStatus();
@@ -1172,6 +1174,7 @@ int main(int argc, char *argv[])
wFooter->Refresh(); wFooter->Refresh();
} }
Mpd.Seek(songpos); Mpd.Seek(songpos);
SeekingInProgress = 0;
UpdateStatusImmediately = 1; UpdateStatusImmediately = 1;
UnlockProgressbar(); UnlockProgressbar();

View File

@@ -447,8 +447,7 @@ void NcmpcppStatusChanged(Connection *, StatusChanges changed, void *)
size_t second_margin = (std::max(player_state.length(), size_t(8))+1)*2; size_t second_margin = (std::max(player_state.length(), size_t(8))+1)*2;
size_t second_start = second_len < COLS-second_margin ? (COLS-second_len)/2 : player_state.length()+1; size_t second_start = second_len < COLS-second_margin ? (COLS-second_len)/2 : player_state.length()+1;
if (!block_progressbar_update // if blocked, seeking in progress if (!SeekingInProgress)
|| lock_statusbar_delay >= 0) // do not block it if message is displayed
*wHeader << XY(0, 0) << wclrtoeol << tracklength; *wHeader << XY(0, 0) << wclrtoeol << tracklength;
*wHeader << XY(first_start, 0); *wHeader << XY(first_start, 0);
first.Write(*wHeader, first_line_scroll_begin, COLS-tracklength.length()-VolumeState.length()-1, U(" ** ")); first.Write(*wHeader, first_line_scroll_begin, COLS-tracklength.length()-VolumeState.length()-1, U(" ** "));