summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorailurux <ailuruxx@gmail.com>2025-01-31 12:25:05 +1100
committerailurux <ailuruxx@gmail.com>2025-01-31 12:25:05 +1100
commit5e3cfc8f3db18fac8e8962259f6521550add4139 (patch)
tree774003df582f6986f4354e86223fcdaa52cf966e
parent001fc52ec87bf04b5fb5a262d310738e5dd3682a (diff)
parentabf13d4ec112fc430b9fadea69455aa45d4e3cd6 (diff)
downloadtangara-fw-5e3cfc8f3db18fac8e8962259f6521550add4139.tar.gz
Merge branch 'main' of codeberg.org:cool-tech-zone/tangara-fw
-rw-r--r--lib/libtags/id3v2.c2
-rw-r--r--lib/libtags/tags.h1
-rw-r--r--lib/libtags/vorbis.c1
-rw-r--r--lua/browser.lua1
-rw-r--r--lua/file_browser.lua1
-rw-r--r--lua/widgets.lua8
-rw-r--r--src/drivers/nvs.cpp6
-rw-r--r--src/tangara/database/tag_parser.cpp2
8 files changed, 17 insertions, 5 deletions
diff --git a/lib/libtags/id3v2.c b/lib/libtags/id3v2.c
index 0e8ddb11..eced01f8 100644
--- a/lib/libtags/id3v2.c
+++ b/lib/libtags/id3v2.c
@@ -68,6 +68,8 @@ v2cb(Tagctx *ctx, char *k, char *v)
return 0;
}else if(strcmp(k-1, "COM") == 0 || strcmp(k-1, "COMM") == 0){
txtcb(ctx, Tcomment, k-1, v);
+ }else if(strcmp(k, "POS") == 0){
+ txtcb(ctx, Tdisc, k-1, v);
}else if(strcmp(k, "XXX") == 0){
k = v;
v += strlen(v) + 1;
diff --git a/lib/libtags/tags.h b/lib/libtags/tags.h
index d9da6c2e..b2aa2dfb 100644
--- a/lib/libtags/tags.h
+++ b/lib/libtags/tags.h
@@ -16,6 +16,7 @@ enum
Ttitle,
Tdate, /* "2014", "2015/02/01", but the year goes first */
Ttrack, /* "1", "01", "1/4", but the track number goes first */
+ Tdisc,
Talbumgain,
Talbumpeak,
Ttrackgain,
diff --git a/lib/libtags/vorbis.c b/lib/libtags/vorbis.c
index bea70aaf..d6219a24 100644
--- a/lib/libtags/vorbis.c
+++ b/lib/libtags/vorbis.c
@@ -14,6 +14,7 @@ static const struct {
{"artists", Tmultiartists},
{"albumartist", Talbumartist},
{"tracknumber", Ttrack},
+ {"discnumber", Tdisc},
{"date", Tdate},
{"replaygain_track_peak", Ttrackpeak},
{"replaygain_track_gain", Ttrackgain},
diff --git a/lua/browser.lua b/lua/browser.lua
index 2a024fc5..264db0c5 100644
--- a/lua/browser.lua
+++ b/lua/browser.lua
@@ -118,6 +118,7 @@ return screen:new {
end
widgets.InfiniteList(self.root, self.iterator, {
+ focus_first_item = true,
get_icon = get_icon_func,
callback = function(item)
return function()
diff --git a/lua/file_browser.lua b/lua/file_browser.lua
index a85c2ba2..98261d55 100644
--- a/lua/file_browser.lua
+++ b/lua/file_browser.lua
@@ -59,6 +59,7 @@ return screen:new {
end
widgets.InfiniteList(self.root, self.iterator, {
+ focus_first_item = true,
callback = function(item)
return function()
local is_dir = item:is_directory()
diff --git a/lua/widgets.lua b/lua/widgets.lua
index 5e18809b..0aac7705 100644
--- a/lua/widgets.lua
+++ b/lua/widgets.lua
@@ -306,10 +306,11 @@ function widgets.InfiniteList(parent, iterator, opts)
fwd_iterator:prev()
end
- local function add_item(item, index)
+ local function add_item(item, index, item_opts)
if not item then
return
end
+ item_opts = item_opts or {}
local this_item = index
local add_to_top = false
if this_item < first_index then
@@ -325,6 +326,9 @@ function widgets.InfiniteList(parent, iterator, opts)
if add_to_top then
btn:move_to_index(0)
end
+ if item_opts.focus then
+ btn:focus()
+ end
-- opts.callback should take an item and return a function matching the arg of onClicked
if opts.callback then
btn:onClicked(opts.callback(item))
@@ -361,7 +365,7 @@ function widgets.InfiniteList(parent, iterator, opts)
if not val then
break
end
- add_item(val, idx)
+ add_item(val, idx, { focus = (opts.focus_first_item and idx == 0) })
end
return infinite_list
diff --git a/src/drivers/nvs.cpp b/src/drivers/nvs.cpp
index 6c916e60..6f0d874e 100644
--- a/src/drivers/nvs.cpp
+++ b/src/drivers/nvs.cpp
@@ -172,9 +172,7 @@ auto Setting<std::vector<bluetooth::MacAndName>>::store(
}
template <>
-auto Setting<std::string>::store(
- nvs_handle_t nvs,
- std::string v) -> void {
+auto Setting<std::string>::store(nvs_handle_t nvs, std::string v) -> void {
cppbor::Tstr cbor{v};
auto encoded = cbor.encode();
nvs_set_blob(nvs, name_, encoded.data(), encoded.size());
@@ -295,6 +293,7 @@ auto NvsStorage::Read() -> void {
display_rows_.read(handle_);
haptic_motor_type_.read(handle_);
lra_calibration_.read(handle_);
+ fast_charge_.read(handle_);
brightness_.read(handle_);
sensitivity_.read(handle_);
amp_max_vol_.read(handle_);
@@ -317,6 +316,7 @@ auto NvsStorage::Write() -> bool {
display_rows_.write(handle_);
haptic_motor_type_.write(handle_);
lra_calibration_.write(handle_);
+ fast_charge_.write(handle_);
brightness_.write(handle_);
sensitivity_.write(handle_);
amp_max_vol_.write(handle_);
diff --git a/src/tangara/database/tag_parser.cpp b/src/tangara/database/tag_parser.cpp
index 59bd8f13..6c95d496 100644
--- a/src/tangara/database/tag_parser.cpp
+++ b/src/tangara/database/tag_parser.cpp
@@ -41,6 +41,8 @@ static auto convert_tag(int tag) -> std::optional<Tag> {
return Tag::kAlbum;
case Ttrack:
return Tag::kTrack;
+ case Tdisc:
+ return Tag::kDisc;
case Tgenre:
return Tag::kGenres;
default: