diff options
| author | Louis Burda <quent.burda@gmail.com> | 2023-03-16 13:32:35 +0100 |
|---|---|---|
| committer | Louis Burda <quent.burda@gmail.com> | 2023-03-16 13:32:35 +0100 |
| commit | f1996f51ba1744260bba4d7c3aa5d9a84c97236e (patch) | |
| tree | 0f107e7047714ee4c1ba19aa70cee4ea0a309156 /src | |
| parent | 862b65a3a02afa19d4998565d4bb438bef3ed2ec (diff) | |
| download | tmus-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.c | 1 | ||||
| -rw-r--r-- | src/tui.c | 45 |
2 files changed, 45 insertions, 1 deletions
@@ -40,7 +40,6 @@ init(void) on_exit(cleanup, NULL); signal(SIGINT, stop); signal(SIGTERM, exit); - signal(SIGKILL, exit); } void @@ -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; } |
