diff options
| author | Přemysl Eric Janouch <p@janouch.name> | 2022-08-24 23:21:16 +0200 | 
|---|---|---|
| committer | Přemysl Eric Janouch <p@janouch.name> | 2022-08-24 23:21:16 +0200 | 
| commit | a77d872e7fdd109ece11275cb3a1d48574199fb3 (patch) | |
| tree | 7cbaa80adb1b4596b4623f4df9cef30e9e64f08f | |
| parent | 179e0a123bb552c7186913e2473b344079dcc3bc (diff) | |
| download | nncmpp-a77d872e7fdd109ece11275cb3a1d48574199fb3.tar.gz nncmpp-a77d872e7fdd109ece11275cb3a1d48574199fb3.tar.xz nncmpp-a77d872e7fdd109ece11275cb3a1d48574199fb3.zip | |
Try to stuff more things in the status bar
| -rw-r--r-- | nncmpp.c | 55 | 
1 files changed, 32 insertions, 23 deletions
| @@ -2095,32 +2095,46 @@ app_layout_view (void)  	app_flush_layout (&l);  } -static char * -app_mpd_status_playlist (void) +static void +app_layout_mpd_status_playlist (struct layout *l, chtype attrs)  { -	struct str stats = str_make (); -	if (g.playlist.len == 1) -		str_append_printf (&stats, "1 song "); -	else -		str_append_printf (&stats, "%zu songs ", g.playlist.len); +	char *songs = (g.playlist.len == 1) +		? xstrdup_printf ("1 song") +		: xstrdup_printf ("%zu songs", g.playlist.len); +	app_push (l, g.ui->label (attrs, songs)); +	free (songs);  	int hours   = g.playlist_time / 3600;  	int minutes = g.playlist_time % 3600 / 60;  	if (hours || minutes)  	{ -		str_append_c (&stats, ' '); - +		struct str length = str_make ();  		if (hours == 1) -			str_append_printf (&stats, " 1 hour"); +			str_append_printf (&length, " 1 hour");  		else if (hours) -			str_append_printf (&stats, " %d hours", hours); +			str_append_printf (&length, " %d hours", hours);  		if (minutes == 1) -			str_append_printf (&stats, " 1 minute"); +			str_append_printf (&length, " 1 minute");  		else if (minutes) -			str_append_printf (&stats, " %d minutes", minutes); +			str_append_printf (&length, " %d minutes", minutes); + +		app_push (l, g.ui->padding (attrs, 1, 1)); +		app_push (l, g.ui->label (attrs, length.str + 1)); +		str_free (&length); +	} + +	const char *task = NULL; +	if (g.poller_curl.registered) +		task = "Downloading..."; +	else if (str_map_find (&g.playback_info, "updating_db")) +		task = "Updating database..."; + +	if (task) +	{ +		app_push (l, g.ui->padding (attrs, 1, 1)); +		app_push (l, g.ui->label (attrs, task));  	} -	return str_steal (&stats);  }  static void @@ -2130,7 +2144,6 @@ app_layout_mpd_status (void)  	chtype attrs[2] = { APP_ATTR (NORMAL), APP_ATTR (HIGHLIGHT) };  	app_push (&l, g.ui->padding (attrs[0], 0.25, 1)); -	struct str_map *map = &g.playback_info;  	if (g.active_tab->item_mark > -1)  	{  		struct tab_range r = tab_selection_range (g.active_tab); @@ -2139,18 +2152,14 @@ app_layout_mpd_status (void)  		app_push_fill (&l, g.ui->label (attrs[0], msg));  		free (msg);  	} -	else if (g.poller_curl.registered) -		app_push_fill (&l, g.ui->label (attrs[0], "Downloading...")); -	else if (str_map_find (map, "updating_db")) -		app_push_fill (&l, g.ui->label (attrs[0], "Updating database..."));  	else  	{ -		char *status = app_mpd_status_playlist (); -		app_push_fill (&l, g.ui->label (attrs[0], status)); -		free (status); +		app_layout_mpd_status_playlist (&l, attrs[0]); +		l.tail->width = -1;  	} -	const char *s; +	const char *s = NULL; +	struct str_map *map = &g.playback_info;  	bool repeat  = (s = str_map_find (map, "repeat"))  && strcmp (s, "0");  	bool random  = (s = str_map_find (map, "random"))  && strcmp (s, "0");  	bool single  = (s = str_map_find (map, "single"))  && strcmp (s, "0"); | 
