a working build of the new update
Some checks failed
/ clippy (push) Failing after 5m8s
/ test (push) Failing after 12m14s

This commit is contained in:
Chris Cochrun 2026-04-03 15:14:07 -05:00
parent b05f29d7b5
commit 896eda5b9d
10 changed files with 342 additions and 347 deletions

215
Cargo.lock generated
View file

@ -965,9 +965,9 @@ dependencies = [
[[package]]
name = "cc"
version = "1.2.58"
version = "1.2.59"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e1e928d4b69e3077709075a938a05ffbedfa53a84c8f766efbf8220bb1ff60e1"
checksum = "b7a4d3ec6524d28a329fc53654bbadc9bdd7b0431f5d65f1a56ffb28a1ee5283"
dependencies = [
"find-msvc-tools",
"jobserver",
@ -1128,6 +1128,36 @@ dependencies = [
"cc",
]
[[package]]
name = "cocoa"
version = "0.25.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c"
dependencies = [
"bitflags 1.3.2",
"block",
"cocoa-foundation",
"core-foundation 0.9.4",
"core-graphics",
"foreign-types",
"libc",
"objc",
]
[[package]]
name = "cocoa-foundation"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7"
dependencies = [
"bitflags 1.3.2",
"block",
"core-foundation 0.9.4",
"core-graphics-types 0.1.3",
"libc",
"objc",
]
[[package]]
name = "codespan-reporting"
version = "0.12.0"
@ -1303,7 +1333,7 @@ dependencies = [
[[package]]
name = "cosmic-config"
version = "1.0.0"
source = "git+https://github.com/pop-os/libcosmic#12be83a8ef58019a1bd31ead100040244bd05f16"
source = "git+https://github.com/pop-os/libcosmic#fdf3369cea2f772aabb5f7c4e5cdf6406780f6ab"
dependencies = [
"atomicwrites",
"cosmic-config-derive",
@ -1324,7 +1354,7 @@ dependencies = [
[[package]]
name = "cosmic-config-derive"
version = "1.0.0"
source = "git+https://github.com/pop-os/libcosmic#12be83a8ef58019a1bd31ead100040244bd05f16"
source = "git+https://github.com/pop-os/libcosmic#fdf3369cea2f772aabb5f7c4e5cdf6406780f6ab"
dependencies = [
"quote",
"syn",
@ -1405,7 +1435,7 @@ dependencies = [
[[package]]
name = "cosmic-theme"
version = "1.0.0"
source = "git+https://github.com/pop-os/libcosmic#12be83a8ef58019a1bd31ead100040244bd05f16"
source = "git+https://github.com/pop-os/libcosmic#fdf3369cea2f772aabb5f7c4e5cdf6406780f6ab"
dependencies = [
"almost",
"configparser",
@ -1867,6 +1897,45 @@ name = "dpi"
version = "0.1.2"
source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#a610ac9c7a72b39ff102ed4d946291618dc725b6"
[[package]]
name = "drm"
version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a0f8a69e60d75ae7dab4ef26a59ca99f2a89d4c142089b537775ae0c198bdcde"
dependencies = [
"bitflags 2.11.0",
"bytemuck",
"drm-ffi",
"drm-fourcc",
"rustix 0.38.44",
]
[[package]]
name = "drm-ffi"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "41334f8405792483e32ad05fbb9c5680ff4e84491883d2947a4757dc54cb2ac6"
dependencies = [
"drm-sys",
"rustix 0.38.44",
]
[[package]]
name = "drm-fourcc"
version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0aafbcdb8afc29c1a7ee5fbe53b5d62f4565b35a042a662ca9fecd0b54dae6f4"
[[package]]
name = "drm-sys"
version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2d09ff881f92f118b11105ba5e34ff8f4adf27b30dae8f12e28c193af1c83176"
dependencies = [
"libc",
"linux-raw-sys 0.6.5",
]
[[package]]
name = "dtoa"
version = "1.0.11"
@ -2293,9 +2362,9 @@ dependencies = [
[[package]]
name = "font-types"
version = "0.11.1"
version = "0.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "73829a7b5c91198af28a99159b7ae4afbb252fb906159ff7f189f3a2ceaa3df2"
checksum = "2d9237c6d82152100c691fb77ea18037b402bcc7257d2c876a4ffac81bc22a1c"
dependencies = [
"bytemuck",
]
@ -3011,7 +3080,7 @@ dependencies = [
"futures-core",
"futures-sink",
"http",
"indexmap 2.13.0",
"indexmap 2.13.1",
"slab",
"tokio",
"tokio-util",
@ -3349,7 +3418,7 @@ dependencies = [
[[package]]
name = "iced"
version = "0.14.0"
source = "git+https://github.com/pop-os/libcosmic#12be83a8ef58019a1bd31ead100040244bd05f16"
source = "git+https://github.com/pop-os/libcosmic#fdf3369cea2f772aabb5f7c4e5cdf6406780f6ab"
dependencies = [
"dnd",
"iced_accessibility",
@ -3371,7 +3440,7 @@ dependencies = [
[[package]]
name = "iced_accessibility"
version = "0.1.0"
source = "git+https://github.com/pop-os/libcosmic#12be83a8ef58019a1bd31ead100040244bd05f16"
source = "git+https://github.com/pop-os/libcosmic#fdf3369cea2f772aabb5f7c4e5cdf6406780f6ab"
dependencies = [
"accesskit",
"accesskit_winit",
@ -3380,7 +3449,7 @@ dependencies = [
[[package]]
name = "iced_beacon"
version = "0.14.0"
source = "git+https://github.com/pop-os/libcosmic#12be83a8ef58019a1bd31ead100040244bd05f16"
source = "git+https://github.com/pop-os/libcosmic#fdf3369cea2f772aabb5f7c4e5cdf6406780f6ab"
dependencies = [
"bincode",
"futures",
@ -3395,7 +3464,7 @@ dependencies = [
[[package]]
name = "iced_core"
version = "0.14.0"
source = "git+https://github.com/pop-os/libcosmic#12be83a8ef58019a1bd31ead100040244bd05f16"
source = "git+https://github.com/pop-os/libcosmic#fdf3369cea2f772aabb5f7c4e5cdf6406780f6ab"
dependencies = [
"bitflags 2.11.0",
"bytes",
@ -3420,7 +3489,7 @@ dependencies = [
[[package]]
name = "iced_debug"
version = "0.14.0"
source = "git+https://github.com/pop-os/libcosmic#12be83a8ef58019a1bd31ead100040244bd05f16"
source = "git+https://github.com/pop-os/libcosmic#fdf3369cea2f772aabb5f7c4e5cdf6406780f6ab"
dependencies = [
"iced_beacon",
"iced_core",
@ -3431,7 +3500,7 @@ dependencies = [
[[package]]
name = "iced_devtools"
version = "0.14.0"
source = "git+https://github.com/pop-os/libcosmic#12be83a8ef58019a1bd31ead100040244bd05f16"
source = "git+https://github.com/pop-os/libcosmic#fdf3369cea2f772aabb5f7c4e5cdf6406780f6ab"
dependencies = [
"iced_debug",
"iced_program",
@ -3442,7 +3511,7 @@ dependencies = [
[[package]]
name = "iced_futures"
version = "0.14.0"
source = "git+https://github.com/pop-os/libcosmic#12be83a8ef58019a1bd31ead100040244bd05f16"
source = "git+https://github.com/pop-os/libcosmic#fdf3369cea2f772aabb5f7c4e5cdf6406780f6ab"
dependencies = [
"futures",
"iced_core",
@ -3456,7 +3525,7 @@ dependencies = [
[[package]]
name = "iced_graphics"
version = "0.14.0"
source = "git+https://github.com/pop-os/libcosmic#12be83a8ef58019a1bd31ead100040244bd05f16"
source = "git+https://github.com/pop-os/libcosmic#fdf3369cea2f772aabb5f7c4e5cdf6406780f6ab"
dependencies = [
"bitflags 2.11.0",
"bytemuck",
@ -3477,7 +3546,7 @@ dependencies = [
[[package]]
name = "iced_program"
version = "0.14.0"
source = "git+https://github.com/pop-os/libcosmic#12be83a8ef58019a1bd31ead100040244bd05f16"
source = "git+https://github.com/pop-os/libcosmic#fdf3369cea2f772aabb5f7c4e5cdf6406780f6ab"
dependencies = [
"iced_graphics",
"iced_runtime",
@ -3486,7 +3555,7 @@ dependencies = [
[[package]]
name = "iced_renderer"
version = "0.14.0"
source = "git+https://github.com/pop-os/libcosmic#12be83a8ef58019a1bd31ead100040244bd05f16"
source = "git+https://github.com/pop-os/libcosmic#fdf3369cea2f772aabb5f7c4e5cdf6406780f6ab"
dependencies = [
"iced_graphics",
"iced_tiny_skia",
@ -3498,7 +3567,7 @@ dependencies = [
[[package]]
name = "iced_runtime"
version = "0.14.0"
source = "git+https://github.com/pop-os/libcosmic#12be83a8ef58019a1bd31ead100040244bd05f16"
source = "git+https://github.com/pop-os/libcosmic#fdf3369cea2f772aabb5f7c4e5cdf6406780f6ab"
dependencies = [
"bytes",
"cosmic-client-toolkit",
@ -3514,7 +3583,7 @@ dependencies = [
[[package]]
name = "iced_tiny_skia"
version = "0.14.0"
source = "git+https://github.com/pop-os/libcosmic#12be83a8ef58019a1bd31ead100040244bd05f16"
source = "git+https://github.com/pop-os/libcosmic#fdf3369cea2f772aabb5f7c4e5cdf6406780f6ab"
dependencies = [
"bytemuck",
"cosmic-text",
@ -3548,11 +3617,12 @@ dependencies = [
[[package]]
name = "iced_wgpu"
version = "0.14.0"
source = "git+https://github.com/pop-os/libcosmic#12be83a8ef58019a1bd31ead100040244bd05f16"
source = "git+https://github.com/pop-os/libcosmic#fdf3369cea2f772aabb5f7c4e5cdf6406780f6ab"
dependencies = [
"as-raw-xcb-connection",
"bitflags 2.11.0",
"bytemuck",
"cosmic-client-toolkit",
"cryoglyph",
"futures",
"glam",
@ -3578,7 +3648,7 @@ dependencies = [
[[package]]
name = "iced_widget"
version = "0.14.2"
source = "git+https://github.com/pop-os/libcosmic#12be83a8ef58019a1bd31ead100040244bd05f16"
source = "git+https://github.com/pop-os/libcosmic#fdf3369cea2f772aabb5f7c4e5cdf6406780f6ab"
dependencies = [
"cosmic-client-toolkit",
"dnd",
@ -3597,7 +3667,7 @@ dependencies = [
[[package]]
name = "iced_winit"
version = "0.14.0"
source = "git+https://github.com/pop-os/libcosmic#12be83a8ef58019a1bd31ead100040244bd05f16"
source = "git+https://github.com/pop-os/libcosmic#fdf3369cea2f772aabb5f7c4e5cdf6406780f6ab"
dependencies = [
"cosmic-client-toolkit",
"cursor-icon",
@ -3807,9 +3877,9 @@ dependencies = [
[[package]]
name = "indexmap"
version = "2.13.0"
version = "2.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017"
checksum = "45a8a2b9cb3e0b0c1803dbb0758ffac5de2f425b23c28f518faabd9d805342ff"
dependencies = [
"equivalent",
"hashbrown 0.16.1",
@ -4183,7 +4253,7 @@ checksum = "48f5d2a454e16a5ea0f4ced81bd44e4cfc7bd3a507b61887c99fd3538b28e4af"
[[package]]
name = "libcosmic"
version = "1.0.0"
source = "git+https://github.com/pop-os/libcosmic#12be83a8ef58019a1bd31ead100040244bd05f16"
source = "git+https://github.com/pop-os/libcosmic#fdf3369cea2f772aabb5f7c4e5cdf6406780f6ab"
dependencies = [
"apply",
"ashpd 0.12.3",
@ -4303,6 +4373,12 @@ version = "0.4.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab"
[[package]]
name = "linux-raw-sys"
version = "0.6.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a385b1be4e5c3e362ad2ffa73c392e53f031eaa5b7d648e64cd87f27f6063d7"
[[package]]
name = "linux-raw-sys"
version = "0.12.1"
@ -4709,7 +4785,7 @@ dependencies = [
"half",
"hashbrown 0.16.1",
"hexf-parse",
"indexmap 2.13.0",
"indexmap 2.13.1",
"libm",
"log",
"num-traits",
@ -5011,7 +5087,7 @@ dependencies = [
"objc2-core-data",
"objc2-core-image",
"objc2-foundation 0.2.2",
"objc2-quartz-core 0.2.2",
"objc2-quartz-core",
]
[[package]]
@ -5095,11 +5171,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807"
dependencies = [
"bitflags 2.11.0",
"dispatch2",
"libc",
"objc2 0.6.4",
"objc2-core-foundation",
"objc2-io-surface",
]
[[package]]
@ -5155,17 +5228,6 @@ dependencies = [
"objc2-core-foundation",
]
[[package]]
name = "objc2-io-surface"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d"
dependencies = [
"bitflags 2.11.0",
"objc2 0.6.4",
"objc2-core-foundation",
]
[[package]]
name = "objc2-metal"
version = "0.2.2"
@ -5191,18 +5253,6 @@ dependencies = [
"objc2-metal",
]
[[package]]
name = "objc2-quartz-core"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f"
dependencies = [
"bitflags 2.11.0",
"objc2 0.6.4",
"objc2-core-foundation",
"objc2-foundation 0.3.2",
]
[[package]]
name = "objc2-ui-kit"
version = "0.3.2"
@ -6806,7 +6856,7 @@ version = "1.0.149"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86"
dependencies = [
"indexmap 2.13.0",
"indexmap 2.13.1",
"itoa",
"memchr",
"serde",
@ -6856,7 +6906,7 @@ dependencies = [
"chrono",
"hex",
"indexmap 1.9.3",
"indexmap 2.13.0",
"indexmap 2.13.1",
"schemars 0.9.0",
"schemars 1.2.1",
"serde_core",
@ -7086,32 +7136,31 @@ dependencies = [
[[package]]
name = "softbuffer"
version = "0.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aac18da81ebbf05109ab275b157c22a653bb3c12cf884450179942f81bcbf6c3"
version = "0.4.1"
source = "git+https://github.com/pop-os/softbuffer?tag=cosmic-4.0#a3f77e251e7422803f693df6e3fc313c010c4dcb"
dependencies = [
"as-raw-xcb-connection",
"bytemuck",
"cfg_aliases 0.2.1",
"cocoa",
"core-graphics",
"drm",
"fastrand",
"foreign-types",
"js-sys",
"log",
"memmap2 0.9.10",
"ndk",
"objc2 0.6.4",
"objc2-core-foundation",
"objc2-core-graphics",
"objc2-foundation 0.3.2",
"objc2-quartz-core 0.3.2",
"objc",
"raw-window-handle",
"redox_syscall 0.5.18",
"rustix 1.1.4",
"rustix 0.38.44",
"tiny-xlib",
"tracing",
"wasm-bindgen",
"wayland-backend",
"wayland-client",
"wayland-sys",
"web-sys",
"windows-sys 0.61.2",
"windows-sys 0.52.0",
"x11rb",
]
@ -7174,7 +7223,7 @@ dependencies = [
"futures-util",
"hashbrown 0.15.5",
"hashlink",
"indexmap 2.13.0",
"indexmap 2.13.1",
"log",
"memchr",
"once_cell",
@ -8022,9 +8071,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]]
name = "tokio"
version = "1.50.0"
version = "1.51.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d"
checksum = "2bd1c4c0fc4a7ab90fc15ef6daaa3ec3b893f004f915f2392557ed23237820cd"
dependencies = [
"bytes",
"libc",
@ -8039,9 +8088,9 @@ dependencies = [
[[package]]
name = "tokio-macros"
version = "2.6.1"
version = "2.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c"
checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496"
dependencies = [
"proc-macro2",
"quote",
@ -8109,7 +8158,7 @@ version = "1.1.2+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee"
dependencies = [
"indexmap 2.13.0",
"indexmap 2.13.1",
"serde_core",
"serde_spanned",
"toml_datetime",
@ -8133,7 +8182,7 @@ version = "0.25.10+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a82418ca169e235e6c399a84e395ab6debeb3bc90edc959bf0f48647c6a32d1b"
dependencies = [
"indexmap 2.13.0",
"indexmap 2.13.1",
"toml_datetime",
"toml_parser",
"winnow 1.0.1",
@ -8713,7 +8762,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909"
dependencies = [
"anyhow",
"indexmap 2.13.0",
"indexmap 2.13.1",
"wasm-encoder",
"wasmparser",
]
@ -8726,7 +8775,7 @@ checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe"
dependencies = [
"bitflags 2.11.0",
"hashbrown 0.15.5",
"indexmap 2.13.0",
"indexmap 2.13.1",
"semver",
]
@ -8984,7 +9033,7 @@ dependencies = [
"cfg_aliases 0.2.1",
"document-features",
"hashbrown 0.16.1",
"indexmap 2.13.0",
"indexmap 2.13.1",
"log",
"naga",
"once_cell",
@ -9967,7 +10016,7 @@ checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21"
dependencies = [
"anyhow",
"heck 0.5.0",
"indexmap 2.13.0",
"indexmap 2.13.1",
"prettyplease",
"syn",
"wasm-metadata",
@ -9998,7 +10047,7 @@ checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2"
dependencies = [
"anyhow",
"bitflags 2.11.0",
"indexmap 2.13.0",
"indexmap 2.13.1",
"log",
"serde",
"serde_derive",
@ -10017,7 +10066,7 @@ checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736"
dependencies = [
"anyhow",
"id-arena",
"indexmap 2.13.0",
"indexmap 2.13.1",
"log",
"semver",
"serde",
@ -10029,9 +10078,9 @@ dependencies = [
[[package]]
name = "writeable"
version = "0.6.2"
version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9"
checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4"
[[package]]
name = "x11-dl"

View file

@ -54,7 +54,7 @@ serde_json = "1.0.149"
[dependencies.libcosmic]
git = "https://github.com/pop-os/libcosmic"
default-features = false
features = ["debug", "winit", "desktop", "winit_wgpu", "winit_tokio", "tokio", "wayland", "rfd", "dbus-config", "a11y", "wgpu", "multi-window", "process"]
features = ["debug", "winit", "desktop", "wayland", "tokio", "rfd", "dbus-config", "a11y", "wgpu", "multi-window", "process"]
[dependencies.iced_video_player]
git = "https://github.com/wash2/iced_video_player.git"

View file

@ -67,6 +67,7 @@
libGL
cargo-flamegraph
bacon
openssl
fontconfig
glib

View file

@ -1245,7 +1245,7 @@ impl cosmic::Application for App {
if let Some(video) = &mut self.presenter.video {
video.set_muted(false);
}
window::change_mode(id, Mode::Fullscreen)
window::maximize(id, true)
} else {
Task::none()
}
@ -1296,10 +1296,12 @@ impl cosmic::Application for App {
)
}
Message::HoveredServiceItem(index) => {
debug!(index);
self.hovered_item = index;
Task::none()
}
Message::HoveredServiceDrop(index) => {
debug!(index);
self.hovered_dnd = index;
Task::none()
}
@ -2149,7 +2151,7 @@ where
text::heading("Service List")
.center()
.width(Length::Fill),
iced::widget::horizontal_rule(1),
divider::horizontal::light(),
scrollable
]
.padding(10)

View file

@ -12,10 +12,10 @@ use cosmic::{
theme,
widget::{
Container, DndSource, Space, button, container, context_menu,
dnd_destination, icon,
divider, dnd_destination, icon,
menu::{self, Action as MenuAction},
mouse_area, responsive, row, scrollable,
space::horizontal,
space::{self, horizontal},
text, text_input,
},
};
@ -171,17 +171,21 @@ impl<'a> Library {
self.library_open.unwrap_or(LibraryKind::Song);
match kind {
LibraryKind::Song => {
let _song = Song::default();
let task = Task::future(self.db.acquire()).and_then(move |db| {
Task::perform(add_song_to_db(db), move |res| {
match res {
Ok(song) => {
Message::AddSong(song)
},
Err(e) => {error!(?e, "couldn't add song to db"); Message::None}
}
let task = Task::future(self.db.acquire())
.map_err(|e| {
miette::miette!("Database error: {e}")
})
});
.and_then(move |db| {
Task::perform(
add_song_to_db(db),
move |res| {
res.map(|song| {
Message::AddSong(song)
})
},
)
})
.map(|r| r.unwrap_or(Message::None));
return Action::Task(task);
}
LibraryKind::Video => {
@ -218,6 +222,9 @@ impl<'a> Library {
error!(?e);
}
let task = Task::future(self.db.acquire())
.map_err(|e| {
miette::miette!("Database error: {e}")
})
.and_then(move |db| {
Task::perform(
add_video_to_db(
@ -225,25 +232,16 @@ impl<'a> Library {
db,
),
move |res| {
debug!(
len,
index, "added to db"
);
if let Err(e) = res {
error!(?e);
}
if len == index {
debug!("open the pres");
res.map(|_| {
Message::OpenItem(Some((
LibraryKind::Video,
index as i32,
)))
} else {
Message::None
}
})
},
)
});
})
.map(|r| r.unwrap_or(Message::None));
tasks.push(task);
index += 1;
}
@ -267,23 +265,22 @@ impl<'a> Library {
error!(?e);
}
return Action::Task(
Task::future(self.db.acquire()).and_then(
move |db| {
Task::future(self.db.acquire())
.map_err(|e| {
miette::miette!("Database error: {e}")
})
.and_then(move |db| {
Task::perform(
add_presentation_to_db(
presentation.clone(),
db,
),
move |res| {
debug!("added to db");
if let Err(e) = res {
error!(?e);
}
Message::None
res.map(|_| Message::None)
},
)
},
),
})
.map(|r| r.unwrap_or(Message::None)),
);
}
}
@ -304,32 +301,16 @@ impl<'a> Library {
let task = Task::future(
self.db.acquire(),
)
.map_err(|e| miette::miette!("Database error: {e}"))
.and_then(move |db| {
Task::perform(
add_presentation_to_db(
presentation.clone(),
db,
),
move |res| {
debug!(
len,
index, "added to db"
);
if let Err(e) = res {
error!(?e);
}
if len == index {
debug!("open the pres");
Message::OpenItem(Some((
LibraryKind::Presentation,
index as i32,
)))
} else {
Message::None
}
},
move |res| res.map(|_| Message::OpenItem(Some((LibraryKind::Presentation, index as i32))))
)
});
}).map(|r| r.unwrap_or(Message::None));
tasks.push(task);
index += 1;
}
@ -358,6 +339,9 @@ impl<'a> Library {
error!(?e);
}
let task = Task::future(self.db.acquire())
.map_err(|e| {
miette::miette!("Database error: {e}")
})
.and_then(move |db| {
Task::perform(
add_image_to_db(
@ -365,25 +349,16 @@ impl<'a> Library {
db,
),
move |res| {
debug!(
len,
index, "added to db"
);
if let Err(e) = res {
error!(?e);
}
if len == index {
debug!("open the pres");
res.map(|_| {
Message::OpenItem(Some((
LibraryKind::Image,
index as i32,
)))
} else {
Message::None
}
})
},
)
});
})
.map(|r| r.unwrap_or(Message::None));
tasks.push(task);
index += 1;
}
@ -518,20 +493,17 @@ impl<'a> Library {
}
return Action::Task(
Task::future(self.db.acquire()).and_then(
move |conn| {
Task::future(self.db.acquire())
.map_err(|e| {
miette::miette!("Database error: {e}")
})
.and_then(move |conn| {
Task::perform(
update_song_in_db(song.clone(), conn),
|r| match r {
Ok(()) => Message::SongChanged,
Err(e) => {
error!(?e);
Message::None
}
},
|r| r.map(|_| Message::SongChanged),
)
},
),
})
.map(|r| r.unwrap_or(Message::None)),
);
}
Message::SongChanged => {
@ -568,23 +540,20 @@ impl<'a> Library {
}
return Action::Task(
Task::future(self.db.acquire()).and_then(
move |conn| {
Task::future(self.db.acquire())
.map_err(|e| {
miette::miette!("Database error: {e}")
})
.and_then(move |conn| {
Task::perform(
update_image_in_db(
image.clone(),
conn,
),
|r| match r {
Ok(()) => Message::ImageChanged,
Err(e) => {
error!(?e);
Message::None
}
},
|r| r.map(|_| Message::ImageChanged),
)
},
),
})
.map(|r| r.unwrap_or(Message::None)),
);
}
Message::ImageChanged => (),
@ -609,23 +578,20 @@ impl<'a> Library {
}
return Action::Task(
Task::future(self.db.acquire()).and_then(
move |conn| {
Task::future(self.db.acquire())
.map_err(|e| {
miette::miette!("Database error: {e}")
})
.and_then(move |conn| {
Task::perform(
update_video_in_db(
video.clone(),
conn,
),
|r| match r {
Ok(()) => Message::VideoChanged,
Err(e) => {
error!(?e);
Message::None
}
},
|r| r.map(|_| Message::VideoChanged),
)
},
),
})
.map(|r| r.unwrap_or(Message::None)),
);
}
Message::VideoChanged => debug!("vid shoulda changed"),
@ -653,23 +619,19 @@ impl<'a> Library {
.update_item(presentation.clone(), index)
{
Ok(()) => return Action::Task(
Task::future(self.db.acquire()).and_then(
Task::future(self.db.acquire()).map_err(|e| {
miette::miette!("Database error: {e}")
}).and_then(
move |conn| {
Task::perform(
update_presentation_in_db(
presentation.clone(),
conn,
),
|r| match r {
Ok(()) => Message::PresentationChanged,
Err(e) => {
error!(?e);
Message::None
}
},
|r| r.map(|_| Message::PresentationChanged)
)
},
),
).map(|r| r.unwrap_or(Message::None)),
),
Err(_) => todo!(),
}
@ -717,26 +679,27 @@ impl<'a> Library {
.add_item(song.clone())
.err()
else {
let task =
Task::future(self.db.acquire())
.and_then(move |db| {
Task::perform(
add_song_to_db(db),
{
move |res| {
if let Err(
e,
) = res
{
error!(
?e
);
}
Message::None
}
},
)
});
let task = Task::future(
self.db.acquire(),
)
.map_err(|e| {
miette::miette!(
"Database error: {e}"
)
})
.and_then(move |db| {
Task::perform(
add_song_to_db(db),
{
move |res| {
res.map(|song| {
Message::None
})
}
},
)
})
.map(|r| r.unwrap_or(Message::None));
tasks.push(task);
continue;
};
@ -748,30 +711,29 @@ impl<'a> Library {
.add_item(video.clone())
.err()
else {
let task = Task::future(
self.db.acquire(),
)
.and_then(move |db| {
Task::perform(
add_video_to_db(
video.clone(),
db,
),
{
let video = video.clone();
move |res| {
debug!(
?video,
"added to db"
);
if let Err(e) = res {
error!(?e);
}
Message::None
}
},
)
});
let task =
Task::future(self.db.acquire())
.map_err(|e| {
miette::miette!(
"Database error: {e}"
)
})
.and_then(move |db| {
Task::perform(
add_video_to_db(
video.clone(),
db,
),
move |res| {
res.map(|_| {
Message::None
})
},
)
})
.map(|r| {
r.unwrap_or(Message::None)
});
tasks.push(task);
continue;
};
@ -783,30 +745,29 @@ impl<'a> Library {
.add_item(image.clone())
.err()
else {
let task = Task::future(
self.db.acquire(),
)
.and_then(move |db| {
Task::perform(
add_image_to_db(
image.clone(),
db,
),
{
let image = image.clone();
move |res| {
debug!(
?image,
"added to db"
);
if let Err(e) = res {
error!(?e);
}
Message::None
}
},
)
});
let task =
Task::future(self.db.acquire())
.map_err(|e| {
miette::miette!(
"Database error: {e}"
)
})
.and_then(move |db| {
Task::perform(
add_image_to_db(
image.clone(),
db,
),
move |res| {
res.map(|_| {
Message::None
})
},
)
})
.map(|r| {
r.unwrap_or(Message::None)
});
tasks.push(task);
continue;
};
@ -822,6 +783,11 @@ impl<'a> Library {
else {
let task =
Task::future(self.db.acquire())
.map_err(|e| {
miette::miette!(
"Database error: {e}"
)
})
.and_then(move |db| {
Task::perform(
add_presentation_to_db(
@ -829,20 +795,16 @@ impl<'a> Library {
db,
),
{
let presentation =
presentation.clone();
move |res| {
debug!(
?presentation,
"added to db"
);
if let Err(e) = res {
error!(?e);
}
Message::None
res.map(|_| {
Message::None
})
}
},
)
})
.map(|r| {
r.unwrap_or(Message::None)
});
tasks.push(task);
@ -873,7 +835,7 @@ impl<'a> Library {
let library_column = column![
text::heading("Library").center().width(Length::Fill),
cosmic::iced::widget::horizontal_rule(1),
divider::horizontal::light(),
song_library,
image_library,
video_library,
@ -952,7 +914,7 @@ impl<'a> Library {
where
T: Content,
{
let mut row = row::<Message>().spacing(5);
let mut row = row::with_capacity(5).spacing(5);
match &model.kind {
LibraryKind::Song => {
row = row
@ -983,7 +945,7 @@ impl<'a> Library {
}
}
let item_count = model.items.len();
row = row.push(horizontal_space());
row = row.push(space::horizontal());
row = row
.push(textm!("{}", item_count).align_y(Vertical::Center));
row = row.push(
@ -1120,7 +1082,7 @@ impl<'a> Library {
column![library_toolbar, context_menu].spacing(3);
Container::new(library_column).padding(5)
} else {
Container::new(Space::new(0, 0))
Container::new(Space::new())
};
column![library_button, lib_container].into()
}
@ -1135,6 +1097,9 @@ impl<'a> Library {
where
T: Content,
{
let cosmic::cosmic_theme::Spacing {
space_xxs, space_s, ..
} = theme::spacing();
let text = Container::new(responsive(|size| {
text::heading(elide_text(item.title(), size.width))
.center()
@ -1189,7 +1154,6 @@ impl<'a> Library {
.spacing(10)
.align_y(Vertical::Center),
)
// .padding(5)
.width(Length::Fill)
.style(move |t| {
container::Style::default()
@ -1230,7 +1194,7 @@ impl<'a> Library {
.rounded(t.cosmic().corner_radii.radius_m),
)
})
.padding([3, 0])
.padding([space_xxs, space_s])
.into()
}
@ -1361,8 +1325,8 @@ impl<'a> Library {
error!(?e);
Task::none()
} else {
Task::future(self.db.acquire())
.and_then(move |db| {
Task::future(self.db.acquire()).and_then(
move |db| {
Task::perform(
songs::remove_from_db(
db, song.id,
@ -1371,11 +1335,12 @@ impl<'a> Library {
if let Err(e) = r {
error!(?e);
}
r.map(|_| Message::None)
Message::None
},
)
})
.map(|r| r.unwrap_or(Task::none()))
.map(|m| Ok(m))
},
)
}
} else {
Task::none()
@ -1392,8 +1357,8 @@ impl<'a> Library {
error!(?e);
Task::none()
} else {
Task::future(self.db.acquire())
.and_then(move |db| {
Task::future(self.db.acquire()).and_then(
move |db| {
Task::perform(
videos::remove_from_db(
db, video.id,
@ -1405,8 +1370,9 @@ impl<'a> Library {
Message::None
},
)
})
.map(|r| r.unwrap_or(Task::none()))
.map(|m| Ok(m))
},
)
}
} else {
Task::none()
@ -1425,8 +1391,8 @@ impl<'a> Library {
} else {
debug!("let's remove {0}", image.id);
debug!("let's remove {0}", image.title);
Task::future(self.db.acquire())
.and_then(move |db| {
Task::future(self.db.acquire()).and_then(
move |db| {
Task::perform(
images::remove_from_db(
db, image.id,
@ -1438,8 +1404,9 @@ impl<'a> Library {
Message::None
},
)
})
.map(|r| r.unwrap_or(Task::none()))
.map(|m| Ok(m))
},
)
}
} else {
Task::none()
@ -1457,8 +1424,8 @@ impl<'a> Library {
error!(?e);
Task::none()
} else {
Task::future(self.db.acquire())
.and_then(move |db| {
Task::future(self.db.acquire()).and_then(
move |db| {
Task::perform(
presentations::remove_from_db(
db,
@ -1471,14 +1438,20 @@ impl<'a> Library {
Message::None
},
)
})
.map(|r| r.unwrap_or(Task::none()))
.map(|m| Ok(m))
},
)
}
} else {
Task::none()
}
}
})
.map(|t| {
t.map(
|r| if let Ok(r) = r { r } else { Message::None },
)
})
.collect();
if !tasks.is_empty() {
self.selected_items = None;

View file

@ -124,7 +124,7 @@ impl<'a> Program<SlideWidget, cosmic::Theme, cosmic::Renderer>
event: &canvas::Event,
bounds: cosmic::iced::Rectangle,
_cursor: cosmic::iced_core::mouse::Cursor,
) -> (&cosmic::event::Status, Option<SlideWidget>) {
) -> Option<cosmic::iced_widget::Action<SlideWidget>> {
match event {
canvas::Event::Mouse(event) => match event {
cosmic::iced::mouse::Event::CursorEntered => {
@ -165,7 +165,7 @@ impl<'a> Program<SlideWidget, cosmic::Theme, cosmic::Renderer>
todo!()
}
}
(iced_core::event::Status::Ignored, None)
None
}
fn mouse_interaction(

View file

@ -178,6 +178,7 @@ impl VideoEditor {
}
fn update_entire_video(&mut self, video: &videos::Video) {
debug!(?video);
let Ok(mut player_video) =
Url::from_file_path(video.path.clone())
.map(|url| Video::new(&url).expect("Should be here"))

View file

@ -434,9 +434,7 @@ where
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
viewport: &Rectangle,
) -> event::Status {
let mut event_status = event::Status::Ignored;
) {
let action = tree.state.downcast_mut::<Action>();
match event {
@ -457,7 +455,7 @@ where
index,
origin: cursor_position,
};
event_status = event::Status::Captured;
shell.capture_event();
break;
}
}
@ -482,7 +480,7 @@ where
DragEvent::Picked { index },
));
}
event_status = event::Status::Captured;
shell.capture_event();
}
}
Action::Dragging { origin, index, .. } => {
@ -494,7 +492,7 @@ where
origin,
index,
};
event_status = event::Status::Captured;
shell.capture_event();
}
}
_ => {}
@ -527,8 +525,7 @@ where
drop_position,
},
));
event_status =
event::Status::Captured;
shell.capture_event();
}
} else if let Some(on_reorder) =
&self.on_drag
@ -536,8 +533,7 @@ where
shell.publish(on_reorder(
DragEvent::Canceled { index },
));
event_status =
event::Status::Captured;
shell.capture_event();
}
}
*action = Action::Idle;
@ -552,12 +548,11 @@ where
_ => {}
}
let child_status = self
.children
self.children
.iter_mut()
.zip(&mut tree.children)
.zip(layout.children())
.map(|((child, state), c_layout)| {
.for_each(|((child, state), c_layout)| {
child.as_widget_mut().update(
state,
&event.clone(),
@ -569,18 +564,7 @@ where
shell,
viewport,
)
})
.fold(
event::Status::Ignored,
|arg0: cosmic::iced::event::Status, arg1: ()| {
event::Status::merge(
event::Status::Ignored,
arg0, /* cosmic::iced::event::Status */
)
},
);
event::Status::merge(event_status, child_status)
});
}
fn mouse_interaction(

View file

@ -421,9 +421,7 @@ where
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
viewport: &Rectangle,
) -> event::Status {
let mut event_status = event::Status::Ignored;
) {
let action = tree.state.downcast_mut::<Action>();
match event {
@ -444,7 +442,7 @@ where
index,
origin: cursor_position,
};
event_status = event::Status::Captured;
shell.capture_event();
break;
}
}
@ -469,7 +467,7 @@ where
DragEvent::Picked { index },
));
}
event_status = event::Status::Captured;
shell.capture_event();
}
}
Action::Dragging { origin, index, .. } => {
@ -481,7 +479,7 @@ where
origin,
index,
};
event_status = event::Status::Captured;
shell.capture_event();
}
}
_ => {}
@ -514,8 +512,7 @@ where
drop_position,
},
));
event_status =
event::Status::Captured;
shell.capture_event();
}
} else if let Some(on_reorder) =
&self.on_drag
@ -523,8 +520,7 @@ where
shell.publish(on_reorder(
DragEvent::Canceled { index },
));
event_status =
event::Status::Captured;
shell.capture_event();
}
}
*action = Action::Idle;
@ -544,7 +540,7 @@ where
.iter_mut()
.zip(&mut tree.children)
.zip(layout.children())
.map(|((child, state), layout)| {
.for_each(|((child, state), layout)| {
child.as_widget_mut().update(
state,
&event.clone(),
@ -555,18 +551,7 @@ where
shell,
viewport,
)
})
.fold(
event::Status::Ignored,
|arg0: cosmic::iced::event::Status, arg1: ()| {
event::Status::merge(
event::Status::Ignored,
arg0, /* cosmic::iced::event::Status */
)
},
);
event::Status::merge(event_status, child_status)
});
}
fn mouse_interaction(
@ -953,7 +938,7 @@ where
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
viewport: &Rectangle,
) -> event::Status {
) {
self.row.update(
tree, event, layout, cursor, renderer, clipboard, shell,
viewport,

View file

@ -2,5 +2,5 @@
#[allow(clippy::nursery)]
#[allow(clippy::pedantic)]
pub mod draggable;
pub mod slide_text;
// pub mod slide_text;
pub mod verse_editor;