diff --git a/CMakeLists.txt b/CMakeLists.txt index fb57ce4..8d69256 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,8 +4,8 @@ set(APP_NAME ${PROJECT_NAME}) include(FeatureSummary) -set(QT5_MIN_VERSION 5.15) -set(KF5_MIN_VERSION 5.83) +set(QT_MIN_VERSION 6.6.0) +set(KF_MIN_VERSION 6.00) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) @@ -14,7 +14,7 @@ set(CMAKE_AUTORCC ON) set(CMAKE_INCLUDE_CURRENT_DIR ON) -find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE) +find_package(ECM ${KF_MIN_VERSION} REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) @@ -27,8 +27,8 @@ include(ECMPoQmTools) kde_enable_exceptions() -find_package(Qt5 ${QT_MIN_VERSION} REQUIRED NO_MODULE COMPONENTS Core Quick Test Gui QuickControls2 Widgets Sql X11Extras QmlImportScanner WebEngine) -find_package(KF5 ${KF_MIN_VERSION} REQUIRED COMPONENTS Kirigami2 CoreAddons I18n Archive) +find_package(Qt6 ${QT_MIN_VERSION} REQUIRED NO_MODULE COMPONENTS Core Core5Compat Quick Test Gui Qml QuickControls2 Widgets Sql QmlImportScanner WebEngineQuick) +find_package(KF6 ${KF_MIN_VERSION} REQUIRED COMPONENTS Kirigami CoreAddons I18n) find_package(FFmpeg) set_package_properties(FFmpeg PROPERTIES TYPE REQUIRED) @@ -36,6 +36,10 @@ set_package_properties(FFmpeg PROPERTIES TYPE REQUIRED) find_package(Libmpv) set_package_properties(Libmpv PROPERTIES TYPE REQUIRED) +find_package(MpvQt) +set_package_properties(MpvQt PROPERTIES TYPE REQUIRED + URL "https://invent.kde.org/libraries/mpvqt") + find_package(YouTubeDl) set_package_properties(YouTubeDl PROPERTIES TYPE RUNTIME) @@ -86,18 +90,17 @@ target_include_directories(${APP_NAME}_lib INTERFACE "${CXXQT_EXPORT_DIR}/${CRAT # executable which link the Rust library, for example tests, will also link Qt. target_link_libraries(${APP_NAME}_lib INTERFACE "$" - Qt5::Quick - Qt5::Qml - Qt5::Gui - Qt5::QuickControls2 - Qt5::Widgets - Qt5::Sql - Qt5::X11Extras - Qt5::WebEngine - KF5::Kirigami2 - KF5::I18n - KF5::Archive - KF5::CoreAddons + Qt6::Quick + Qt6::Qml + Qt6::Gui + Qt6::QuickControls2 + Qt6::Widgets + Qt6::Sql + Qt6::WebEngineQuick + KF6::Kirigami + KF6::I18n + KF6::CoreAddons + MpvQt::MpvQt mpv ssl crypto diff --git a/Cargo.lock b/Cargo.lock index 39dc290..9e193ee 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,24 +4,24 @@ version = 3 [[package]] name = "addr2line" -version = "0.21.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" dependencies = [ "gimli", ] [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "ahash" -version = "0.8.6" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", "getrandom", @@ -32,18 +32,18 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] [[package]] name = "allocator-api2" -version = "0.2.16" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" [[package]] name = "android-tzdata" @@ -62,11 +62,12 @@ dependencies = [ [[package]] name = "ashpd" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c018490e423efb6f032ef575f873ea57b61d44bec763cfe027b8e8852a027cf" +checksum = "4ac22eda5891cc086690cb6fa10121c0390de0e3b04eb269f2d766b00d3f2d81" dependencies = [ - "async-std", + "async-fs 2.1.2", + "async-net", "enumflags2", "futures-channel", "futures-util", @@ -90,23 +91,11 @@ dependencies = [ [[package]] name = "async-channel" -version = "1.9.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" dependencies = [ "concurrent-queue", - "event-listener 2.5.3", - "futures-core", -] - -[[package]] -name = "async-channel" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d37875bd9915b7d67c2f117ea2c30a0989874d0b2cb694fe25403c85763c0c9e" -dependencies = [ - "concurrent-queue", - "event-listener 3.1.0", "event-listener-strategy", "futures-core", "pin-project-lite", @@ -114,15 +103,14 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.7.2" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc5ea910c42e5ab19012bab31f53cb4d63d54c3a27730f9a833a88efcf4bb52d" +checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" dependencies = [ - "async-lock 3.1.1", "async-task", "concurrent-queue", - "fastrand 2.0.1", - "futures-lite 2.0.1", + "fastrand 2.1.1", + "futures-lite 2.3.0", "slab", ] @@ -139,18 +127,14 @@ dependencies = [ ] [[package]] -name = "async-global-executor" -version = "2.3.1" +name = "async-fs" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1b6f5d7df27bd294849f8eec66ecfc63d11814df7a4f5d74168a2394467b776" +checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" dependencies = [ - "async-channel 1.9.0", - "async-executor", - "async-io 1.13.0", - "async-lock 2.8.0", + "async-lock 3.4.0", "blocking", - "futures-lite 1.13.0", - "once_cell", + "futures-lite 2.3.0", ] [[package]] @@ -175,22 +159,21 @@ dependencies = [ [[package]] name = "async-io" -version = "2.2.0" +version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41ed9d5715c2d329bf1b4da8d60455b99b187f27ba726df2883799af9af60997" +checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" dependencies = [ - "async-lock 3.1.1", + "async-lock 3.4.0", "cfg-if", "concurrent-queue", "futures-io", - "futures-lite 2.0.1", + "futures-lite 2.3.0", "parking", - "polling 3.3.0", - "rustix 0.38.25", + "polling 3.7.3", + "rustix 0.38.36", "slab", "tracing", - "waker-fn", - "windows-sys", + "windows-sys 0.59.0", ] [[package]] @@ -204,15 +187,26 @@ dependencies = [ [[package]] name = "async-lock" -version = "3.1.1" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "655b9c7fe787d3b25cc0f804a1a8401790f0c5bc395beb5a64dc77d8de079105" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" dependencies = [ - "event-listener 3.1.0", + "event-listener 5.3.1", "event-listener-strategy", "pin-project-lite", ] +[[package]] +name = "async-net" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b948000fad4873c1c9339d60f2623323a0cfd3816e5181033c6a5cb68b2accf7" +dependencies = [ + "async-io 2.3.4", + "blocking", + "futures-lite 2.3.0", +] + [[package]] name = "async-process" version = "1.8.1" @@ -226,80 +220,54 @@ dependencies = [ "cfg-if", "event-listener 3.1.0", "futures-lite 1.13.0", - "rustix 0.38.25", - "windows-sys", + "rustix 0.38.36", + "windows-sys 0.48.0", ] [[package]] name = "async-recursion" -version = "1.0.5" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.77", ] [[package]] name = "async-signal" -version = "0.2.5" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5" +checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" dependencies = [ - "async-io 2.2.0", - "async-lock 2.8.0", + "async-io 2.3.4", + "async-lock 3.4.0", "atomic-waker", "cfg-if", "futures-core", "futures-io", - "rustix 0.38.25", + "rustix 0.38.36", "signal-hook-registry", "slab", - "windows-sys", -] - -[[package]] -name = "async-std" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" -dependencies = [ - "async-channel 1.9.0", - "async-global-executor", - "async-io 1.13.0", - "async-lock 2.8.0", - "crossbeam-utils", - "futures-channel", - "futures-core", - "futures-io", - "futures-lite 1.13.0", - "gloo-timers", - "kv-log-macro", - "log", - "memchr", - "once_cell", - "pin-project-lite", - "pin-utils", - "slab", - "wasm-bindgen-futures", + "windows-sys 0.59.0", ] [[package]] name = "async-task" -version = "4.5.0" +version = "4.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4eb2cdb97421e01129ccb49169d8279ed21e829929144f4a22a6e54ac549ca1" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.74" +version = "0.1.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" +checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.77", ] [[package]] @@ -319,30 +287,36 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "backtrace" -version = "0.3.69" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", "miniz_oxide", "object", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] name = "base64" -version = "0.21.5" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" @@ -358,9 +332,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.1" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" dependencies = [ "serde", ] @@ -382,25 +356,22 @@ dependencies = [ [[package]] name = "blocking" -version = "1.5.1" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" dependencies = [ - "async-channel 2.1.0", - "async-lock 3.1.1", + "async-channel", "async-task", - "fastrand 2.0.1", "futures-io", - "futures-lite 2.0.1", + "futures-lite 2.3.0", "piper", - "tracing", ] [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "byteorder" @@ -410,18 +381,19 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.5.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" [[package]] name = "cc" -version = "1.0.83" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" dependencies = [ "jobserver", "libc", + "shlex", ] [[package]] @@ -432,15 +404,15 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.31" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", "serde", - "windows-targets", + "windows-targets 0.52.6", ] [[package]] @@ -464,24 +436,24 @@ dependencies = [ [[package]] name = "concurrent-queue" -version = "2.3.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" dependencies = [ "crossbeam-utils", ] [[package]] name = "configparser" -version = "3.0.3" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0e56e414a2a52ab2a104f85cd40933c2fbc278b83637facf646ecf451b49237" +checksum = "e57e3272f0190c3f1584272d613719ba5fc7df7f4942fe542e63d949cf3a649b" [[package]] name = "const-oid" -version = "0.9.5" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] name = "convert_case" @@ -494,9 +466,9 @@ dependencies = [ [[package]] name = "core-foundation" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ "core-foundation-sys", "libc", @@ -504,24 +476,24 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.4" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.11" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] [[package]] name = "crc" -version = "3.0.1" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86ec7a15cbe22e59248fc7eadb1907dab5ba09372595da4d73dd805ed4417dfe" +checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" dependencies = [ "crc-catalog", ] @@ -534,22 +506,18 @@ checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" [[package]] name = "crossbeam-queue" -version = "0.3.8" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" +checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" dependencies = [ - "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.16" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if", -] +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crypto-common" @@ -563,9 +531,9 @@ dependencies = [ [[package]] name = "cxx" -version = "1.0.110" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7129e341034ecb940c9072817cd9007974ea696844fc4dd582dc1653a7fbe2e8" +checksum = "54ccead7d199d584d139148b04b4a368d1ec7556a1d9ea2548febb1b9d49f9a4" dependencies = [ "cc", "cxxbridge-flags", @@ -575,9 +543,9 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.110" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2a24f3f5f8eed71936f21e570436f024f5c2e25628f7496aa7ccd03b90109d5" +checksum = "c77953e99f01508f89f55c494bfa867171ef3a6c8cea03d26975368f2121a5c1" dependencies = [ "cc", "codespan-reporting", @@ -585,26 +553,26 @@ dependencies = [ "proc-macro2", "quote", "scratch", - "syn 2.0.39", + "syn 2.0.77", ] [[package]] name = "cxx-gen" -version = "0.7.110" +version = "0.7.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e0fc77e9f8d61724be90deb42a7e50ba3bf37c7c16dc91cdba821f69a5e0e9" +checksum = "c1f32748b8c1492522ff281e093ed9133e361bfdda3ed5b164e3bb223cabc0e7" dependencies = [ "codespan-reporting", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.77", ] [[package]] name = "cxx-qt" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9a68e547fffeea723c374cd104a13e75bc67b3cdfbd2c0ad82769e0084d94ec" +checksum = "08aa6cda7588b6d17c563b0d2fadc060d4204d04908c0f359ae288857091218d" dependencies = [ "cxx", "cxx-qt-macro", @@ -613,9 +581,9 @@ dependencies = [ [[package]] name = "cxx-qt-build" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "122e3f57ebd3b81b346b17369958937a4ff105d7c6e9824bf09b04b0c4dbcfb8" +checksum = "9e097b99f49792922a72a8ca35d9391762e48e63363d6998255be1f2ca1edf69" dependencies = [ "cc", "codespan-reporting", @@ -631,23 +599,23 @@ dependencies = [ [[package]] name = "cxx-qt-gen" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfce7e8223d0a10e442f56843090b3e2e3e58773e9d5be569452406802c0cdcc" +checksum = "ede7c73dbfbcc234d8826919e257830c1789db2cac586546a87d2a82e3cbe5d5" dependencies = [ "clang-format", "convert_case", "indoc", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.77", ] [[package]] name = "cxx-qt-lib" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ceb543664986a1b368e94b14adb77dcc18dce4f0c6a0fecd3b0095335cdf4017" +checksum = "002f1a6119bcb7dfec67eb7c0803a7b1d595dc54610559faeac35133f22a5880" dependencies = [ "cxx", "cxx-build", @@ -657,43 +625,43 @@ dependencies = [ [[package]] name = "cxx-qt-lib-headers" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa88798ca1426b33bd772834ac718469e9a9f33d0363a17350034d15cc1609f4" +checksum = "9abdeab6b77cfc5a53b724f3f62a37bcb5ac1423cccc2dba4c134f4273440b8c" [[package]] name = "cxx-qt-macro" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52e9ba5202d3b276f5b52d09d07b6476d0ef37950fd7c60c14f3e9f0e855930d" +checksum = "699e8a668c03b03419b084960d72eed253632bb16349b33fd0a0c893b61b664c" dependencies = [ "cxx-qt-gen", "proc-macro2", - "syn 2.0.39", + "syn 2.0.77", ] [[package]] name = "cxxbridge-flags" -version = "1.0.110" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06fdd177fc61050d63f67f5bd6351fac6ab5526694ea8e359cd9cd3b75857f44" +checksum = "65777e06cc48f0cb0152024c77d6cf9e4bdb4408e7b48bea993d42fa0f5b02b6" [[package]] name = "cxxbridge-macro" -version = "1.0.110" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "587663dd5fb3d10932c8aecfe7c844db1bcf0aee93eeab08fac13dc1212c2e7f" +checksum = "98532a60dedaebc4848cb2cba5023337cc9ea3af16a5b062633fabfd9f18fb60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.77", ] [[package]] name = "darling" -version = "0.20.3" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" dependencies = [ "darling_core", "darling_macro", @@ -701,40 +669,40 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.3" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim", - "syn 2.0.39", + "syn 2.0.77", ] [[package]] name = "darling_macro" -version = "0.20.3" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.39", + "syn 2.0.77", ] [[package]] name = "data-encoding" -version = "2.4.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" +checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" [[package]] name = "der" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" dependencies = [ "const-oid", "pem-rfc7468", @@ -743,9 +711,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.9" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ "powerfmt", "serde", @@ -764,9 +732,9 @@ dependencies = [ [[package]] name = "diesel" -version = "2.1.4" +version = "2.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62c6fcf842f17f8c78ecf7c81d75c5ce84436b41ee07e03f490fbb5f5a8731d8" +checksum = "158fe8e2e68695bd615d7e4f3227c0727b151330d3e253b525086c348d055d5e" dependencies = [ "diesel_derives", "libsqlite3-sys", @@ -775,21 +743,22 @@ dependencies = [ [[package]] name = "diesel_derives" -version = "2.1.2" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef8337737574f55a468005a83499da720f20c65586241ffea339db9ecdfd2b44" +checksum = "e7f2c3de51e2ba6bf2a648285696137aaf0f5f487bcbea93972fe8a364e131a4" dependencies = [ "diesel_table_macro_syntax", + "dsl_auto_type", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.77", ] [[package]] name = "diesel_migrations" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6036b3f0120c5961381b570ee20a02432d7e2d27ea60de9578799cf9156914ac" +checksum = "8a73ce704bad4231f001bff3314d91dce4aba0770cee8b233991859abc15c1f6" dependencies = [ "diesel", "migrations_internals", @@ -798,11 +767,11 @@ dependencies = [ [[package]] name = "diesel_table_macro_syntax" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc5557efc453706fed5e4fa85006fe9817c224c3f480a34c7e5959fd700921c5" +checksum = "209c735641a413bc68c4923a9d6ad4bcb3ca306b794edaa7eb0b3228a99ffb25" dependencies = [ - "syn 2.0.39", + "syn 2.0.77", ] [[package]] @@ -835,7 +804,7 @@ dependencies = [ "libc", "option-ext", "redox_users", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -851,28 +820,42 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" [[package]] -name = "either" -version = "1.9.0" +name = "dsl_auto_type" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "c5d9abe6314103864cc2d8901b7ae224e0ab1a103a0a416661b4097b0779b607" +dependencies = [ + "darling", + "either", + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" dependencies = [ "serde", ] [[package]] name = "encoding_rs" -version = "0.8.33" +version = "0.8.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" dependencies = [ "cfg-if", ] [[package]] name = "enumflags2" -version = "0.7.8" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5998b4f30320c9d93aed72f63af821bfdac50465b75428fce77b48ec482c3939" +checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" dependencies = [ "enumflags2_derive", "serde", @@ -880,13 +863,13 @@ dependencies = [ [[package]] name = "enumflags2_derive" -version = "0.7.8" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f95e2801cd355d4a1a3e3953ce6ee5ae9603a5c833455343a8bfe3f44d418246" +checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.77", ] [[package]] @@ -897,12 +880,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.7" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f258a7194e7f7c2a7837a8913aeab7fd8c383457034fa20ce4dd3dcb813e8eb8" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -913,7 +896,7 @@ checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" dependencies = [ "cfg-if", "home", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -934,12 +917,23 @@ dependencies = [ ] [[package]] -name = "event-listener-strategy" -version = "0.3.0" +name = "event-listener" +version = "5.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d96b852f1345da36d551b9473fa1e2b1eb5c5195585c6c018118bc92a8d91160" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" dependencies = [ - "event-listener 3.1.0", + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" +dependencies = [ + "event-listener 5.3.1", "pin-project-lite", ] @@ -954,28 +948,22 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "filetime" -version = "0.2.22" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.3.5", - "windows-sys", + "libredox", + "windows-sys 0.59.0", ] -[[package]] -name = "finl_unicode" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fcfdc7a0362c9f4444381a9e697c79d435fe65b52a37466fc2c1184cee9edc6" - [[package]] name = "flume" version = "0.11.0" @@ -984,7 +972,7 @@ checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" dependencies = [ "futures-core", "futures-sink", - "spin 0.9.8", + "spin", ] [[package]] @@ -1010,18 +998,18 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] [[package]] name = "futures-channel" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -1029,15 +1017,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -1057,9 +1045,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-lite" @@ -1078,46 +1066,45 @@ dependencies = [ [[package]] name = "futures-lite" -version = "2.0.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3831c2651acb5177cbd83943f3d9c8912c5ad03c76afcc0e9511ba568ec5ebb" +checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" dependencies = [ - "fastrand 2.0.1", + "fastrand 2.1.1", "futures-core", "futures-io", - "memchr", "parking", "pin-project-lite", ] [[package]] name = "futures-macro" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.77", ] [[package]] name = "futures-sink" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-util" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-core", "futures-io", @@ -1142,9 +1129,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.11" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", @@ -1153,27 +1140,15 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" - -[[package]] -name = "gloo-timers" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" -dependencies = [ - "futures-channel", - "futures-core", - "js-sys", - "wasm-bindgen", -] +checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" [[package]] name = "h2" -version = "0.3.22" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" dependencies = [ "bytes", "fnv", @@ -1181,7 +1156,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 2.1.0", + "indexmap 2.5.0", "slab", "tokio", "tokio-util", @@ -1196,9 +1171,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.14.2" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ "ahash", "allocator-api2", @@ -1210,7 +1185,7 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" dependencies = [ - "hashbrown 0.14.2", + "hashbrown 0.14.5", ] [[package]] @@ -1223,10 +1198,22 @@ dependencies = [ ] [[package]] -name = "hermit-abi" -version = "0.3.3" +name = "heck" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" [[package]] name = "hex" @@ -1236,9 +1223,9 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "hkdf" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" dependencies = [ "hmac", ] @@ -1254,18 +1241,18 @@ dependencies = [ [[package]] name = "home" -version = "0.5.5" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" dependencies = [ - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "http" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ "bytes", "fnv", @@ -1274,9 +1261,9 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", "http", @@ -1285,9 +1272,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.8.0" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" [[package]] name = "httpdate" @@ -1297,9 +1284,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.27" +version = "0.14.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" dependencies = [ "bytes", "futures-channel", @@ -1312,7 +1299,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.4.10", + "socket2 0.5.7", "tokio", "tower-service", "tracing", @@ -1334,9 +1321,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.58" +version = "0.1.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1363,9 +1350,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -1384,26 +1371,26 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.1.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" dependencies = [ "equivalent", - "hashbrown 0.14.2", + "hashbrown 0.14.5", "serde", ] [[package]] name = "indoc" -version = "2.0.4" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" +checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" [[package]] name = "instant" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ "cfg-if", ] @@ -1414,16 +1401,16 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi", + "hermit-abi 0.3.9", "libc", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] name = "ipnet" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" [[package]] name = "itertools" @@ -1436,51 +1423,42 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jobserver" -version = "0.1.27" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.65" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" dependencies = [ "wasm-bindgen", ] -[[package]] -name = "kv-log-macro" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" -dependencies = [ - "log", -] - [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" dependencies = [ - "spin 0.5.2", + "spin", ] [[package]] name = "libc" -version = "0.2.150" +version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" [[package]] name = "liblumina" @@ -1494,7 +1472,7 @@ dependencies = [ "diesel", "diesel_migrations", "dirs", - "fastrand 2.0.1", + "fastrand 2.1.1", "obws", "qt-build-utils", "quote", @@ -1521,20 +1499,20 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "libredox" -version = "0.0.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.6.0", "libc", - "redox_syscall 0.4.1", + "redox_syscall", ] [[package]] name = "libsqlite3-sys" -version = "0.26.0" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc22eff61b133b115c6e8c74e818c628d6d5e7a502afea6f64dee076dd94326" +checksum = "cf4e226dcd58b4be396f7bd3c20da8fdee2911400705297ba7d2d7cc2c30f716" dependencies = [ "cc", "pkg-config", @@ -1558,15 +1536,15 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" -version = "0.4.11" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -1574,12 +1552,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" -dependencies = [ - "value-bag", -] +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "malloc_buf" @@ -1611,9 +1586,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.6.4" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memoffset" @@ -1625,10 +1600,19 @@ dependencies = [ ] [[package]] -name = "migrations_internals" -version = "2.1.0" +name = "memoffset" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f23f71580015254b020e856feac3df5878c2c7a8812297edd6c0a485ac9dada" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "migrations_internals" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd01039851e82f8799046eabbb354056283fb265c8ec0996af940f4e85a380ff" dependencies = [ "serde", "toml", @@ -1636,9 +1620,9 @@ dependencies = [ [[package]] name = "migrations_macros" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cce3325ac70e67bbab5bd837a31cae01f1a6db64e0e744a33cb03a543469ef08" +checksum = "ffb161cc72176cb37aa47f1fc520d3ef02263d67d661f44f05d05a079e1237fd" dependencies = [ "migrations_internals", "proc-macro2", @@ -1659,31 +1643,31 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ - "adler", + "adler2", ] [[package]] name = "mio" -version = "0.8.9" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ + "hermit-abi 0.3.9", "libc", "wasi", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "native-tls" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" dependencies = [ - "lazy_static", "libc", "log", "openssl", @@ -1704,7 +1688,7 @@ dependencies = [ "bitflags 1.3.2", "cfg-if", "libc", - "memoffset", + "memoffset 0.7.1", ] [[package]] @@ -1745,20 +1729,25 @@ dependencies = [ ] [[package]] -name = "num-integer" -version = "0.1.45" +name = "num-conv" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "autocfg", "num-traits", ] [[package]] name = "num-iter" -version = "0.1.43" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" dependencies = [ "autocfg", "num-integer", @@ -1767,29 +1756,19 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.17" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", "libm", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", -] - [[package]] name = "num_threads" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" dependencies = [ "libc", ] @@ -1825,9 +1804,9 @@ dependencies = [ [[package]] name = "object" -version = "0.32.1" +version = "0.36.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" dependencies = [ "memchr", ] @@ -1838,8 +1817,8 @@ version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1a1f9a0b90718cf798dd72018d1a59ef01c339b67fb7d56e63503b98d68f74e" dependencies = [ - "base64", - "bitflags 2.4.1", + "base64 0.21.7", + "bitflags 2.6.0", "futures-util", "rgb", "semver", @@ -1857,17 +1836,17 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "openssl" -version = "0.10.59" +version = "0.10.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a257ad03cd8fb16ad4172fedf8094451e1af1c4b70097636ef2eac9a5f0cc33" +checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.6.0", "cfg-if", "foreign-types", "libc", @@ -1884,7 +1863,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.77", ] [[package]] @@ -1895,9 +1874,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.95" +version = "0.9.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40a4130519a360279579c2053038317e40eff64d13fd3f004f9e1b72b8a6aaf9" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" dependencies = [ "cc", "libc", @@ -1929,15 +1908,15 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "parking" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", "parking_lot_core", @@ -1945,22 +1924,22 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.4.1", + "redox_syscall", "smallvec", - "windows-targets", + "windows-targets 0.52.6", ] [[package]] name = "paste" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pem-rfc7468" @@ -1973,15 +1952,15 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pin-utils" @@ -1991,12 +1970,12 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piper" -version = "0.2.1" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" dependencies = [ "atomic-waker", - "fastrand 2.0.1", + "fastrand 2.1.1", "futures-io", ] @@ -2023,9 +2002,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.27" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "polling" @@ -2040,21 +2019,22 @@ dependencies = [ "libc", "log", "pin-project-lite", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] name = "polling" -version = "3.3.0" +version = "3.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e53b6af1f60f36f8c2ac2aad5459d75a5a9b4be1e8cdd40264f315d78193e531" +checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" dependencies = [ "cfg-if", "concurrent-queue", + "hermit-abi 0.4.0", "pin-project-lite", - "rustix 0.38.25", + "rustix 0.38.36", "tracing", - "windows-sys", + "windows-sys 0.59.0", ] [[package]] @@ -2071,9 +2051,12 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "proc-macro-crate" @@ -2082,23 +2065,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ "once_cell", - "toml_edit", + "toml_edit 0.19.15", ] [[package]] name = "proc-macro2" -version = "1.0.69" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "qt-build-utils" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8f3ef4a8dd2f774ad37f7cb2391af5fbadd5928f7364f02fb53a56d69466bb1" +checksum = "d59c828fe2434dad34dd0c30a4ba037509b61dad92a55baf0dc42699e6aa2f10" dependencies = [ "cc", "thiserror", @@ -2107,9 +2090,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.33" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -2152,27 +2135,18 @@ checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" [[package]] name = "redox_syscall" -version = "0.3.5" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_syscall" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" -dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", ] [[package]] name = "redox_users" -version = "0.4.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom", "libredox", @@ -2181,14 +2155,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.2" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.3", - "regex-syntax 0.8.2", + "regex-automata 0.4.7", + "regex-syntax 0.8.4", ] [[package]] @@ -2202,13 +2176,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.3" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.2", + "regex-syntax 0.8.4", ] [[package]] @@ -2219,17 +2193,17 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "reqwest" -version = "0.11.23" +version = "0.11.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" dependencies = [ - "base64", + "base64 0.21.7", "bytes", "encoding_rs", "futures-core", @@ -2247,9 +2221,11 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", + "rustls-pemfile", "serde", "serde_json", "serde_urlencoded", + "sync_wrapper", "system-configuration", "tokio", "tokio-native-tls", @@ -2283,20 +2259,20 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] name = "rgb" -version = "0.8.37" +version = "0.8.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05aaa8004b64fd573fc9d002f4e632d51ad4f026c2b5ba95fcb6c2f32c2c47d8" +checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a" [[package]] name = "rsa" -version = "0.9.4" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a3211b01eea83d80687da9eef70e39d65144a3894866a5153a2723e425a157f" +checksum = "5d0e5124fcb30e76a7e79bfee683a2746db83784b86289f6251b54b7950a0dfc" dependencies = [ "const-oid", "digest", @@ -2314,9 +2290,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustix" @@ -2329,35 +2305,44 @@ dependencies = [ "io-lifetimes", "libc", "linux-raw-sys 0.3.8", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] name = "rustix" -version = "0.38.25" +version = "0.38.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc99bc2d4f1fed22595588a013687477aedf3cdcfb26558c559edb67b4d9b22e" +checksum = "3f55e80d50763938498dd5ebb18647174e0c76dc38c5505294bb224624f30f36" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.6.0", "errno", "libc", - "linux-raw-sys 0.4.11", - "windows-sys", + "linux-raw-sys 0.4.14", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", ] [[package]] name = "ryu" -version = "1.0.15" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "schannel" -version = "0.1.22" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" +checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" dependencies = [ - "windows-sys", + "windows-sys 0.59.0", ] [[package]] @@ -2374,11 +2359,11 @@ checksum = "a3cf7c11c38cb994f3d40e8a8cde3bbd1f72a435e4c49e85d6553d8312306152" [[package]] name = "security-framework" -version = "2.9.2" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "core-foundation", "core-foundation-sys", "libc", @@ -2387,9 +2372,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.9.1" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" dependencies = [ "core-foundation-sys", "libc", @@ -2397,60 +2382,61 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.20" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" dependencies = [ "serde", ] [[package]] name = "serde" -version = "1.0.193" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.193" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.77", ] [[package]] name = "serde_json" -version = "1.0.108" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] [[package]] name = "serde_repr" -version = "0.1.17" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3081f5ffbb02284dda55132aa26daecedd7372a42417bbbab6f14ab7d6bb9145" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.77", ] [[package]] name = "serde_spanned" -version = "0.6.4" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" dependencies = [ "serde", ] @@ -2469,16 +2455,17 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.4.0" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64cd236ccc1b7a29e7e2739f27c0b2dd199804abc4290e32f59f3b68d6405c23" +checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" dependencies = [ - "base64", + "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.1.0", + "indexmap 2.5.0", "serde", + "serde_derive", "serde_json", "serde_with_macros", "time", @@ -2486,14 +2473,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.4.0" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93634eb5f75a2323b16de4748022ac4297f9e76b6dced2be287a099f41b5e788" +checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.77", ] [[package]] @@ -2528,10 +2515,16 @@ dependencies = [ ] [[package]] -name = "signal-hook-registry" -version = "1.4.1" +name = "shlex" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" dependencies = [ "libc", ] @@ -2557,9 +2550,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.2" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" @@ -2573,20 +2566,14 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.5" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", - "windows-sys", + "windows-sys 0.52.0", ] -[[package]] -name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - [[package]] name = "spin" version = "0.9.8" @@ -2598,9 +2585,9 @@ dependencies = [ [[package]] name = "spki" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" dependencies = [ "base64ct", "der", @@ -2608,20 +2595,19 @@ dependencies = [ [[package]] name = "sqlformat" -version = "0.2.2" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b7b278788e7be4d0d29c0f39497a0eef3fba6bbc8e70d8bf7fde46edeaa9e85" +checksum = "7bba3a93db0cc4f7bdece8bb09e77e2e785c20bfebf79eb8340ed80708048790" dependencies = [ - "itertools", "nom", "unicode_categories", ] [[package]] name = "sqlx" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e50c216e3624ec8e7ecd14c6a6a6370aad6ee5d8cfc3ab30b5162eeeef2ed33" +checksum = "c9a2ccff1a000a5a59cd33da541d9f2fdcd9e6e8229cc200565942bff36d0aaa" dependencies = [ "sqlx-core", "sqlx-macros", @@ -2632,9 +2618,9 @@ dependencies = [ [[package]] name = "sqlx-core" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d6753e460c998bbd4cd8c6f0ed9a64346fcca0723d6e75e52fdc351c5d2169d" +checksum = "24ba59a9342a3d9bab6c56c118be528b27c9b60e490080e9711a04dccac83ef6" dependencies = [ "ahash", "atoi", @@ -2642,7 +2628,6 @@ dependencies = [ "bytes", "crc", "crossbeam-queue", - "dotenvy", "either", "event-listener 2.5.3", "futures-channel", @@ -2652,7 +2637,7 @@ dependencies = [ "futures-util", "hashlink", "hex", - "indexmap 2.1.0", + "indexmap 2.5.0", "log", "memchr", "once_cell", @@ -2672,9 +2657,9 @@ dependencies = [ [[package]] name = "sqlx-macros" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a793bb3ba331ec8359c1853bd39eed32cdd7baaf22c35ccf5c92a7e8d1189ec" +checksum = "4ea40e2345eb2faa9e1e5e326db8c34711317d2b5e08d0d5741619048a803127" dependencies = [ "proc-macro2", "quote", @@ -2685,13 +2670,13 @@ dependencies = [ [[package]] name = "sqlx-macros-core" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a4ee1e104e00dedb6aa5ffdd1343107b0a4702e862a84320ee7cc74782d96fc" +checksum = "5833ef53aaa16d860e92123292f1f6a3d53c34ba8b1969f152ef1a7bb803f3c8" dependencies = [ "dotenvy", "either", - "heck", + "heck 0.4.1", "hex", "once_cell", "proc-macro2", @@ -2710,13 +2695,13 @@ dependencies = [ [[package]] name = "sqlx-mysql" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "864b869fdf56263f4c95c45483191ea0af340f9f3e3e7b4d57a61c7c87a970db" +checksum = "1ed31390216d20e538e447a7a9b959e06ed9fc51c37b514b46eb758016ecd418" dependencies = [ "atoi", - "base64", - "bitflags 2.4.1", + "base64 0.21.7", + "bitflags 2.6.0", "byteorder", "bytes", "crc", @@ -2752,13 +2737,13 @@ dependencies = [ [[package]] name = "sqlx-postgres" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb7ae0e6a97fb3ba33b23ac2671a5ce6e3cabe003f451abd5a56e7951d975624" +checksum = "7c824eb80b894f926f89a0b9da0c7f435d27cdd35b8c655b114e58223918577e" dependencies = [ "atoi", - "base64", - "bitflags 2.4.1", + "base64 0.21.7", + "bitflags 2.6.0", "byteorder", "crc", "dotenvy", @@ -2779,7 +2764,6 @@ dependencies = [ "rand", "serde", "serde_json", - "sha1", "sha2", "smallvec", "sqlx-core", @@ -2791,9 +2775,9 @@ dependencies = [ [[package]] name = "sqlx-sqlite" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59dc83cf45d89c555a577694534fcd1b55c545a816c816ce51f20bbe56a4f3f" +checksum = "b244ef0a8414da0bed4bb1910426e890b19e5e9bccc27ada6b797d05c55ae0aa" dependencies = [ "atoi", "flume", @@ -2809,6 +2793,7 @@ dependencies = [ "sqlx-core", "tracing", "url", + "urlencoding", ] [[package]] @@ -2819,26 +2804,26 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "stringprep" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb41d74e231a107a1b4ee36bd1214b11285b77768d2e3824aedafa988fd36ee6" +checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1" dependencies = [ - "finl_unicode", "unicode-bidi", "unicode-normalization", + "unicode-properties", ] [[package]] name = "strsim" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "subtle" -version = "2.5.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" @@ -2853,15 +2838,21 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.39" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + [[package]] name = "system-configuration" version = "0.5.1" @@ -2885,9 +2876,9 @@ dependencies = [ [[package]] name = "tar" -version = "0.4.40" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" +checksum = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909" dependencies = [ "filetime", "libc", @@ -2896,51 +2887,51 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.8.1" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" +checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" dependencies = [ "cfg-if", - "fastrand 2.0.1", - "redox_syscall 0.4.1", - "rustix 0.38.25", - "windows-sys", + "fastrand 2.1.1", + "once_cell", + "rustix 0.38.36", + "windows-sys 0.59.0", ] [[package]] name = "termcolor" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" dependencies = [ "winapi-util", ] [[package]] name = "thiserror" -version = "1.0.50" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.50" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.77", ] [[package]] name = "thread_local" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" dependencies = [ "cfg-if", "once_cell", @@ -2948,13 +2939,14 @@ dependencies = [ [[package]] name = "time" -version = "0.3.30" +version = "0.3.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" dependencies = [ "deranged", "itoa", "libc", + "num-conv", "num_threads", "powerfmt", "serde", @@ -2970,18 +2962,19 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.15" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" dependencies = [ + "num-conv", "time-core", ] [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -2994,32 +2987,31 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.34.0" +version = "1.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c014766411e834f7af5b8f4cf46257aab4036ca95e9d2c144a10f59ad6f5b9" +checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" dependencies = [ "backtrace", "bytes", "libc", "mio", - "num_cpus", "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.5", + "socket2 0.5.7", "tokio-macros", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "tokio-macros" -version = "2.2.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.77", ] [[package]] @@ -3034,9 +3026,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.14" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" dependencies = [ "futures-core", "pin-project-lite", @@ -3057,35 +3049,34 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.10" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" dependencies = [ "bytes", "futures-core", "futures-sink", "pin-project-lite", "tokio", - "tracing", ] [[package]] name = "toml" -version = "0.7.8" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit", + "toml_edit 0.22.20", ] [[package]] name = "toml_datetime" -version = "0.6.5" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" dependencies = [ "serde", ] @@ -3096,18 +3087,29 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.1.0", + "indexmap 2.5.0", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +dependencies = [ + "indexmap 2.5.0", "serde", "serde_spanned", "toml_datetime", - "winnow", + "winnow 0.6.18", ] [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" @@ -3129,7 +3131,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.77", ] [[package]] @@ -3175,9 +3177,9 @@ dependencies = [ [[package]] name = "try-lock" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "tungstenite" @@ -3206,19 +3208,20 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "uds_windows" -version = "1.0.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce65604324d3cce9b966701489fbd0cf318cb1f7bd9dd07ac9a4ee6fb791930d" +checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" dependencies = [ + "memoffset 0.9.1", "tempfile", "winapi", ] [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" @@ -3228,24 +3231,30 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" dependencies = [ "tinyvec", ] [[package]] -name = "unicode-segmentation" -version = "1.10.1" +name = "unicode-properties" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" +checksum = "52ea75f83c0137a9b98608359a5f1af8144876eb67bcb1ce837368e906a9f524" + +[[package]] +name = "unicode-segmentation" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" [[package]] name = "unicode-width" -version = "0.1.11" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "unicode_categories" @@ -3255,9 +3264,9 @@ checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" [[package]] name = "url" -version = "2.4.1" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", @@ -3283,12 +3292,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" -[[package]] -name = "value-bag" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a72e1902dde2bd6441347de2b70b7f5d59bf157c6c62f0c44572607a1d55bbe" - [[package]] name = "vcpkg" version = "0.2.15" @@ -3297,9 +3300,9 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "versions" @@ -3322,9 +3325,9 @@ dependencies = [ [[package]] name = "waker-fn" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" +checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" [[package]] name = "want" @@ -3342,35 +3345,42 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] -name = "wasm-bindgen" -version = "0.2.88" +name = "wasite" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce" +checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" + +[[package]] +name = "wasm-bindgen" +version = "0.2.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.88" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.77", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.38" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afec9963e3d0994cac82455b2b3502b81a7f40f9a0d32181f7528d9f4b43e02" +checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" dependencies = [ "cfg-if", "js-sys", @@ -3380,9 +3390,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.88" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3390,28 +3400,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.88" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.77", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.88" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "web-sys" -version = "0.3.65" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5db499c5f66323272151db0e666cd34f78617522fb0c1604d31a27c50c206a85" +checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" dependencies = [ "js-sys", "wasm-bindgen", @@ -3419,9 +3429,13 @@ dependencies = [ [[package]] name = "whoami" -version = "1.4.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22fc3756b8a9133049b26c7f61ab35416c130e8c09b660f5b3958b446f52cc50" +checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d" +dependencies = [ + "redox_syscall", + "wasite", +] [[package]] name = "winapi" @@ -3441,11 +3455,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "winapi", + "windows-sys 0.59.0", ] [[package]] @@ -3456,11 +3470,11 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-core" -version = "0.51.1" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets", + "windows-targets 0.52.6", ] [[package]] @@ -3469,7 +3483,25 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets", + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -3478,13 +3510,29 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -3493,36 +3541,78 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + [[package]] name = "windows_i686_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + [[package]] name = "windows_i686_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -3530,10 +3620,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] -name = "winnow" -version = "0.5.19" +name = "windows_x86_64_msvc" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" dependencies = [ "memchr", ] @@ -3545,26 +3650,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ "cfg-if", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] name = "xattr" -version = "1.0.1" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985" +checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" dependencies = [ "libc", + "linux-raw-sys 0.4.14", + "rustix 0.38.36", ] [[package]] name = "xdg-home" -version = "1.0.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2769203cd13a0c6015d515be729c526d041e9cf2c0cc478d57faee85f40c6dcd" +checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" dependencies = [ - "nix", - "winapi", + "libc", + "windows-sys 0.59.0", ] [[package]] @@ -3582,13 +3689,13 @@ dependencies = [ [[package]] name = "zbus" -version = "3.14.1" +version = "3.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31de390a2d872e4cd04edd71b425e29853f786dc99317ed72d73d6fcf5ebb948" +checksum = "675d170b632a6ad49804c8cf2105d7c31eddd3312555cffd4b740e08e97c25e6" dependencies = [ "async-broadcast", "async-executor", - "async-fs", + "async-fs 1.6.0", "async-io 1.13.0", "async-lock 2.8.0", "async-process", @@ -3623,9 +3730,9 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "3.14.1" +version = "3.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d1794a946878c0e807f55a397187c11fc7a038ba5d868e7db4f3bd7760bc9d" +checksum = "7131497b0f887e8061b430c530240063d33bf9455fa34438f388a245da69e0a5" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -3637,9 +3744,9 @@ dependencies = [ [[package]] name = "zbus_names" -version = "2.6.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb80bb776dbda6e23d705cf0123c3b95df99c4ebeaec6c2599d4a5419902b4a9" +checksum = "437d738d3750bed6ca9b8d423ccc7a8eb284f6b1d6d4e225a0e4e6258d864c8d" dependencies = [ "serde", "static_assertions", @@ -3648,29 +3755,30 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.26" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e97e415490559a91254a2979b4829267a57d2fcd741a98eee8b722fb57289aa0" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ + "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.26" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd7e48ccf166952882ca8bd778a43502c64f33bf94c12ebe2a7f08e5a0f6689f" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.77", ] [[package]] name = "zeroize" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" [[package]] name = "zstd" @@ -3693,9 +3801,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.9+zstd.1.5.5" +version = "2.0.13+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" +checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" dependencies = [ "cc", "pkg-config", @@ -3703,9 +3811,9 @@ dependencies = [ [[package]] name = "zvariant" -version = "3.15.0" +version = "3.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44b291bee0d960c53170780af148dca5fa260a63cdd24f1962fa82e03e53338c" +checksum = "4eef2be88ba09b358d3b58aca6e41cd853631d44787f319a1383ca83424fb2db" dependencies = [ "byteorder", "enumflags2", @@ -3718,9 +3826,9 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "3.15.0" +version = "3.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "934d7a7dfc310d6ee06c87ffe88ef4eca7d3e37bb251dece2ef93da8f17d8ecd" +checksum = "37c24dc0bed72f5f90d1f8bb5b07228cbf63b3c6e9f82d82559d4bae666e7ed9" dependencies = [ "proc-macro-crate", "proc-macro2", diff --git a/flake.lock b/flake.lock index 5188fc6..6b82aa5 100644 --- a/flake.lock +++ b/flake.lock @@ -23,11 +23,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1698420672, - "narHash": "sha256-/TdeHMPRjjdJub7p7+w55vyABrsJlt5QkznPYy55vKA=", + "lastModified": 1721727458, + "narHash": "sha256-r/xppY958gmZ4oTfLiHN0ZGuQ+RSTijDblVgVLFi1mw=", "owner": "nix-community", "repo": "naersk", - "rev": "aeb58d5e8faead8980a807c840232697982d47b9", + "rev": "3fb418eaf352498f6b6c30592e3beb63df42ef11", "type": "github" }, "original": { @@ -39,8 +39,8 @@ "nixpkgs": { "locked": { "lastModified": 0, - "narHash": "sha256-aSpiNepFOMk9932HOax0XwNxbA38GOUVOiXfUVPOrck=", - "path": "/nix/store/j10523yhkcc34478azkgcl70yzcx6j2j-source", + "narHash": "sha256-+yj+xgsfZaErbfYM3T+QvEE2hU7UuE+Jf0fJCJ8uPS0=", + "path": "/nix/store/6inj491lsap4ia7mmvn2gbh53jb27zq0-source", "type": "path" }, "original": { @@ -50,11 +50,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1712439257, - "narHash": "sha256-aSpiNepFOMk9932HOax0XwNxbA38GOUVOiXfUVPOrck=", + "lastModified": 1725634671, + "narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ff0dbd94265ac470dda06a657d5fe49de93b4599", + "rev": "574d1eac1c200690e27b8eb4e24887f8df7ac27c", "type": "github" }, "original": { diff --git a/shell.nix b/shell.nix index 4c3ee28..81744d0 100644 --- a/shell.nix +++ b/shell.nix @@ -14,9 +14,9 @@ mkShell rec { gdb qtcreator cmake - extra-cmake-modules + kdePackages.extra-cmake-modules pkg-config - libsForQt5.wrapQtAppsHook + qt6.wrapQtAppsHook makeWrapper openssl.dev @@ -27,20 +27,18 @@ mkShell rec { libclang # libwebp # clang-format - qt5.qtbase - qt5.qttools - qt5.qtquickcontrols2 - qt5.qtx11extras - qt5.qtmultimedia - qt5.qtwayland - qt5.qtwebengine - qt5.qtimageformats - libsForQt5.kirigami2 + qt6.qtbase + qt6.qttools + # qt6.qtquickcontrols2 + # qt6.qtx11extras + qt6.qtmultimedia + qt6.qtwayland + qt6.qtwebengine + qt6.qtimageformats + kdePackages.kirigami # libsForQt5.breeze-icons # libsForQt5.breeze-qt5 - libsForQt5.qqc2-desktop-style - libsForQt5.karchive - libsForQt5.sonnet + kdePackages.qqc2-desktop-style # libsForQt5.kirigami-addons # libsForQt5.ki18n # libsForQt5.kcoreaddons @@ -49,7 +47,8 @@ mkShell rec { # podofo mpv - ffmpeg_5-full + kdePackages.mpvqt + ffmpeg-full # yt-dlp # Rust tools diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index f9caf96..e250740 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -4,19 +4,18 @@ add_executable(lumina main.cpp resources.qrc) target_sources(lumina PRIVATE main.cpp resources.qrc - cpp/songsqlmodel.cpp cpp/songsqlmodel.h - cpp/serviceitemmodel.cpp cpp/serviceitemmodel.h - cpp/serviceitem.cpp cpp/serviceitem.h - cpp/slidehelper.cpp cpp/slidehelper.h - cpp/slidemodel.cpp cpp/slidemodel.h - cpp/slide.cpp cpp/slide.h - cpp/videosqlmodel.cpp cpp/videosqlmodel.h - cpp/imagesqlmodel.cpp cpp/imagesqlmodel.h - cpp/filemanager.cpp cpp/filemanager.h - cpp/presentationsqlmodel.cpp cpp/presentationsqlmodel.h - cpp/mpv/mpvobject.h cpp/mpv/mpvobject.cpp - cpp/mpv/qthelper.hpp cpp/mpv/mpvhelpers.h - cpp/framedecoder.h cpp/framedecoder.cpp + # cpp/songsqlmodel.cpp cpp/songsqlmodel.h + # cpp/serviceitemmodel.cpp cpp/serviceitemmodel.h + # cpp/serviceitem.cpp cpp/serviceitem.h + # cpp/slidehelper.cpp cpp/slidehelper.h + # cpp/slidemodel.cpp cpp/slidemodel.h + # cpp/slide.cpp cpp/slide.h + # cpp/videosqlmodel.cpp cpp/videosqlmodel.h + # cpp/imagesqlmodel.cpp cpp/imagesqlmodel.h + # cpp/filemanager.cpp cpp/filemanager.h + # cpp/presentationsqlmodel.cpp cpp/presentationsqlmodel.h + cpp/mpv/mpvitem.h cpp/mpv/mpvitem.cpp + cpp/mpv/mpvproperties.h ) target_compile_options (lumina PUBLIC -fexceptions) diff --git a/src/cpp/mpv/mpvhelpers.h b/src/cpp/mpv/mpvhelpers.h deleted file mode 100644 index 302708b..0000000 --- a/src/cpp/mpv/mpvhelpers.h +++ /dev/null @@ -1,154 +0,0 @@ -#pragma once - -// MpvObject definition -#define READONLY_PROP_BOOL(p, varName) \ - public: \ - Q_PROPERTY(bool varName READ varName NOTIFY varName##Changed) \ - public Q_SLOTS: \ - bool varName() const { return getProperty(p).toBool(); } \ -Q_SIGNALS: \ - void varName##Changed(bool value); -#define WRITABLE_PROP_BOOL(p, varName) \ - public: \ - Q_PROPERTY(bool varName READ varName WRITE set_##varName NOTIFY varName##Changed) \ - public Q_SLOTS: \ - bool varName() const { return getProperty(p).toBool(); } \ - void set_##varName(bool value) { setProperty(p, value); } \ -Q_SIGNALS: \ - void varName##Changed(bool value); - -#define READONLY_PROP_INT(p, varName) \ - public: \ - Q_PROPERTY(int varName READ varName NOTIFY varName##Changed) \ - public Q_SLOTS: \ - int varName() { return getProperty(p).toInt(); } \ -Q_SIGNALS: \ - void varName##Changed(int value); -#define WRITABLE_PROP_INT(p, varName) \ - public: \ - Q_PROPERTY(int varName READ varName WRITE set_##varName NOTIFY varName##Changed) \ - public Q_SLOTS: \ - int varName() { return getProperty(p).toInt(); } \ - void set_##varName(int value) { setProperty(p, value); } \ -Q_SIGNALS: \ - void varName##Changed(int value); - -#define READONLY_PROP_DOUBLE(p, varName) \ - public: \ - Q_PROPERTY(double varName READ varName NOTIFY varName##Changed) \ - public Q_SLOTS: \ - double varName() { return getProperty(p).toDouble(); } \ -Q_SIGNALS: \ - void varName##Changed(double value); -#define WRITABLE_PROP_DOUBLE(p, varName) \ - public: \ - Q_PROPERTY(double varName READ varName WRITE set_##varName NOTIFY varName##Changed) \ - public Q_SLOTS: \ - double varName() { return getProperty(p).toDouble(); } \ - void set_##varName(double value) { setProperty(p, value); } \ -Q_SIGNALS: \ - void varName##Changed(double value); - -#define READONLY_PROP_STRING(p, varName) \ - public: \ - Q_PROPERTY(QString varName READ varName NOTIFY varName##Changed) \ - public Q_SLOTS: \ - QString varName() { return getProperty(p).toString(); } \ -Q_SIGNALS: \ - void varName##Changed(QString value); -#define WRITABLE_PROP_STRING(p, varName) \ - public: \ - Q_PROPERTY(QString varName READ varName WRITE set_##varName NOTIFY varName##Changed) \ - public Q_SLOTS: \ - QString varName() { return getProperty(p).toString(); } \ - void set_##varName(QString value) { setProperty(p, value); } \ -Q_SIGNALS: \ - void varName##Changed(QString value); - -#define READONLY_PROP_ARRAY(p, varName) \ - public: \ - Q_PROPERTY(QVariantList varName READ varName NOTIFY varName##Changed) \ - public Q_SLOTS: \ - QVariantList varName() { return getProperty(p).toList(); } \ -Q_SIGNALS: \ - void varName##Changed(QVariantList value); -#define WRITABLE_PROP_ARRAY(p, varName) \ - public: \ - Q_PROPERTY(QVariantList varName READ varName WRITE set_##varName NOTIFY varName##Changed) \ - public Q_SLOTS: \ - QVariantList varName() { return getProperty(p).toList(); } \ - void set_##varName(QVariantList value) { setProperty(p, value); } \ -Q_SIGNALS: \ - void varName##Changed(QVariantList value); - -#define READONLY_PROP_MAP(p, varName) \ - public: \ - Q_PROPERTY(QVariantMap varName READ varName NOTIFY varName##Changed) \ - public Q_SLOTS: \ - QVariantMap varName() { return getProperty(p).toMap(); } \ -Q_SIGNALS: \ - void varName##Changed(QVariantMap value); -#define WRITABLE_PROP_MAP(p, varName) \ - public: \ - Q_PROPERTY(QVariantMap varName READ varName WRITE set_##varName NOTIFY varName##Changed) \ - public Q_SLOTS: \ - QVariantMap varName() { return getProperty(p).toMap(); } \ - void set_##varName(QVariantMap value) { setProperty(p, value); } \ -Q_SIGNALS: \ - void varName##Changed(QVariantMap value); - - - - -// MpvObject() constructor -#define WATCH_PROP_BOOL(p) \ - mpv_observe_property(mpv, 0, p, MPV_FORMAT_FLAG); -#define WATCH_PROP_DOUBLE(p) \ - mpv_observe_property(mpv, 0, p, MPV_FORMAT_DOUBLE); -#define WATCH_PROP_INT(p) \ - mpv_observe_property(mpv, 0, p, MPV_FORMAT_INT64); -#define WATCH_PROP_STRING(p) \ - mpv_observe_property(mpv, 0, p, MPV_FORMAT_STRING); -#define WATCH_PROP_ARRAY(p) \ - mpv_observe_property(mpv, 0, p, MPV_FORMAT_NODE_ARRAY); -#define WATCH_PROP_MAP(p) \ - mpv_observe_property(mpv, 0, p, MPV_FORMAT_NODE_MAP); - - -// MpvObject::handle_mpv_event() -#define HANDLE_PROP_NONE(p, varName) \ - (strcmp(prop->name, p) == 0) { \ - int64_t value = 0; \ - Q_EMIT varName##Changed(value); \ - } -#define HANDLE_PROP_BOOL(p, varName) \ - (strcmp(prop->name, p) == 0) { \ - bool value = *(bool *)prop->data; \ - Q_EMIT varName##Changed(value); \ - } -#define HANDLE_PROP_INT(p, varName) \ - (strcmp(prop->name, p) == 0) { \ - int64_t value = *(int64_t *)prop->data; \ - Q_EMIT varName##Changed(value); \ - } -#define HANDLE_PROP_DOUBLE(p, varName) \ - (strcmp(prop->name, p) == 0) { \ - double value = *(double *)prop->data; \ - Q_EMIT varName##Changed(value); \ - } -#define HANDLE_PROP_STRING(p, varName) \ - (strcmp(prop->name, p) == 0) { \ - char* charValue = *(char**)prop->data; \ - QString value = QString::fromUtf8(charValue); \ - Q_EMIT varName##Changed(value); \ - } -#define HANDLE_PROP_ARRAY(p, varName) \ - (strcmp(prop->name, p) == 0) { \ - QVariantList value = getProperty(p).toList(); \ - Q_EMIT varName##Changed(value); \ - } -#define HANDLE_PROP_MAP(p, varName) \ - (strcmp(prop->name, p) == 0) { \ - QVariantMap value = getProperty(p).toMap(); \ - Q_EMIT varName##Changed(value); \ - } diff --git a/src/cpp/mpv/mpvobject.cpp b/src/cpp/mpv/mpvobject.cpp deleted file mode 100644 index 7a27a0d..0000000 --- a/src/cpp/mpv/mpvobject.cpp +++ /dev/null @@ -1,573 +0,0 @@ -#include "mpvobject.h" - -// std -#include -#include -#include -#include -#include - -// Qt -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include - -#include -#include - -// libmpv -#include -#include - -// own -#include "qthelper.hpp" - - -const QDir writeDir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); - -//--- MpvRenderer -void* MpvRenderer::get_proc_address(void *ctx, const char *name) { - (void)ctx; - QOpenGLContext *glctx = QOpenGLContext::currentContext(); - if (!glctx) - return nullptr; - return reinterpret_cast(glctx->getProcAddress(QByteArray(name))); -} - -MpvRenderer::MpvRenderer(const MpvObject *obj) - : obj(obj) - , mpv_gl(nullptr) -{ - - // https://github.com/mpv-player/mpv/blob/master/libmpv/render_gl.h#L106 -#if MPV_CLIENT_API_VERSION >= MPV_MAKE_VERSION(2, 0) - mpv_opengl_init_params gl_init_params{ - get_proc_address, - nullptr // get_proc_address_ctx - }; -#else - mpv_opengl_init_params gl_init_params{ - get_proc_address, - nullptr, // get_proc_address_ctx - nullptr // extra_exts (deprecated) - }; -#endif - - mpv_render_param display{ - MPV_RENDER_PARAM_INVALID, - nullptr - }; - if (QX11Info::isPlatformX11()) { - display.type = MPV_RENDER_PARAM_X11_DISPLAY; - display.data = QX11Info::display(); - } - mpv_render_param params[]{ - { MPV_RENDER_PARAM_API_TYPE, const_cast(MPV_RENDER_API_TYPE_OPENGL) }, - { MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_init_params }, - display, - { MPV_RENDER_PARAM_INVALID, nullptr } - }; - - if (mpv_render_context_create(&mpv_gl, obj->mpv, params) < 0) - throw std::runtime_error("failed to initialize mpv GL context"); - - mpv_render_context_set_update_callback(mpv_gl, MpvObject::on_update, (void *)obj); -} - -MpvRenderer::~MpvRenderer() { - if (mpv_gl) - mpv_render_context_free(mpv_gl); - - // mpv_destroy(obj->mpv); -} - -void MpvRenderer::render() { - QOpenGLFramebufferObject *fbo = framebufferObject(); - // fbo->bind(); - obj->window()->resetOpenGLState(); - - // https://github.com/mpv-player/mpv/blob/master/libmpv/render_gl.h#L133 - mpv_opengl_fbo mpfbo{ - .fbo = static_cast(fbo->handle()), - .w = fbo->width(), - .h = fbo->height(), - .internal_format = 0 // 0=unknown - }; - mpv_render_param params[] = { - { MPV_RENDER_PARAM_OPENGL_FBO, &mpfbo }, - { MPV_RENDER_PARAM_INVALID, nullptr } - }; - mpv_render_context_render(mpv_gl, params); - - - obj->window()->resetOpenGLState(); - // fbo->release(); -} - - - -//--- MpvObject -static void wakeup(void *ctx) -{ - QMetaObject::invokeMethod((MpvObject*)ctx, "onMpvEvents", Qt::QueuedConnection); -} - -MpvObject::MpvObject(QQuickItem *parent) - : QQuickFramebufferObject(parent) - , m_enableAudio(true) - , m_useHwdec(false) - , m_duration(0) - , m_position(0) - , m_isPlaying(false) -{ - mpv = mpv_create(); - if (!mpv) - throw std::runtime_error("could not create mpv context"); - - // these are the terminal messages - // mpv_set_option_string(mpv, "terminal", "yes"); - // mpv_set_option_string(mpv, "msg-level", "all=warn,ao/alsa=error"); - // mpv_set_option_string(mpv, "msg-level", "all=debug"); - - //--- Hardware Decoding - mpv::qt::set_option_variant(mpv, "hwdec-codecs", "all"); - - if (mpv_initialize(mpv) < 0) - throw std::runtime_error("could not initialize mpv context"); - - - mpv::qt::set_option_variant(mpv, "audio-client-name", "mpvz"); - - mpv_request_log_messages(mpv, "terminal-default"); - - //--- 60fps Interpolation - mpv::qt::set_option_variant(mpv, "interpolation", "yes"); - mpv::qt::set_option_variant(mpv, "video-sync", "display-resample"); - // mpv::qt::set_option_variant(mpv, "vf", "lavfi=\"fps=fps=60:round=down\""); - // mpv::qt::set_option_variant(mpv, "override-display-fps", "60"); - - //--- ytdl 1080p max - mpv::qt::set_option_variant(mpv, "ytdl-format", "ytdl-format=bestvideo[width<=?720]+bestaudio/best"); - - - mpv::qt::set_option_variant(mpv, "quiet", "yes"); - - // Setup the callback that will make QtQuick update and redraw if there - // is a new video frame. Use a queued connection: this makes sure the - // doUpdate() function is run on the GUI thread. - // * MpvRender binds mpv_gl update function to MpvObject::on_update - // * MpvObject::on_update will emit MpvObject::mpvUpdated - connect(this, &MpvObject::mpvUpdated, - this, &MpvObject::doUpdate, - Qt::QueuedConnection); - - WATCH_PROP_BOOL("idle-active") - WATCH_PROP_BOOL("mute") - WATCH_PROP_BOOL("pause") - WATCH_PROP_BOOL("paused-for-cache") - WATCH_PROP_BOOL("seekable") - WATCH_PROP_INT("chapter") - WATCH_PROP_INT("chapter-list/count") - WATCH_PROP_INT("decoder-frame-drop-count") - WATCH_PROP_INT("dheight") - WATCH_PROP_INT("dwidth") - WATCH_PROP_INT("estimated-frame-count") - WATCH_PROP_INT("estimated-frame-number") - WATCH_PROP_INT("frame-drop-count") - WATCH_PROP_INT("playlist-pos") - WATCH_PROP_INT("playlist/count") - WATCH_PROP_INT("vo-delayed-frame-count") - WATCH_PROP_INT("volume") - WATCH_PROP_INT("vid") - WATCH_PROP_INT("aid") - WATCH_PROP_INT("sid") - WATCH_PROP_INT("audio-params/channel-count") - WATCH_PROP_INT("audio-params/samplerate") - WATCH_PROP_INT("track-list/count") - WATCH_PROP_INT("contrast") - WATCH_PROP_INT("brightness") - WATCH_PROP_INT("gamma") - WATCH_PROP_INT("saturation") - WATCH_PROP_INT("sub-margin-y") - WATCH_PROP_DOUBLE("audio-bitrate") - WATCH_PROP_DOUBLE("avsync") - WATCH_PROP_DOUBLE("container-fps") - WATCH_PROP_DOUBLE("demuxer-cache-duration") - WATCH_PROP_DOUBLE("display-fps") - WATCH_PROP_DOUBLE("duration") - WATCH_PROP_DOUBLE("estimated-display-fps") - WATCH_PROP_DOUBLE("estimated-vf-fps") - WATCH_PROP_DOUBLE("fps") - WATCH_PROP_DOUBLE("speed") - WATCH_PROP_DOUBLE("time-pos") - WATCH_PROP_DOUBLE("video-bitrate") - WATCH_PROP_DOUBLE("video-params/aspect") - WATCH_PROP_DOUBLE("video-out-params/aspect") - WATCH_PROP_DOUBLE("window-scale") - WATCH_PROP_DOUBLE("current-window-scale") - WATCH_PROP_STRING("audio-codec") - WATCH_PROP_STRING("audio-codec-name") - WATCH_PROP_STRING("audio-params/format") - WATCH_PROP_STRING("filename") - WATCH_PROP_STRING("file-format") - WATCH_PROP_STRING("file-size") - WATCH_PROP_STRING("audio-format") - WATCH_PROP_STRING("hwdec") - WATCH_PROP_STRING("hwdec-current") - WATCH_PROP_STRING("hwdec-interop") - WATCH_PROP_STRING("loop") - WATCH_PROP_STRING("media-title") - WATCH_PROP_STRING("path") - WATCH_PROP_STRING("video-codec") - WATCH_PROP_STRING("video-format") - WATCH_PROP_STRING("video-params/pixelformat") - WATCH_PROP_STRING("video-out-params/pixelformat") - WATCH_PROP_STRING("ytdl-format") - WATCH_PROP_MAP("demuxer-cache-state") - - connect(this, &MpvObject::idleActiveChanged, - this, &MpvObject::updateState); - connect(this, &MpvObject::pausedChanged, - this, &MpvObject::updateState); - - mpv_set_wakeup_callback(mpv, wakeup, this); -} - -MpvObject::~MpvObject() -{ - // quit(); -} - -QQuickFramebufferObject::Renderer *MpvObject::createRenderer() const -{ - window()->setPersistentOpenGLContext(true); - window()->setPersistentSceneGraph(true); - return new MpvRenderer(this); -} - -void MpvObject::on_update(void *ctx) -{ - MpvObject *self = (MpvObject *)ctx; - emit self->mpvUpdated(); -} - -// connected to mpvUpdated(); signal makes sure it runs on the GUI thread -void MpvObject::doUpdate() -{ - update(); -} - -void MpvObject::command(const QVariant& params) -{ - // qDebug() << params; - mpv::qt::command(mpv, params); -} - -void MpvObject::commandAsync(const QVariant& params) -{ - // qDebug() << params; - mpv::qt::command_async(mpv, params); -} - -void MpvObject::setProperty(const QString& name, const QVariant& value) -{ - mpv::qt::set_property_variant(mpv, name, value); -} - -QVariant MpvObject::getProperty(const QString &name) const -{ - return mpv::qt::get_property_variant(mpv, name); -} - -void MpvObject::setOption(const QString& name, const QVariant& value) -{ - mpv::qt::set_option_variant(mpv, name, value); -} - - -void MpvObject::onMpvEvents() -{ - // Process all events, until the event queue is empty. - while (mpv) { - mpv_event *event = mpv_wait_event(mpv, 0); - if (event->event_id == MPV_EVENT_NONE) { - break; - } - handle_mpv_event(event); - } -} - -void MpvObject::logPropChange(mpv_event_property *prop) -{ - switch (prop->format) { - case MPV_FORMAT_NONE: - qDebug() << objectName() << "none" << prop->name << 0; - break; - case MPV_FORMAT_STRING: - qDebug() << objectName() << "str " << prop->name << *(char**)prop->data; - break; - case MPV_FORMAT_FLAG: - qDebug() << objectName() << "bool" << prop->name << *(bool *)prop->data; - break; - case MPV_FORMAT_INT64: - qDebug() << objectName() << "int " << prop->name << *(int64_t *)prop->data; - break; - case MPV_FORMAT_DOUBLE: - qDebug() << objectName() << "doub" << prop->name << *(double *)prop->data; - break; - case MPV_FORMAT_NODE_ARRAY: - qDebug() << objectName() << "arr " << prop->name; // TODO - break; - case MPV_FORMAT_NODE_MAP: - qDebug() << objectName() << "map " << prop->name; // TODO - break; - default: - qDebug() << objectName() << "prop(format=" << prop->format << ")" << prop->name; - break; - } -} - -void MpvObject::handle_mpv_event(mpv_event *event) -{ - // See: https://github.com/mpv-player/mpv/blob/master/libmpv/client.h - // See: https://github.com/mpv-player/mpv/blob/master/player/lua.c#L471 - - switch (event->event_id) { - case MPV_EVENT_SHUTDOWN: { - mpv_destroy(mpv); - break; - } - case MPV_EVENT_LOG_MESSAGE: { - mpv_event_log_message *logData = (mpv_event_log_message *)event->data; - Q_EMIT logMessage( - QString(logData->prefix), - QString(logData->level), - QString(logData->text) - ); - break; - } - case MPV_EVENT_START_FILE: { - Q_EMIT fileStarted(); - break; - } - case MPV_EVENT_END_FILE: { - mpv_event_end_file *eef = (mpv_event_end_file *)event->data; - const char *reason; - switch (eef->reason) { - case MPV_END_FILE_REASON_EOF: reason = "eof"; break; - case MPV_END_FILE_REASON_STOP: reason = "stop"; break; - case MPV_END_FILE_REASON_QUIT: reason = "quit"; break; - case MPV_END_FILE_REASON_ERROR: reason = "error"; break; - case MPV_END_FILE_REASON_REDIRECT: reason = "redirect"; break; - default: - reason = "unknown"; - } - Q_EMIT fileEnded(QString(reason)); - break; - } - case MPV_EVENT_FILE_LOADED: { - Q_EMIT fileLoaded(); - break; - } - case MPV_EVENT_PROPERTY_CHANGE: { - mpv_event_property *prop = (mpv_event_property *)event->data; - // logPropChange(prop); - - if (prop->format == MPV_FORMAT_NONE) { - if HANDLE_PROP_NONE("vid", vid) - else if HANDLE_PROP_NONE("aid", aid) - else if HANDLE_PROP_NONE("sid", sid) - else if HANDLE_PROP_NONE("track-list/count", trackListCount) - - } else if (prop->format == MPV_FORMAT_DOUBLE) { - if (strcmp(prop->name, "time-pos") == 0) { - double time = *(double *)prop->data; - m_position = time; - Q_EMIT positionChanged(time); - } else if (strcmp(prop->name, "duration") == 0) { - double time = *(double *)prop->data; - m_duration = time; - Q_EMIT durationChanged(time); - } - else if HANDLE_PROP_DOUBLE("audio-bitrate", audioBitrate) - else if HANDLE_PROP_DOUBLE("avsync", avsync) - else if HANDLE_PROP_DOUBLE("container-fps", containerFps) - else if HANDLE_PROP_DOUBLE("demuxer-cache-duration", demuxerCacheDuration) - else if HANDLE_PROP_DOUBLE("display-fps", displayFps) - else if HANDLE_PROP_DOUBLE("estimated-display-fps", estimatedDisplayFps) - else if HANDLE_PROP_DOUBLE("estimated-vf-fps", estimatedVfFps) - else if HANDLE_PROP_DOUBLE("fps", fps) - else if HANDLE_PROP_DOUBLE("speed", speed) - else if HANDLE_PROP_DOUBLE("video-bitrate", videoBitrate) - else if HANDLE_PROP_DOUBLE("video-params/aspect", videoParamsAspect) - else if HANDLE_PROP_DOUBLE("video-out-params/aspect", videoOutParamsAspect) - else if HANDLE_PROP_DOUBLE("window-scale", windowScale) - else if HANDLE_PROP_DOUBLE("current-window-scale", currentWindowScale) - - } else if (prop->format == MPV_FORMAT_FLAG) { - if HANDLE_PROP_BOOL("idle-active", idleActive) - else if HANDLE_PROP_BOOL("mute", muted) - else if HANDLE_PROP_BOOL("pause", paused) - else if HANDLE_PROP_BOOL("paused-for-cache", pausedForCache) - else if HANDLE_PROP_BOOL("seekable", seekable) - - } else if (prop->format == MPV_FORMAT_STRING) { - if HANDLE_PROP_STRING("audio-codec", audioCodec) - else if HANDLE_PROP_STRING("audio-codec-name", audioCodecName) - else if HANDLE_PROP_STRING("audio-params/format", audioParamsFormat) - else if HANDLE_PROP_STRING("filename", filename) - else if HANDLE_PROP_STRING("file-format", fileFormat) - else if HANDLE_PROP_STRING("file-size", fileSize) - else if HANDLE_PROP_STRING("audio-format", audioFormat) - else if HANDLE_PROP_STRING("hwdec", hwdec) - else if HANDLE_PROP_STRING("hwdec-current", hwdecCurrent) - else if HANDLE_PROP_STRING("hwdec-interop", hwdecInterop) - else if HANDLE_PROP_STRING("loop", loop) - else if HANDLE_PROP_STRING("media-title", mediaTitle) - else if HANDLE_PROP_STRING("path", path) - else if HANDLE_PROP_STRING("video-codec", videoCodec) - else if HANDLE_PROP_STRING("video-format", videoFormat) - else if HANDLE_PROP_STRING("video-params/pixelformat", videoParamsPixelformat) - else if HANDLE_PROP_STRING("video-out-params/pixelformat", videoOutParamsPixelformat) - else if HANDLE_PROP_STRING("ytdl-format", ytdlFormat) - - - } else if (prop->format == MPV_FORMAT_INT64) { - if HANDLE_PROP_INT("chapter", chapter) - else if HANDLE_PROP_INT("chapter-list/count", chapterListCount) - else if HANDLE_PROP_INT("decoder-frame-drop-count", decoderFrameDropCount) - else if HANDLE_PROP_INT("dwidth", dwidth) - else if HANDLE_PROP_INT("dheight", dheight) - else if HANDLE_PROP_INT("estimated-frame-count", estimatedFrameCount) - else if HANDLE_PROP_INT("estimated-frame-number", estimatedFrameNumber) - else if HANDLE_PROP_INT("frame-drop-count", frameDropCount) - else if HANDLE_PROP_INT("playlist-pos", playlistPos) - else if HANDLE_PROP_INT("playlist/count", playlistCount) - else if HANDLE_PROP_INT("vo-delayed-frame-count", voDelayedFrameCount) - else if HANDLE_PROP_INT("volume", volume) - else if HANDLE_PROP_INT("vid", vid) - else if HANDLE_PROP_INT("aid", aid) - else if HANDLE_PROP_INT("sid", sid) - else if HANDLE_PROP_INT("audio-params/channel-count", audioParamsChannelCount) - else if HANDLE_PROP_INT("audio-params/samplerate", audioParamsSampleRate) - else if HANDLE_PROP_INT("track-list/count", trackListCount) - else if HANDLE_PROP_INT("contrast", contrast) - else if HANDLE_PROP_INT("brightness", brightness) - else if HANDLE_PROP_INT("gamma", gamma) - else if HANDLE_PROP_INT("saturation", saturation) - else if HANDLE_PROP_INT("sub-margin-y", subMarginY) - - - } else if (prop->format == MPV_FORMAT_NODE_MAP) { - if HANDLE_PROP_MAP("demuxer-cache-state", demuxerCacheState) - } - break; - } - default: ; - // Ignore uninteresting or unknown events. - } -} - -void MpvObject::play() -{ - // qDebug() << "play"; - if (idleActive() && playlistCount() >= 1) { // File has finished playing. - // qDebug() << "\treload"; - set_playlistPos(playlistPos()); // Reload and play file again. - } - if (!isPlaying()) { - // qDebug() << "\t!isPlaying"; - set_paused(false); - } -} - -void MpvObject::pause() -{ - // qDebug() << "pause"; - if (isPlaying()) { - qDebug() << "!isPlaying"; - set_paused(true); - } -} - -void MpvObject::playPause() -{ - if (isPlaying()) { - pause(); - } else { - play(); - } -} - -void MpvObject::stop() -{ - command(QVariantList() << "stop"); -} - -void MpvObject::quit() -{ - command(QVariantList() << "quit"); - qDebug() << "We quit mpv"; -} - -void MpvObject::stepBackward() -{ - command(QVariantList() << "frame-back-step"); -} - -void MpvObject::stepForward() -{ - command(QVariantList() << "frame-step"); -} - -void MpvObject::seek(double pos) -{ - qDebug() << "seek" << pos << m_duration; - pos = qMax(0.0, qMin(pos, m_duration)); - qDebug() << "seek" << pos; - command(QVariantList() << "seek" << pos << "absolute"); -} - -void MpvObject::loadFile(QVariant urls) -{ - qDebug() << "Url being loaded: " << urls; - command(QVariantList() << "loadfile" << urls); -} - -void MpvObject::screenshotToFile(QString file) { - command(QVariantList() << "show-progress"); - command(QVariantList() << "screenshot-to-file" << file << "video"); - command(QVariantList() << "show-progress"); - qDebug() << "screenshot-to-file" << file << "video"; - qDebug() << "screenshot made: " << file; - quit(); -} - -void MpvObject::subAdd(QVariant urls) -{ - command(QVariantList() << "sub-add" << urls); -} - -void MpvObject::subRemove() -{ - command(QVariantList() << "sub-remove"); -} - -void MpvObject::updateState() -{ - bool isNowPlaying = !idleActive() && !paused(); - if (m_isPlaying != isNowPlaying) { - m_isPlaying = isNowPlaying; - emit isPlayingChanged(m_isPlaying); - } -} - diff --git a/src/cpp/mpv/mpvobject.h b/src/cpp/mpv/mpvobject.h deleted file mode 100644 index 0207780..0000000 --- a/src/cpp/mpv/mpvobject.h +++ /dev/null @@ -1,206 +0,0 @@ -#pragma once - -#include "mpvhelpers.h" - -// Qt -#include -#include - -// libmpv -#include -#include - -// own -#include "qthelper.hpp" - - -class MpvObject; -class MpvRenderer; - -class MpvRenderer : public QQuickFramebufferObject::Renderer -{ - static void* get_proc_address(void *ctx, const char *name); - -public: - MpvRenderer(const MpvObject *obj); - virtual ~MpvRenderer(); - - void render(); - -private: - const MpvObject *obj; - mpv_render_context *mpv_gl; -}; - - -class MpvObject : public QQuickFramebufferObject -{ - Q_OBJECT - - friend class MpvRenderer; - - Q_PROPERTY(bool enableAudio READ enableAudio WRITE setEnableAudio NOTIFY enableAudioChanged) - Q_PROPERTY(bool useHwdec READ useHwdec WRITE setUseHwdec NOTIFY useHwdecChanged) - - READONLY_PROP_BOOL("idle-active", idleActive) - WRITABLE_PROP_BOOL("mute", muted) - WRITABLE_PROP_BOOL("pause", paused) - READONLY_PROP_BOOL("paused-for-cache", pausedForCache) - READONLY_PROP_BOOL("seekable", seekable) - READONLY_PROP_INT("chapter", chapter) - READONLY_PROP_INT("chapter-list/count", chapterListCount) // OR "chapters" - READONLY_PROP_INT("decoder-frame-drop-count", decoderFrameDropCount) - READONLY_PROP_INT("dheight", dheight) - READONLY_PROP_INT("dwidth", dwidth) - READONLY_PROP_INT("estimated-frame-count", estimatedFrameCount) - READONLY_PROP_INT("estimated-frame-number", estimatedFrameNumber) - READONLY_PROP_INT("frame-drop-count", frameDropCount) - WRITABLE_PROP_INT("playlist-pos", playlistPos) - READONLY_PROP_INT("playlist/count", playlistCount) - WRITABLE_PROP_INT("vo-delayed-frame-count", voDelayedFrameCount) - WRITABLE_PROP_INT("volume", volume) - WRITABLE_PROP_INT("contrast", contrast) - WRITABLE_PROP_INT("brightness", brightness) - WRITABLE_PROP_INT("gamma", gamma) - WRITABLE_PROP_INT("saturation", saturation) - WRITABLE_PROP_INT("sub-margin-y", subMarginY) - READONLY_PROP_INT("vid", vid) - READONLY_PROP_INT("aid", aid) - READONLY_PROP_INT("sid", sid) - READONLY_PROP_INT("audio-params/channel-count", audioParamsChannelCount) - READONLY_PROP_INT("audio-params/samplerate", audioParamsSampleRate) - READONLY_PROP_INT("track-list/count", trackListCount) - READONLY_PROP_DOUBLE("audio-bitrate", audioBitrate) - READONLY_PROP_DOUBLE("avsync", avsync) - READONLY_PROP_DOUBLE("container-fps", containerFps) - READONLY_PROP_DOUBLE("demuxer-cache-duration", demuxerCacheDuration) - READONLY_PROP_DOUBLE("display-fps", displayFps) - READONLY_PROP_DOUBLE("estimated-display-fps", estimatedDisplayFps) - READONLY_PROP_DOUBLE("estimated-vf-fps", estimatedVfFps) - READONLY_PROP_DOUBLE("fps", fps) // Deprecated, use "container-fps" - WRITABLE_PROP_DOUBLE("speed", speed) - READONLY_PROP_DOUBLE("video-bitrate", videoBitrate) - READONLY_PROP_DOUBLE("video-params/aspect", videoParamsAspect) - READONLY_PROP_DOUBLE("video-out-params/aspect", videoOutParamsAspect) - WRITABLE_PROP_DOUBLE("window-scale", windowScale) - READONLY_PROP_DOUBLE("current-window-scale", currentWindowScale) - READONLY_PROP_STRING("audio-params/format", audioParamsFormat) - READONLY_PROP_STRING("audio-codec", audioCodec) - READONLY_PROP_STRING("audio-codec-name", audioCodecName) - READONLY_PROP_STRING("filename", filename) - READONLY_PROP_STRING("file-format", fileFormat) - READONLY_PROP_STRING("file-size", fileSize) - READONLY_PROP_STRING("audio-format", audioFormat) - WRITABLE_PROP_STRING("hwdec", hwdec) - READONLY_PROP_STRING("hwdec-current", hwdecCurrent) - READONLY_PROP_STRING("hwdec-interop", hwdecInterop) - WRITABLE_PROP_STRING("loop", loop) - READONLY_PROP_STRING("media-title", mediaTitle) - READONLY_PROP_STRING("path", path) - READONLY_PROP_STRING("video-codec", videoCodec) - READONLY_PROP_STRING("video-format", videoFormat) - READONLY_PROP_STRING("video-params/pixelformat", videoParamsPixelformat) - READONLY_PROP_STRING("video-out-params/pixelformat", videoOutParamsPixelformat) - READONLY_PROP_STRING("ytdl-format", ytdlFormat) - READONLY_PROP_MAP("demuxer-cache-state", demuxerCacheState) - - public: - Q_PROPERTY(bool isPlaying READ isPlaying NOTIFY isPlayingChanged) - Q_PROPERTY(double duration READ duration NOTIFY durationChanged) - Q_PROPERTY(double position READ position NOTIFY positionChanged) - -public: - MpvObject(QQuickItem *parent = nullptr); - virtual ~MpvObject(); - - virtual Renderer *createRenderer() const; - - Q_INVOKABLE void setProperty(const QString& name, const QVariant& value); - Q_INVOKABLE QVariant getProperty(const QString& name) const; - Q_INVOKABLE void setOption(const QString& name, const QVariant& value); - - Q_INVOKABLE QString getPlaylistFilename(int playlistIndex) const { return getProperty(QString("playlist/%1/filename").arg(playlistIndex)).toString(); } - Q_INVOKABLE QString getPlaylistTitle(int playlistIndex) const { return getProperty(QString("playlist/%1/title").arg(playlistIndex)).toString(); } - Q_INVOKABLE QString getChapterTitle(int chapterIndex) const { return getProperty(QString("chapter-list/%1/title").arg(chapterIndex)).toString(); } - Q_INVOKABLE double getChapterTime(int chapterIndex) const { return getProperty(QString("chapter-list/%1/time").arg(chapterIndex)).toDouble(); } - -public slots: - void command(const QVariant& params); - void commandAsync(const QVariant& params); - - void playPause(); - void play(); - void pause(); - void stop(); - void quit(); - void stepBackward(); - void stepForward(); - void seek(double pos); - void loadFile(QVariant urls); - void screenshotToFile(QString file); - void subAdd(QVariant urls); - void subRemove(); - - bool enableAudio() const { return m_enableAudio; } - void setEnableAudio(bool value) { - if (m_enableAudio != value) { - m_enableAudio = value; - Q_EMIT enableAudioChanged(value); - } - if (!m_enableAudio) { - mpv::qt::set_option_variant(mpv, "ao", "null"); - } - } - - bool useHwdec() const { return m_useHwdec; } - void setUseHwdec(bool value) { - if (m_useHwdec != value) { - m_useHwdec = value; - if (m_useHwdec) { - mpv::qt::set_option_variant(mpv, "hwdec", "auto-copy"); - } else { - mpv::qt::set_option_variant(mpv, "hwdec", "no"); - } - Q_EMIT useHwdecChanged(value); - } - } - - bool isPlaying() const { return m_isPlaying; } - void updateState(); - - double duration() const { return m_duration; } - double position() const { return m_position; } - -signals: - void enableAudioChanged(bool value); - void useHwdecChanged(bool value); - void isPlayingChanged(bool value); - - void durationChanged(double value); // Unit: seconds - void positionChanged(double value); // Unit: seconds - - void mpvUpdated(); - - void logMessage(QString prefix, QString level, QString text); - void fileStarted(); - void fileEnded(QString reason); - void fileLoaded(); - -private slots: - void onMpvEvents(); - void doUpdate(); - -protected: - mpv_handle *mpv; - -private: - void logPropChange(mpv_event_property *prop); - void handle_mpv_event(mpv_event *event); - static void on_update(void *ctx); - - bool m_enableAudio; - bool m_useHwdec; - double m_duration; - double m_position; - bool m_isPlaying; -}; diff --git a/src/cpp/mpv/qthelper.hpp b/src/cpp/mpv/qthelper.hpp deleted file mode 100644 index 27d2827..0000000 --- a/src/cpp/mpv/qthelper.hpp +++ /dev/null @@ -1,370 +0,0 @@ -#pragma once - -// libmpv -#include - -// std -#include - -// Qt -#include -#include -#include -#include -#include -#include - -namespace mpv { - namespace qt { - - // Wrapper around mpv_handle. Does refcounting under the hood. - class Handle - { - struct container { - container(mpv_handle *h) : mpv(h) {} - ~container() { mpv_terminate_destroy(mpv); } - mpv_handle *mpv; - }; - QSharedPointer sptr; - public: - // Construct a new Handle from a raw mpv_handle with refcount 1. If the - // last Handle goes out of scope, the mpv_handle will be destroyed with - // mpv_terminate_destroy(). - // Never destroy the mpv_handle manually when using this wrapper. You - // will create dangling pointers. Just let the wrapper take care of - // destroying the mpv_handle. - // Never create multiple wrappers from the same raw mpv_handle; copy the - // wrapper instead (that's what it's for). - static Handle FromRawHandle(mpv_handle *handle) { - Handle h; - h.sptr = QSharedPointer(new container(handle)); - return h; - } - - // Return the raw handle; for use with the libmpv C API. - operator mpv_handle*() const { return sptr ? (*sptr).mpv : 0; } - }; - - static inline QVariant node_to_variant(const mpv_node *node) - { - switch (node->format) { - case MPV_FORMAT_STRING: - return QVariant(QString::fromUtf8(node->u.string)); - case MPV_FORMAT_FLAG: - return QVariant(static_cast(node->u.flag)); - case MPV_FORMAT_INT64: - return QVariant(static_cast(node->u.int64)); - case MPV_FORMAT_DOUBLE: - return QVariant(node->u.double_); - case MPV_FORMAT_NODE_ARRAY: { - mpv_node_list *list = node->u.list; - QVariantList qlist; - for (int n = 0; n < list->num; n++) - qlist.append(node_to_variant(&list->values[n])); - return QVariant(qlist); - } - case MPV_FORMAT_NODE_MAP: { - mpv_node_list *list = node->u.list; - QVariantMap qmap; - for (int n = 0; n < list->num; n++) { - qmap.insert(QString::fromUtf8(list->keys[n]), - node_to_variant(&list->values[n])); - } - return QVariant(qmap); - } - default: // MPV_FORMAT_NONE, unknown values (e.g. future extensions) - return QVariant(); - } - } - - struct node_builder { - node_builder(const QVariant& v) { - set(&node_, v); - } - ~node_builder() { - free_node(&node_); - } - mpv_node *node() { return &node_; } - private: - Q_DISABLE_COPY(node_builder) - mpv_node node_; - mpv_node_list *create_list(mpv_node *dst, bool is_map, int num) { - dst->format = is_map ? MPV_FORMAT_NODE_MAP : MPV_FORMAT_NODE_ARRAY; - mpv_node_list *list = new mpv_node_list(); - dst->u.list = list; - if (!list) - goto err; - list->values = new mpv_node[num](); - if (!list->values) - goto err; - if (is_map) { - list->keys = new char*[num](); - if (!list->keys) - goto err; - } - return list; - err: - free_node(dst); - return NULL; - } - char *dup_qstring(const QString &s) { - QByteArray b = s.toUtf8(); - char *r = new char[b.size() + 1]; - if (r) - std::memcpy(r, b.data(), b.size() + 1); - return r; - } - bool test_type(const QVariant &v, QMetaType::Type t) { - // The Qt docs say: "Although this function is declared as returning - // "QVariant::Type(obsolete), the return value should be interpreted - // as QMetaType::Type." - // So a cast really seems to be needed to avoid warnings (urgh). - return static_cast(v.type()) == static_cast(t); - } - void set(mpv_node *dst, const QVariant &src) { - if (test_type(src, QMetaType::QString)) { - dst->format = MPV_FORMAT_STRING; - dst->u.string = dup_qstring(src.toString()); - if (!dst->u.string) - goto fail; - } else if (test_type(src, QMetaType::Bool)) { - dst->format = MPV_FORMAT_FLAG; - dst->u.flag = src.toBool() ? 1 : 0; - } else if (test_type(src, QMetaType::Int) || - test_type(src, QMetaType::LongLong) || - test_type(src, QMetaType::UInt) || - test_type(src, QMetaType::ULongLong)) - { - dst->format = MPV_FORMAT_INT64; - dst->u.int64 = src.toLongLong(); - } else if (test_type(src, QMetaType::Double)) { - dst->format = MPV_FORMAT_DOUBLE; - dst->u.double_ = src.toDouble(); - } else if (src.canConvert()) { - QVariantList qlist = src.toList(); - mpv_node_list *list = create_list(dst, false, qlist.size()); - if (!list) - goto fail; - list->num = qlist.size(); - for (int n = 0; n < qlist.size(); n++) - set(&list->values[n], qlist[n]); - } else if (src.canConvert()) { - QVariantMap qmap = src.toMap(); - mpv_node_list *list = create_list(dst, true, qmap.size()); - if (!list) - goto fail; - list->num = qmap.size(); - for (int n = 0; n < qmap.size(); n++) { - list->keys[n] = dup_qstring(qmap.keys()[n]); - if (!list->keys[n]) { - free_node(dst); - goto fail; - } - set(&list->values[n], qmap.values()[n]); - } - } else { - goto fail; - } - return; - fail: - dst->format = MPV_FORMAT_NONE; - } - void free_node(mpv_node *dst) { - switch (dst->format) { - case MPV_FORMAT_STRING: - delete[] dst->u.string; - break; - case MPV_FORMAT_NODE_ARRAY: - case MPV_FORMAT_NODE_MAP: { - mpv_node_list *list = dst->u.list; - if (list) { - for (int n = 0; n < list->num; n++) { - if (list->keys) - delete[] list->keys[n]; - if (list->values) - free_node(&list->values[n]); - } - delete[] list->keys; - delete[] list->values; - } - delete list; - break; - } - default: ; - } - dst->format = MPV_FORMAT_NONE; - } - }; - - /** - * RAII wrapper that calls mpv_free_node_contents() on the pointer. - */ - struct node_autofree { - mpv_node *ptr; - node_autofree(mpv_node *a_ptr) : ptr(a_ptr) {} - ~node_autofree() { mpv_free_node_contents(ptr); } - }; - - /** - * Return the given property as mpv_node converted to QVariant, or QVariant() - * on error. - * - * @deprecated use get_property() instead - * - * @param name the property name - */ - static inline QVariant get_property_variant(mpv_handle *ctx, const QString &name) - { - mpv_node node; - if (mpv_get_property(ctx, name.toUtf8().data(), MPV_FORMAT_NODE, &node) < 0) - return QVariant(); - node_autofree f(&node); - return node_to_variant(&node); - } - - /** - * Set the given property as mpv_node converted from the QVariant argument. - * @deprecated use set_property() instead - */ - static inline int set_property_variant(mpv_handle *ctx, const QString &name, - const QVariant &v) - { - node_builder node(v); - return mpv_set_property(ctx, name.toUtf8().data(), MPV_FORMAT_NODE, node.node()); - } - - /** - * Set the given option as mpv_node converted from the QVariant argument. - * - * @deprecated use set_property() instead - */ - static inline int set_option_variant(mpv_handle *ctx, const QString &name, - const QVariant &v) - { - node_builder node(v); - return mpv_set_option(ctx, name.toUtf8().data(), MPV_FORMAT_NODE, node.node()); - } - - /** - * mpv_command_node() equivalent. Returns QVariant() on error (and - * unfortunately, the same on success). - * - * @deprecated use command() instead - */ - static inline QVariant command_variant(mpv_handle *ctx, const QVariant &args) - { - node_builder node(args); - mpv_node res; - if (mpv_command_node(ctx, node.node(), &res) < 0) - return QVariant(); - node_autofree f(&res); - return node_to_variant(&res); - } - - /** - * This is used to return error codes wrapped in QVariant for functions which - * return QVariant. - * - * You can use get_error() or is_error() to extract the error status from a - * QVariant value. - */ - struct ErrorReturn - { - /** - * enum mpv_error value (or a value outside of it if ABI was extended) - */ - int error; - - ErrorReturn() : error(0) {} - explicit ErrorReturn(int err) : error(err) {} - }; - - /** - * Return the mpv error code packed into a QVariant, or 0 (success) if it's not - * an error value. - * - * @return error code (<0) or success (>=0) - */ - static inline int get_error(const QVariant &v) - { - if (!v.canConvert()) - return 0; - return v.value().error; - } - - /** - * Return whether the QVariant carries a mpv error code. - */ - static inline bool is_error(const QVariant &v) - { - return get_error(v) < 0; - } - - /** - * Return the given property as mpv_node converted to QVariant, or QVariant() - * on error. - * - * @param name the property name - * @return the property value, or an ErrorReturn with the error code - */ - static inline QVariant get_property(mpv_handle *ctx, const QString &name) - { - mpv_node node; - int err = mpv_get_property(ctx, name.toUtf8().data(), MPV_FORMAT_NODE, &node); - if (err < 0) - return QVariant::fromValue(ErrorReturn(err)); - node_autofree f(&node); - return node_to_variant(&node); - } - - /** - * Set the given property as mpv_node converted from the QVariant argument. - * - * @return mpv error code (<0 on error, >= 0 on success) - */ - static inline int set_property(mpv_handle *ctx, const QString &name, - const QVariant &v) - { - node_builder node(v); - return mpv_set_property(ctx, name.toUtf8().data(), MPV_FORMAT_NODE, node.node()); - } - - /** - * mpv_command_node() equivalent. - * - * @param args command arguments, with args[0] being the command name as string - * @return the property value, or an ErrorReturn with the error code - */ - static inline QVariant command(mpv_handle *ctx, const QVariant &args) -{ - node_builder node(args); - mpv_node res; - int err = mpv_command_node(ctx, node.node(), &res); - if (err < 0) - return QVariant::fromValue(ErrorReturn(err)); - node_autofree f(&res); - return node_to_variant(&res); -} - -/** - * mpv_command_node_async() equivalent. - * - * @param args command arguments, with args[0] being the command name as string - * @return empty QVariant, or an ErrorReturn with the error code - */ -static inline QVariant command_async(mpv_handle *ctx, const QVariant &args) -{ - node_builder node(args); - quint64 replyUserdata = 0; // TODO: Bomi casted args[0] to int. Bomi's args was a QByteArray however. - int err = mpv_command_node_async(ctx, replyUserdata, node.node()); - if (err < 0) - return QVariant::fromValue(ErrorReturn(err)); - // TODO: Return unique replyUserdata so the app can wait for - // the result in an MPV_EVENT_COMMAND_REPLY event. - return QVariant(); -} - -} -} - -Q_DECLARE_METATYPE(mpv::qt::ErrorReturn) diff --git a/src/cpp/serviceitemmodel.cpp b/src/cpp/serviceitemmodel.cpp index 0ebc600..0611127 100644 --- a/src/cpp/serviceitemmodel.cpp +++ b/src/cpp/serviceitemmodel.cpp @@ -6,11 +6,11 @@ #include #include #include -#include -#include -#include -#include -#include +// #include +// #include +// #include +// #include +// #include #include #include #include @@ -544,241 +544,241 @@ bool ServiceItemModelCpp::deactivate(int id) { return true; } -bool ServiceItemModelCpp::save(QUrl file) { - qDebug() << "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"; - qDebug() << "Saving..."; - qDebug() << "File path is: " << file.toString(); - qDebug() << "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"; +// bool ServiceItemModelCpp::save(QUrl file) { +// qDebug() << "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"; +// qDebug() << "Saving..."; +// qDebug() << "File path is: " << file.toString(); +// qDebug() << "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"; - //first we'll get a json representation of our serviceList - //save that to a temp file in case we need it but also convert - //it to a byte array just before putting it into the archive +// //first we'll get a json representation of our serviceList +// //save that to a temp file in case we need it but also convert +// //it to a byte array just before putting it into the archive - QJsonArray jsonData; +// QJsonArray jsonData; - // save all the data and files in jsonData as just the base name - // so that they are properly mapped in the resulting archive - for (int i = 0; i < m_items.length(); i++) { - // qDebug() << serviceList[i]; - QMap item; - qDebug() << m_items[i]->name(); +// // save all the data and files in jsonData as just the base name +// // so that they are properly mapped in the resulting archive +// for (int i = 0; i < m_items.length(); i++) { +// // qDebug() << serviceList[i]; +// QMap item; +// qDebug() << m_items[i]->name(); - item.insert("name", m_items[i]->name()); - item.insert("background", m_items[i]->background()); - item.insert("backgroundType", m_items[i]->backgroundType()); - item.insert("audio", m_items[i]->audio()); - item.insert("font", m_items[i]->font()); - item.insert("fontSize", m_items[i]->fontSize()); - item.insert("slideNumber", m_items[i]->slideNumber()); - item.insert("text", m_items[i]->text()); - item.insert("type", m_items[i]->type()); - item.insert("loop", m_items[i]->loop()); +// item.insert("name", m_items[i]->name()); +// item.insert("background", m_items[i]->background()); +// item.insert("backgroundType", m_items[i]->backgroundType()); +// item.insert("audio", m_items[i]->audio()); +// item.insert("font", m_items[i]->font()); +// item.insert("fontSize", m_items[i]->fontSize()); +// item.insert("slideNumber", m_items[i]->slideNumber()); +// item.insert("text", m_items[i]->text()); +// item.insert("type", m_items[i]->type()); +// item.insert("loop", m_items[i]->loop()); - qDebug() << "AUDIO IS: " << item.value("audio").toString(); - QFileInfo audioFile = item.value("audio").toString(); - qDebug() << audioFile.fileName(); - item["flatAudio"] = audioFile.fileName(); - qDebug() << "AUDIO IS NOW: " << item.value("audio").toString(); +// qDebug() << "AUDIO IS: " << item.value("audio").toString(); +// QFileInfo audioFile = item.value("audio").toString(); +// qDebug() << audioFile.fileName(); +// item["flatAudio"] = audioFile.fileName(); +// qDebug() << "AUDIO IS NOW: " << item.value("audio").toString(); - QFileInfo backgroundFile = item.value("background").toString(); - item["flatBackground"] = backgroundFile.fileName(); - qDebug() << "BACKGRUOND IS: " << item.value("background").toString(); - // qDebug() << serviceList[i].value(); - QJsonObject obj = QJsonObject::fromVariantMap(item); - qDebug() << obj; - jsonData.insert(i, obj); - } +// QFileInfo backgroundFile = item.value("background").toString(); +// item["flatBackground"] = backgroundFile.fileName(); +// qDebug() << "BACKGRUOND IS: " << item.value("background").toString(); +// // qDebug() << serviceList[i].value(); +// QJsonObject obj = QJsonObject::fromVariantMap(item); +// qDebug() << obj; +// jsonData.insert(i, obj); +// } - qDebug() << jsonData; - QJsonDocument jsonText(jsonData); - QTemporaryFile jsonFile; +// qDebug() << jsonData; +// QJsonDocument jsonText(jsonData); +// QTemporaryFile jsonFile; - if (!jsonFile.exists()) - qDebug() << "NOT EXISTS!"; +// if (!jsonFile.exists()) +// qDebug() << "NOT EXISTS!"; - if (!jsonFile.open()) - return false; +// if (!jsonFile.open()) +// return false; - //finalize the temp json file, in case something goes wrong in the - //archive, we'll have this to jump back to - jsonFile.write(jsonText.toJson()); - qDebug() << jsonFile.fileName(); - jsonFile.close(); +// //finalize the temp json file, in case something goes wrong in the +// //archive, we'll have this to jump back to +// jsonFile.write(jsonText.toJson()); +// qDebug() << jsonFile.fileName(); +// jsonFile.close(); - //now we create our archive file and set it's parameters - QString filename = file.toString().right(file.toString().size() - 7); - qDebug() << filename; +// //now we create our archive file and set it's parameters +// QString filename = file.toString().right(file.toString().size() - 7); +// qDebug() << filename; - QString tarname; - if (filename.endsWith(".pres")) { - qDebug() << "Perfect just go with it!"; - tarname = filename; - } else - tarname = filename + ".pres"; +// QString tarname; +// if (filename.endsWith(".pres")) { +// qDebug() << "Perfect just go with it!"; +// tarname = filename; +// } else +// tarname = filename + ".pres"; - KTar tar(tarname, "application/zstd"); +// KTar tar(tarname, "application/zstd"); - if (tar.open(QIODevice::WriteOnly)) { - qDebug() << tar.isOpen(); +// if (tar.open(QIODevice::WriteOnly)) { +// qDebug() << tar.isOpen(); - //write our json data to the archive - tar.writeFile("servicelist.json", - jsonText.toJson()); +// //write our json data to the archive +// tar.writeFile("servicelist.json", +// jsonText.toJson()); - //let's add the backgrounds and audios to the archive - for (int i = 0; i < m_items.size(); i++) { - qDebug() << m_items[i]->name(); - QString background = m_items[i]->background(); - QString backgroundFile = background.right(background.size() - 5); - qDebug() << backgroundFile; - QString audio = m_items[i]->audio(); - QString audioFile = audio.right(audio.size() - 5); - qDebug() << audioFile; +// //let's add the backgrounds and audios to the archive +// for (int i = 0; i < m_items.size(); i++) { +// qDebug() << m_items[i]->name(); +// QString background = m_items[i]->background(); +// QString backgroundFile = background.right(background.size() - 5); +// qDebug() << backgroundFile; +// QString audio = m_items[i]->audio(); +// QString audioFile = audio.right(audio.size() - 5); +// qDebug() << audioFile; - //here we need to cut off all the directories before - //adding into the archive - tar.addLocalFile(backgroundFile, - backgroundFile.right(backgroundFile.size() - - backgroundFile.lastIndexOf("/") - 1)); - tar.addLocalFile(audioFile, - audioFile.right(audioFile.size() - - audioFile.lastIndexOf("/") - 1)); - } +// //here we need to cut off all the directories before +// //adding into the archive +// tar.addLocalFile(backgroundFile, +// backgroundFile.right(backgroundFile.size() - +// backgroundFile.lastIndexOf("/") - 1)); +// tar.addLocalFile(audioFile, +// audioFile.right(audioFile.size() - +// audioFile.lastIndexOf("/") - 1)); +// } - //close the archive so that everything is done - tar.close(); +// //close the archive so that everything is done +// tar.close(); - QSettings settings; - settings.setValue("lastSaveFile", file); +// QSettings settings; +// settings.setValue("lastSaveFile", file); - settings.sync(); +// settings.sync(); - qDebug() << settings.value("lastSaveFile"); - return true; - } +// qDebug() << settings.value("lastSaveFile"); +// return true; +// } - return false; -} +// return false; +// } -bool ServiceItemModelCpp::load(QUrl file) { - qDebug() << "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"; - qDebug() << "Loading..."; - qDebug() << "File path is: " << file.toString(); - qDebug() << "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"; +// bool ServiceItemModelCpp::load(QUrl file) { +// qDebug() << "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"; +// qDebug() << "Loading..."; +// qDebug() << "File path is: " << file.toString(); +// qDebug() << "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"; - QFileInfo loadInfo = QFileInfo(file.toLocalFile()); - if (!loadInfo.exists()) - return false; +// QFileInfo loadInfo = QFileInfo(file.toLocalFile()); +// if (!loadInfo.exists()) +// return false; - QString fileUrl = file.toString().right(file.toString().size() - 7); - KTar tar(fileUrl); +// QString fileUrl = file.toString().right(file.toString().size() - 7); +// KTar tar(fileUrl); - if (tar.open(QIODevice::ReadOnly)){ - qDebug() << tar.isOpen(); - const KArchiveDirectory *dir = tar.directory(); +// if (tar.open(QIODevice::ReadOnly)){ +// qDebug() << tar.isOpen(); +// const KArchiveDirectory *dir = tar.directory(); - const KArchiveEntry *e = dir->entry("servicelist.json"); - if (!e) { - qDebug() << "File not found!"; - } - const KArchiveFile *f = static_cast(e); - QByteArray arr(f->data()); - QJsonDocument jsonText = QJsonDocument::fromJson(arr); - qDebug() << jsonText; // the file contents +// const KArchiveEntry *e = dir->entry("servicelist.json"); +// if (!e) { +// qDebug() << "File not found!"; +// } +// const KArchiveFile *f = static_cast(e); +// QByteArray arr(f->data()); +// QJsonDocument jsonText = QJsonDocument::fromJson(arr); +// qDebug() << jsonText; // the file contents - QJsonArray array = jsonText.array(); +// QJsonArray array = jsonText.array(); - QVariantList serviceList = array.toVariantList(); - qDebug() << serviceList; +// QVariantList serviceList = array.toVariantList(); +// qDebug() << serviceList; - // now lets remove all items from current list and add loaded ones - clearAll(); +// // now lets remove all items from current list and add loaded ones +// clearAll(); - for (int i = 0; i < serviceList.length(); i++) { - // int id = serviceList - qDebug() << "*********************************"; - qDebug() << serviceList[i].toMap(); - qDebug() << "*********************************"; +// for (int i = 0; i < serviceList.length(); i++) { +// // int id = serviceList +// qDebug() << "*********************************"; +// qDebug() << serviceList[i].toMap(); +// qDebug() << "*********************************"; - QMap item = serviceList[i].toMap(); +// QMap item = serviceList[i].toMap(); - QString backgroundString = item.value("background").toString(); - QFileInfo backgroundFile = backgroundString.right(backgroundString.size() - 7); +// QString backgroundString = item.value("background").toString(); +// QFileInfo backgroundFile = backgroundString.right(backgroundString.size() - 7); - QString audioString = item.value("audio").toString(); - QFileInfo audioFile = audioString.right(audioString.size() - 7); +// QString audioString = item.value("audio").toString(); +// QFileInfo audioFile = audioString.right(audioString.size() - 7); - qDebug() << "POOPPOPOPOPOPOPOPOPOPOPOPOPO"; - qDebug() << backgroundFile; - qDebug() << backgroundFile.exists(); - qDebug() << audioFile; - qDebug() << audioFile.exists(); - qDebug() << "POOPPOPOPOPOPOPOPOPOPOPOPOPO"; +// qDebug() << "POOPPOPOPOPOPOPOPOPOPOPOPOPO"; +// qDebug() << backgroundFile; +// qDebug() << backgroundFile.exists(); +// qDebug() << audioFile; +// qDebug() << audioFile.exists(); +// qDebug() << "POOPPOPOPOPOPOPOPOPOPOPOPOPO"; - QString realBackground; - QString realAudio; +// QString realBackground; +// QString realAudio; - QFileInfo serviceFile = file.toString().right(file.toString().size() - 7); - QString serviceName = serviceFile.baseName(); - QDir localDir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); - localDir.mkdir(serviceName); - QDir serviceDir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) - + "/" + serviceName; - qDebug() << serviceDir.path(); +// QFileInfo serviceFile = file.toString().right(file.toString().size() - 7); +// QString serviceName = serviceFile.baseName(); +// QDir localDir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); +// localDir.mkdir(serviceName); +// QDir serviceDir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) +// + "/" + serviceName; +// qDebug() << serviceDir.path(); - realBackground = backgroundString; - realAudio = audioString; - // If the background file is on disk use that, else use the one in archive - if (!backgroundFile.exists() && backgroundString.length() > 0) { - const KArchiveEntry *e = dir->entry(backgroundFile.fileName()); - if (!e) { - qDebug() << "Background File not found!"; - continue; - } - const KArchiveFile *f = static_cast(e); - if (!f->copyTo(serviceDir.path())) - qDebug() << "FILE COULDN'T BE CREATED!"; +// realBackground = backgroundString; +// realAudio = audioString; +// // If the background file is on disk use that, else use the one in archive +// if (!backgroundFile.exists() && backgroundString.length() > 0) { +// const KArchiveEntry *e = dir->entry(backgroundFile.fileName()); +// if (!e) { +// qDebug() << "Background File not found!"; +// continue; +// } +// const KArchiveFile *f = static_cast(e); +// if (!f->copyTo(serviceDir.path())) +// qDebug() << "FILE COULDN'T BE CREATED!"; - QFileInfo bgFile = serviceDir.path() + "/" + backgroundFile.fileName(); +// QFileInfo bgFile = serviceDir.path() + "/" + backgroundFile.fileName(); - qDebug() << bgFile.filePath(); +// qDebug() << bgFile.filePath(); - realBackground = bgFile.filePath(); - } +// realBackground = bgFile.filePath(); +// } - // If the audio file is on disk use that, else use the one in archive - if (!audioFile.exists() && audioString.length() > 0) { - const KArchiveEntry *e = dir->entry(audioFile.fileName()); - if (!e) { - qDebug() << "Audio File not found!"; - continue; - } - const KArchiveFile *f = static_cast(e); - if (!f->copyTo(serviceDir.path())) - qDebug() << "FILE COULDN'T BE CREATED!"; +// // If the audio file is on disk use that, else use the one in archive +// if (!audioFile.exists() && audioString.length() > 0) { +// const KArchiveEntry *e = dir->entry(audioFile.fileName()); +// if (!e) { +// qDebug() << "Audio File not found!"; +// continue; +// } +// const KArchiveFile *f = static_cast(e); +// if (!f->copyTo(serviceDir.path())) +// qDebug() << "FILE COULDN'T BE CREATED!"; - QFileInfo audFile = serviceDir.path() + "/" + audioFile.fileName(); +// QFileInfo audFile = serviceDir.path() + "/" + audioFile.fileName(); - qDebug() << audFile.filePath(); +// qDebug() << audFile.filePath(); - realAudio = audFile.filePath(); - } +// realAudio = audFile.filePath(); +// } - addItem(item.value("name").toString(), item.value("type").toString(), - realBackground, - item.value("backgroundType").toString(), - item.value("text").toStringList(), realAudio, - item.value("font").toString(), item.value("fontSize").toInt(), - item.value("slideNumber").toInt(), item.value("loop").toBool()); - } +// addItem(item.value("name").toString(), item.value("type").toString(), +// realBackground, +// item.value("backgroundType").toString(), +// item.value("text").toStringList(), realAudio, +// item.value("font").toString(), item.value("fontSize").toInt(), +// item.value("slideNumber").toInt(), item.value("loop").toBool()); +// } - return true; +// return true; - } +// } - return false; -} +// return false; +// } void ServiceItemModelCpp::clearAll() { for (int i = m_items.size(); i >= 0; i--) { diff --git a/src/cpp/serviceitemmodel.h b/src/cpp/serviceitemmodel.h index 0318018..e552264 100644 --- a/src/cpp/serviceitemmodel.h +++ b/src/cpp/serviceitemmodel.h @@ -78,8 +78,8 @@ public: Q_INVOKABLE QVariantList getItems(); Q_INVOKABLE void clearAll(); - Q_INVOKABLE bool save(QUrl file); - Q_INVOKABLE bool load(QUrl file); + // Q_INVOKABLE bool save(QUrl file); + // Q_INVOKABLE bool load(QUrl file); Q_INVOKABLE bool loadLastSaved(); signals: diff --git a/src/main.cpp b/src/main.cpp index c8465a6..fe3af43 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,5 +1,6 @@ #include #include +#include #include #include #include @@ -10,10 +11,10 @@ // #include #include #include -#include -#include -#include -#include +// #include +// #include +// #include +#include #include #include @@ -37,15 +38,16 @@ #include #include -#include "cpp/mpv/mpvobject.h" -#include "cpp/serviceitemmodel.h" -#include "cpp/slidemodel.h" -#include "cpp/songsqlmodel.h" -#include "cpp/videosqlmodel.h" -#include "cpp/imagesqlmodel.h" -#include "cpp/presentationsqlmodel.h" -#include "cpp/filemanager.h" -#include "cpp/slidehelper.h" +#include "cpp/mpv/mpvitem.h" +#include "cpp/mpv/mpvproperties.h" +// #include "cpp/serviceitemmodel.h" +// #include "cpp/slidemodel.h" +// #include "cpp/songsqlmodel.h" +// #include "cpp/videosqlmodel.h" +// #include "cpp/imagesqlmodel.h" +// #include "cpp/presentationsqlmodel.h" +// #include "cpp/filemanager.h" +// #include "cpp/slidehelper.h" // RUST // #include "cxx-qt-gen/service_thing.cxxqt.h" @@ -71,83 +73,87 @@ static QWindow *windowFromEngine(QQmlApplicationEngine *engine) return window; } -static void connectToDatabase() { - // let's setup our sql database - QSqlDatabase db = QSqlDatabase::database(); - if (!db.isValid()){ - db = QSqlDatabase::addDatabase("QSQLITE"); - if (!db.isValid()) - qFatal("Cannot add database: %s", qPrintable(db.lastError().text())); - } +// static void connectToDatabase() { +// // let's setup our sql database +// QSqlDatabase db = QSqlDatabase::database(); +// if (!db.isValid()){ +// db = QSqlDatabase::addDatabase("QSQLITE"); +// if (!db.isValid()) +// qFatal("Cannot add database: %s", qPrintable(db.lastError().text())); +// } - const QDir writeDir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); - qDebug() << "dir location " << writeDir.absolutePath(); +// const QDir writeDir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); +// qDebug() << "dir location " << writeDir.absolutePath(); - if (!writeDir.mkpath(".")) { - qFatal("Failed to create writable location at %s", qPrintable(writeDir.absolutePath())); - } +// if (!writeDir.mkpath(".")) { +// qFatal("Failed to create writable location at %s", qPrintable(writeDir.absolutePath())); +// } - const QString dbName = writeDir.absolutePath() + "/library-db.sqlite3"; +// const QString dbName = writeDir.absolutePath() + "/library-db.sqlite3"; - db.setHostName("localhost"); - db.setDatabaseName(dbName); - db.setUserName("presenter"); - // TODO change password system before launch - db.setPassword("i393jkf782djyr98302j"); - if (!db.open()) { - qFatal("Cannot open database: %s", qPrintable(db.lastError().text())); - QFile::remove(dbName); - } - qDebug() << "Finished connecting to db"; +// db.setHostName("localhost"); +// db.setDatabaseName(dbName); +// db.setUserName("presenter"); +// // TODO change password system before launch +// db.setPassword("i393jkf782djyr98302j"); +// if (!db.open()) { +// qFatal("Cannot open database: %s", qPrintable(db.lastError().text())); +// QFile::remove(dbName); +// } +// qDebug() << "Finished connecting to db"; -} +// } int main(int argc, char *argv[]) { // qDebug() << QSurfaceFormat::defaultFormat(); QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QGuiApplication::setWindowIcon(QIcon::fromTheme(QStringLiteral("video-display"))); - QtWebEngine::initialize(); + QtWebEngineQuick::initialize(); QGuiApplication app(argc, argv); KLocalizedString::setApplicationDomain("lumina"); - KAboutData aboutData("lumina", i18n("lumina"), "0.1", - i18n("A church presentation app built with KDE tech."), - KAboutLicense::GPL_V3, - i18n("Copyright 2017 Bar Foundation"), QString(), - "https://www.foo-the-app.net"); + KAboutData about; + about.setComponentName(QStringLiteral("lumina")); + about.setDisplayName(i18n("lumina")); + about.setVersion(QByteArray("0.1")); + about.setShortDescription(i18n("A churchpresentation app build with KDE tech.")); + about.setLicense(KAboutLicense::GPL_V3); + // overwrite default-generated values of organizationDomain & desktopFileName - aboutData.setOrganizationDomain("tfcconnection.org"); - aboutData.setDesktopFileName("org.tfcconnection.lumina"); - + about.setOrganizationDomain("tfcconnection.org"); + about.setDesktopFileName(QStringLiteral("org.tfcconneciton.lumina")); + + QQuickWindow::setGraphicsApi(QSGRendererInterface::OpenGL); + // set the application metadata - KAboutData::setApplicationData(aboutData); + KAboutData::setApplicationData(about); QCoreApplication::setOrganizationName(QStringLiteral("lumina")); QCoreApplication::setOrganizationDomain(QStringLiteral("tfcconnection.org")); QCoreApplication::setApplicationName(QStringLiteral("lumina")); - qSetMessagePattern("%{category}: %{time h:m:s ap} %{type} %{function}: %{message}\n %{file}"); + qSetMessagePattern(QString::fromUtf8("%{category}: %{time h:m:s ap} %{type} %{function}: %{message}\n %{file}")); #ifdef Q_OS_WINDOWS - QIcon::setFallbackThemeName("breeze"); + QIcon::setFallbackThemeName(QStringLiteral("breeze")); QQuickStyle::setStyle(QStringLiteral("org.kde.breeze")); // QApplication::setStyle(QStringLiteral("breeze")); #else - QIcon::setFallbackThemeName("breeze"); + QIcon::setFallbackThemeName(QStringLiteral("breeze")); QQuickStyle::setStyle(QStringLiteral("org.kde.desktop")); QQuickStyle::setFallbackStyle(QStringLiteral("Default")); #endif - qDebug() << QQuickStyle::availableStyles(); + // qDebug() << QQuickStyle::availableStyles(); qDebug() << QIcon::themeName(); qDebug() << QApplication::platformName(); //Need to instantiate our slide // QScopedPointer utils(new Utils); QScopedPointer slideModel(new SlideModel); - QScopedPointer slideMod(new SlideModelCpp); - QScopedPointer filemanager(new File); + // QScopedPointer slideMod(new SlideModelCpp); + // QScopedPointer filemanager(new File); // QScopedPointer preswin(new QQuickView); QScopedPointer serviceItemModel(new ServiceItemModel); - QScopedPointer serviceItemC(new ServiceItemModelCpp); + // QScopedPointer serviceItemC(new ServiceItemModelCpp); QScopedPointer slideobject(new SlideObject); QScopedPointer obsModel(new ObsModel); obsModel.get()->getObs(); @@ -162,14 +168,14 @@ int main(int argc, char *argv[]) // PresWindow->setSource(QUrl(QStringLiteral("qrc://qml/presenter/PresentationWindow.qml"))); qDebug() << PresWindow->isVisible(); - QObject::connect(serviceItemC.get(), - SIGNAL(itemInserted(const int&, const ServiceItem&)), - slideMod.get(), - SLOT(insertItemFromService(const int&, const ServiceItem&))); - QObject::connect(serviceItemC.get(), - SIGNAL(itemAdded(const int&, const ServiceItem&)), - slideMod.get(), - SLOT(addItemFromService(const int&, const ServiceItem&))); + // QObject::connect(serviceItemC.get(), + // SIGNAL(itemInserted(const int&, const ServiceItem&)), + // slideMod.get(), + // SLOT(insertItemFromService(const int&, const ServiceItem&))); + // QObject::connect(serviceItemC.get(), + // SIGNAL(itemAdded(const int&, const ServiceItem&)), + // slideMod.get(), + // SLOT(addItemFromService(const int&, const ServiceItem&))); QObject::connect(serviceItemModel.get(), &ServiceItemModel::itemAdded, @@ -206,22 +212,23 @@ int main(int argc, char *argv[]) if (!serviceItemModel.get()->load(settings->getLastSaveFile())) { qDebug() << "Last saved file is missing or there isn't a last saved file."; - serviceItemModel.get()->addItem("Black", "image", - "qrc:/assets/black.jpg", - "image", QStringList(""), - "", "", 0, 1, false, 0, 0, 0); + serviceItemModel.get()->addItem(QString::fromUtf8("Black"), QString::fromUtf8("image"), + QString::fromUtf8("qrc:/assets/black.jpg"), + QString::fromUtf8("image"), QStringList() << QStringLiteral(""), + QString::fromUtf8(""), QString::fromUtf8(""), 0, 1, false, 0, 0, 0); } // apparently mpv needs this class set // let's register mpv as well std::setlocale(LC_NUMERIC, "C"); - qmlRegisterType("mpv", 1, 0, "MpvObject"); + qmlRegisterType("mpv", 1, 0, "MpvItem"); + qmlRegisterSingletonInstance("org.presenter", 1, 0, "MpvProperties", MpvProperties::self()); //register our models - qmlRegisterType("org.presenter", 1, 0, "SongProxyModel"); - qmlRegisterType("org.presenter", 1, 0, "VideoProxyModel"); - qmlRegisterType("org.presenter", 1, 0, "ImageProxyModel"); - qmlRegisterType("org.presenter", 1, 0, "PresentationProxyModel"); + // qmlRegisterType("org.presenter", 1, 0, "SongProxyModel"); + // qmlRegisterType("org.presenter", 1, 0, "VideoProxyModel"); + // qmlRegisterType("org.presenter", 1, 0, "ImageProxyModel"); + // qmlRegisterType("org.presenter", 1, 0, "PresentationProxyModel"); qmlRegisterType("org.presenter", 1, 0, "SongModel"); qmlRegisterType("org.presenter", 1, 0, "SongEditor"); qmlRegisterType("org.presenter", 1, 0, "VideoModel"); @@ -237,13 +244,13 @@ int main(int argc, char *argv[]) qmlRegisterType("org.presenter", 1, 0, "SlideHelper"); qmlRegisterSingletonInstance("org.presenter", 1, 0, "ServiceItemModel", serviceItemModel.get()); - qmlRegisterSingletonInstance("org.presenter", 1, 0, - "ServiceItemC", serviceItemC.get()); + // qmlRegisterSingletonInstance("org.presenter", 1, 0, + // "ServiceItemC", serviceItemC.get()); qmlRegisterSingletonInstance("org.presenter", 1, 0, "SlideModel", slideModel.get()); - qmlRegisterSingletonInstance("org.presenter", 1, 0, "SlideMod", slideMod.get()); + // qmlRegisterSingletonInstance("org.presenter", 1, 0, "SlideMod", slideMod.get()); qmlRegisterSingletonInstance("org.presenter", 1, 0, "Utils", utils); qmlRegisterSingletonInstance("org.presenter", 1, 0, "SlideObject", slideobject.get()); - qmlRegisterSingletonInstance("org.presenter", 1, 0, "FileManager", filemanager.get()); + // qmlRegisterSingletonInstance("org.presenter", 1, 0, "FileManager", filemanager.get()); qmlRegisterSingletonInstance("org.presenter", 1, 0, "PresWindow", PresWindow); qmlRegisterSingletonInstance("org.presenter", 1, 0, "RSettings", settings); qmlRegisterSingletonInstance("org.presenter", 1, 0, "ObsModel", obsModel.get()); @@ -253,10 +260,10 @@ int main(int argc, char *argv[]) // we need to set it as a separate context so that it can change it's slides too. // This is because SlideObject singleton is started before the window is shown // thus it doesn't exist in this window's context. So we set it here. - PresWindow->rootContext()->setContextProperty("SlideObj", slideobject.get()); - PresWindow->setTitle("presentation-window"); + PresWindow->rootContext()->setContextProperty(QStringLiteral("SlideObj"), slideobject.get()); + PresWindow->setTitle(QStringLiteral("presentation-window")); - connectToDatabase(); + // connectToDatabase(); qDebug() << "Starting engine"; QQmlApplicationEngine engine; diff --git a/src/qml/presenter/Slide.qml b/src/qml/presenter/Slide.qml index 3b47e03..c103a2a 100644 --- a/src/qml/presenter/Slide.qml +++ b/src/qml/presenter/Slide.qml @@ -86,7 +86,7 @@ Item { Timer { id: mpvLoadingTimer - interval: 100 + interval: 500 onTriggered: { /* showPassiveNotification("YIPPEEE!") */ mpv.stop();