summaryrefslogtreecommitdiffstats
path: root/main.c
diff options
context:
space:
mode:
authorLouis Burda <quent.burda@gmail.com>2021-12-18 13:11:07 +0100
committerLouis Burda <quent.burda@gmail.com>2021-12-20 15:32:29 +0100
commit4b0b3da65906ae892fa3f46a3482dd36b32c816c (patch)
tree26d4b8240cc894e1e9a1432605c27c65cbbf2e0d /main.c
parent69e7a9341e811bf658f8d75bb43f6613d298c87d (diff)
downloadtmus-4b0b3da65906ae892fa3f46a3482dd36b32c816c.tar.gz
tmus-4b0b3da65906ae892fa3f46a3482dd36b32c816c.zip
Add player queuing
Diffstat (limited to 'main.c')
-rw-r--r--main.c28
1 files changed, 24 insertions, 4 deletions
diff --git a/main.c b/main.c
index 1d6391e..9e37290 100644
--- a/main.c
+++ b/main.c
@@ -14,6 +14,7 @@
#include "curses.h"
#include <dirent.h>
+#include <locale.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
@@ -157,6 +158,8 @@ init(void)
{
quit = 0;
+ setlocale(LC_ALL, "");
+
/* TODO handle as character intead of signal */
signal(SIGINT, exit);
atexit(cleanup);
@@ -532,10 +535,10 @@ track_input(wint_t c)
player_play_track(track);
return 1;
case KEY_PPAGE:
- listnav_update_sel(&track_nav, track_nav.sel + track_nav.wlen / 2);
+ listnav_update_sel(&track_nav, track_nav.sel - track_nav.wlen / 2);
return 1;
case KEY_NPAGE:
- listnav_update_sel(&track_nav, track_nav.sel - track_nav.wlen / 2);
+ listnav_update_sel(&track_nav, track_nav.sel + track_nav.wlen / 2);
return 1;
}
@@ -667,7 +670,8 @@ cmd_input(wint_t c)
inputln_copy(&completion_query, history->query);
}
- res = completion(completion_query.buf, c == KEY_TAB, completion_reset);
+ res = completion(completion_query.buf,
+ c == KEY_TAB, completion_reset);
if (res) inputln_replace(history->query, res);
free(res);
@@ -703,7 +707,7 @@ cmd_vis(struct pane *pane, int sel)
wmove(pane->win, 0, 0);
style_on(pane->win, STYLE_TITLE);
wprintw(pane->win, " %-*.*ls\n", pane->w - 1, pane->w - 1,
- player->track ? player->track->name : L"");
+ player->track ? player->track->name : L"");
style_off(pane->win, STYLE_TITLE);
if (player->loaded) {
@@ -714,6 +718,9 @@ cmd_vis(struct pane *pane, int sel)
line = appendstrf(line, " - vol: %u%%", player->volume);
if (player->msg)
line = appendstrf(line, " | [PLAYER] %s", player->msg);
+ if (!list_empty(&player->queue))
+ line = appendstrf(line, " | [QUEUE] %i tracks",
+ list_len(&player->queue));
wmove(pane->win, 1, 0);
ATTR_ON(pane->win, A_REVERSE);
@@ -755,6 +762,16 @@ cmd_vis(struct pane *pane, int sel)
}
void
+queue_hover(void)
+{
+ struct link *link;
+
+ link = link_iter(playlist.next, track_nav.sel);
+ ASSERT(link != NULL);
+ player_queue_append(UPCAST(link, struct ref)->data);
+}
+
+void
main_input(wint_t c)
{
switch (c) {
@@ -781,6 +798,9 @@ main_input(wint_t c)
}
}
break;
+ case L'y':
+ queue_hover();
+ break;
case L'c':
player_toggle_pause();
break;