summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLouis Burda <quent.burda@gmail.com>2023-03-16 13:32:35 +0100
committerLouis Burda <quent.burda@gmail.com>2023-03-16 13:32:35 +0100
commitf1996f51ba1744260bba4d7c3aa5d9a84c97236e (patch)
tree0f107e7047714ee4c1ba19aa70cee4ea0a309156 /src
parent862b65a3a02afa19d4998565d4bb438bef3ed2ec (diff)
downloadtmus-f1996f51ba1744260bba4d7c3aa5d9a84c97236e.tar.gz
tmus-f1996f51ba1744260bba4d7c3aa5d9a84c97236e.zip
Update liblist and add keybind to sort tracks and tags
Diffstat (limited to 'src')
-rw-r--r--src/main.c1
-rw-r--r--src/tui.c45
2 files changed, 45 insertions, 1 deletions
diff --git a/src/main.c b/src/main.c
index 024293c..79d50ab 100644
--- a/src/main.c
+++ b/src/main.c
@@ -40,7 +40,6 @@ init(void)
on_exit(cleanup, NULL);
signal(SIGINT, stop);
signal(SIGTERM, exit);
- signal(SIGKILL, exit);
}
void
diff --git a/src/tui.c b/src/tui.c
index 343b1f5..0a74238 100644
--- a/src/tui.c
+++ b/src/tui.c
@@ -1,3 +1,4 @@
+#include <stdbool.h>
#define NCURSES_WIDECHAR 1
#define _GNU_SOURCE
@@ -53,6 +54,8 @@ static bool toggle_current_tag(void);
static void select_only_current_tag(void);
static void seek_next_selected_tag(void);
static void delete_current_tag(void);
+static bool tag_name_cmp(struct link *l1, struct link *l2);
+static void sort_visible_tags(void);
static bool tag_pane_input(wint_t c);
static void tag_pane_vis(struct pane *pane, int sel);
@@ -63,6 +66,8 @@ static bool rename_current_track(void);
static bool delete_current_track(void);
static void queue_current_track(void);
static void unqueue_last_track(void);
+static bool track_vis_name_cmp(struct link *l1, struct link *l2);
+static void sort_visible_tracks(void);
static bool track_pane_input(wint_t c);
static void track_pane_vis(struct pane *pane, int sel);
@@ -416,6 +421,23 @@ delete_current_tag(void)
}
bool
+tag_name_cmp(struct link *l1, struct link *l2)
+{
+ struct tag *t1, *t2;
+
+ t1 = LINK_UPCAST(l1, struct tag, link);
+ t2 = LINK_UPCAST(l2, struct tag, link);
+
+ return strcmp(t1->name, t2->name) <= 0;
+}
+
+void
+sort_visible_tags(void)
+{
+ list_sort(&tags, false, tag_name_cmp);
+}
+
+bool
tag_pane_input(wint_t c)
{
switch (c) {
@@ -452,6 +474,9 @@ tag_pane_input(wint_t c)
case L'D': /* delete tag */
delete_current_tag();
break;
+ case KEY_CTRL(L's'):
+ sort_visible_tags();
+ break;
default:
return false;
}
@@ -622,6 +647,23 @@ unqueue_last_track(void)
}
bool
+track_vis_name_cmp(struct link *l1, struct link *l2)
+{
+ struct track *t1, *t2;
+
+ t1 = tracks_vis_track(l1);
+ t2 = tracks_vis_track(l2);
+
+ return strcmp(t1->name, t2->name) <= 0;
+}
+
+void
+sort_visible_tracks(void)
+{
+ list_sort(tracks_vis, false, track_vis_name_cmp);
+}
+
+bool
track_pane_input(wint_t c)
{
switch (c) {
@@ -663,6 +705,9 @@ track_pane_input(wint_t c)
case L'D': /* delete track */
delete_current_track();
break;
+ case KEY_CTRL(L's'): /* sort track in view */
+ sort_visible_tracks();
+ break;
default:
return false;
}