diff --git a/Cargo.lock b/Cargo.lock index e2f9760..cda2ef2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -77,14 +77,14 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.35" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c0df63cb2955042487fad3aefd2c6e3ae7389ac5dc1beb28921de0b69f779d4" +checksum = "ee67c11feeac938fae061b232e38e0b6d94f97a9df10e6271319325ac4c56a86" [[package]] name = "ashpd" version = "0.1.0" -source = "git+https://github.com/bilelmoussaoui/ashpd#50dadd3782c4193a3956780bb30d56fffdf257ee" +source = "git+https://github.com/bilelmoussaoui/ashpd#d7ec2103565301b8476d6706ef34090e197b021c" dependencies = [ "enumflags2", "gdk4", @@ -189,7 +189,7 @@ dependencies = [ "memchr", "num_cpus", "once_cell", - "pin-project-lite 0.2.0", + "pin-project-lite 0.2.3", "pin-utils", "slab", "wasm-bindgen-futures", @@ -352,9 +352,9 @@ checksum = "41aa2ec95ca3b5c54cf73c91acf06d24f4495d5f1b1c12506ae3483d646177ac" [[package]] name = "byteorder" -version = "1.3.4" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" +checksum = "ae44d1a3d5a19df61dd0c8beb138458ac2a53a7ac09eba97d55592540004306b" [[package]] name = "bytes" @@ -362,6 +362,12 @@ version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" +[[package]] +name = "bytes" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad1f8e949d755f9d79112b5bb46938e0ef9d3804a0b16dfab13aafcaa5f0fa72" + [[package]] name = "cache-padded" version = "1.1.1" @@ -371,7 +377,7 @@ checksum = "631ae5198c9be5e753e5cc215e1bd73c2b466a3565173db433f52bb9d3e66dba" [[package]] name = "cairo-rs" version = "0.13.0" -source = "git+https://github.com/gtk-rs/gtk-rs#f9714995940f334a712f5bfcccd558f600007e9f" +source = "git+https://github.com/gtk-rs/gtk-rs#0fc0f84f0e237689b8c051249539a0214c6f3d53" dependencies = [ "bitflags", "cairo-sys-rs", @@ -384,7 +390,7 @@ dependencies = [ [[package]] name = "cairo-sys-rs" version = "0.13.0" -source = "git+https://github.com/gtk-rs/gtk-rs#f9714995940f334a712f5bfcccd558f600007e9f" +source = "git+https://github.com/gtk-rs/gtk-rs#0fc0f84f0e237689b8c051249539a0214c6f3d53" dependencies = [ "glib-sys", "libc", @@ -450,9 +456,9 @@ dependencies = [ [[package]] name = "const_fn" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd51eab21ab4fd6a3bf889e2d0958c0a6e3a61ad04260325e919e652a2a62826" +checksum = "28b9d6de7f49e22cf97ad17fc4036ece69300032f45f78f30b4a4482cdc3f4a6" [[package]] name = "cookie" @@ -615,9 +621,9 @@ dependencies = [ [[package]] name = "derivative" -version = "2.1.1" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb582b60359da160a9477ee80f15c8d784c477e69c217ef2cdd4169c24ea380f" +checksum = "eaed5874effa6cde088c644ddcdcb4ffd1511391c5be4fdd7a5ccd02c7e4a183" dependencies = [ "proc-macro2", "quote", @@ -824,9 +830,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b3b0c040a1fe6529d30b3c5944b280c7f0dcb2930d2c3062bca967b602583d0" +checksum = "c70be434c505aee38639abccb918163b63158a4b4bb791b45b7023044bdc3c9c" dependencies = [ "futures-channel", "futures-core", @@ -839,9 +845,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b7109687aa4e177ef6fe84553af6280ef2778bdb7783ba44c9dc3399110fe64" +checksum = "f01c61843314e95f96cc9245702248733a3a3d744e43e2e755e3c7af8348a0a9" dependencies = [ "futures-core", "futures-sink", @@ -849,15 +855,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "847ce131b72ffb13b6109a221da9ad97a64cbe48feb1028356b836b47b8f1748" +checksum = "db8d3b0917ff63a2a96173133c02818fac4a746b0a57569d3baca9ec0e945e08" [[package]] name = "futures-executor" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4caa2b2b68b880003057c1dd49f1ed937e38f22fcf6c212188a121f08cf40a65" +checksum = "9ee9ca2f7eb4475772cf39dd1cd06208dce2670ad38f4d9c7262b3e15f127068" dependencies = [ "futures-core", "futures-task", @@ -866,9 +872,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "611834ce18aaa1bd13c4b374f5d653e1027cf99b6b502584ff8c9a64413b30bb" +checksum = "e37c1a51b037b80922864b8eed90692c5cd8abd4c71ce49b77146caa47f3253b" [[package]] name = "futures-lite" @@ -881,15 +887,15 @@ dependencies = [ "futures-io", "memchr", "parking", - "pin-project-lite 0.2.0", + "pin-project-lite 0.2.3", "waker-fn", ] [[package]] name = "futures-macro" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77408a692f1f97bcc61dc001d752e00643408fbc922e4d634c655df50d595556" +checksum = "0f8719ca0e1f3c5e34f3efe4570ef2c0610ca6da85ae7990d472e9cbfba13664" dependencies = [ "proc-macro-hack", "proc-macro2", @@ -899,24 +905,24 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f878195a49cee50e006b02b93cf7e0a95a38ac7b776b4c4d9cc1207cd20fcb3d" +checksum = "f6adabac1290109cfa089f79192fb6244ad2c3f1cc2281f3e1dd987592b71feb" [[package]] name = "futures-task" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c554eb5bf48b2426c4771ab68c6b14468b6e76cc90996f528c3338d761a4d0d" +checksum = "a92a0843a2ff66823a8f7c77bffe9a09be2b64e533562c412d63075643ec0038" dependencies = [ "once_cell", ] [[package]] name = "futures-util" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d304cff4a7b99cfb7986f7d43fbe93d175e72e704a8860787cc95e9ffd85cbd2" +checksum = "036a2107cdeb57f6d7322f1b6c363dad67cd63ca3b7d1b925bdf75bd5d96cda9" dependencies = [ "futures-channel", "futures-core", @@ -925,7 +931,7 @@ dependencies = [ "futures-sink", "futures-task", "memchr", - "pin-project 1.0.2", + "pin-project-lite 0.2.3", "pin-utils", "proc-macro-hack", "proc-macro-nested", @@ -935,7 +941,7 @@ dependencies = [ [[package]] name = "gdk-pixbuf" version = "0.13.0" -source = "git+https://github.com/gtk-rs/gtk-rs#f9714995940f334a712f5bfcccd558f600007e9f" +source = "git+https://github.com/gtk-rs/gtk-rs#0fc0f84f0e237689b8c051249539a0214c6f3d53" dependencies = [ "gdk-pixbuf-sys", "gio", @@ -946,7 +952,7 @@ dependencies = [ [[package]] name = "gdk-pixbuf-sys" version = "0.13.0" -source = "git+https://github.com/gtk-rs/gtk-rs#f9714995940f334a712f5bfcccd558f600007e9f" +source = "git+https://github.com/gtk-rs/gtk-rs#0fc0f84f0e237689b8c051249539a0214c6f3d53" dependencies = [ "gio-sys", "glib-sys", @@ -958,7 +964,7 @@ dependencies = [ [[package]] name = "gdk4" version = "0.1.0" -source = "git+https://github.com/gtk-rs/gtk4-rs#d393f59dbf97518add962d250de9e3b69339f251" +source = "git+https://github.com/gtk-rs/gtk4-rs#397e7f9d6ea62b325e9e707dc76cd602a00e006e" dependencies = [ "bitflags", "cairo-rs", @@ -973,7 +979,7 @@ dependencies = [ [[package]] name = "gdk4-sys" version = "0.1.0" -source = "git+https://github.com/gtk-rs/gtk4-rs#d393f59dbf97518add962d250de9e3b69339f251" +source = "git+https://github.com/gtk-rs/gtk4-rs#397e7f9d6ea62b325e9e707dc76cd602a00e006e" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", @@ -988,7 +994,7 @@ dependencies = [ [[package]] name = "gdk4-wayland" version = "0.1.0" -source = "git+https://github.com/gtk-rs/gtk4-rs#d393f59dbf97518add962d250de9e3b69339f251" +source = "git+https://github.com/gtk-rs/gtk4-rs#397e7f9d6ea62b325e9e707dc76cd602a00e006e" dependencies = [ "gdk4", "gdk4-wayland-sys", @@ -1001,7 +1007,7 @@ dependencies = [ [[package]] name = "gdk4-wayland-sys" version = "0.1.0" -source = "git+https://github.com/gtk-rs/gtk4-rs#d393f59dbf97518add962d250de9e3b69339f251" +source = "git+https://github.com/gtk-rs/gtk4-rs#397e7f9d6ea62b325e9e707dc76cd602a00e006e" dependencies = [ "glib-sys", "libc", @@ -1011,7 +1017,7 @@ dependencies = [ [[package]] name = "gdk4-x11" version = "0.1.0" -source = "git+https://github.com/gtk-rs/gtk4-rs#d393f59dbf97518add962d250de9e3b69339f251" +source = "git+https://github.com/gtk-rs/gtk4-rs#397e7f9d6ea62b325e9e707dc76cd602a00e006e" dependencies = [ "gdk4", "gdk4-x11-sys", @@ -1024,7 +1030,7 @@ dependencies = [ [[package]] name = "gdk4-x11-sys" version = "0.1.0" -source = "git+https://github.com/gtk-rs/gtk4-rs#d393f59dbf97518add962d250de9e3b69339f251" +source = "git+https://github.com/gtk-rs/gtk4-rs#397e7f9d6ea62b325e9e707dc76cd602a00e006e" dependencies = [ "gdk4-sys", "glib-sys", @@ -1045,11 +1051,11 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ - "cfg-if 0.1.10", + "cfg-if 1.0.0", "libc", "wasi", ] @@ -1075,10 +1081,11 @@ dependencies = [ [[package]] name = "ghash" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6e27f0689a6e15944bdce7e45425efb87eaa8ab0c6e87f11d0987a9133e2531" +checksum = "97304e4cd182c3846f7575ced3890c53012ce534ad9114046b0a9e00bb30a375" dependencies = [ + "opaque-debug", "polyval", ] @@ -1095,14 +1102,12 @@ dependencies = [ [[package]] name = "gio" version = "0.13.0" -source = "git+https://github.com/gtk-rs/gtk-rs#f9714995940f334a712f5bfcccd558f600007e9f" +source = "git+https://github.com/gtk-rs/gtk-rs#0fc0f84f0e237689b8c051249539a0214c6f3d53" dependencies = [ "bitflags", - "futures", "futures-channel", "futures-core", "futures-io", - "futures-util", "gio-sys", "glib", "libc", @@ -1113,7 +1118,7 @@ dependencies = [ [[package]] name = "gio-sys" version = "0.13.0" -source = "git+https://github.com/gtk-rs/gtk-rs#f9714995940f334a712f5bfcccd558f600007e9f" +source = "git+https://github.com/gtk-rs/gtk-rs#0fc0f84f0e237689b8c051249539a0214c6f3d53" dependencies = [ "glib-sys", "gobject-sys", @@ -1125,14 +1130,13 @@ dependencies = [ [[package]] name = "glib" version = "0.13.0" -source = "git+https://github.com/gtk-rs/gtk-rs#f9714995940f334a712f5bfcccd558f600007e9f" +source = "git+https://github.com/gtk-rs/gtk-rs#0fc0f84f0e237689b8c051249539a0214c6f3d53" dependencies = [ "bitflags", "futures-channel", "futures-core", "futures-executor", "futures-task", - "futures-util", "glib-macros", "glib-sys", "gobject-sys", @@ -1144,7 +1148,7 @@ dependencies = [ [[package]] name = "glib-macros" version = "0.13.0" -source = "git+https://github.com/gtk-rs/gtk-rs#f9714995940f334a712f5bfcccd558f600007e9f" +source = "git+https://github.com/gtk-rs/gtk-rs#0fc0f84f0e237689b8c051249539a0214c6f3d53" dependencies = [ "anyhow", "heck", @@ -1159,7 +1163,7 @@ dependencies = [ [[package]] name = "glib-sys" version = "0.13.0" -source = "git+https://github.com/gtk-rs/gtk-rs#f9714995940f334a712f5bfcccd558f600007e9f" +source = "git+https://github.com/gtk-rs/gtk-rs#0fc0f84f0e237689b8c051249539a0214c6f3d53" dependencies = [ "libc", "system-deps", @@ -1181,7 +1185,7 @@ dependencies = [ [[package]] name = "gobject-sys" version = "0.13.0" -source = "git+https://github.com/gtk-rs/gtk-rs#f9714995940f334a712f5bfcccd558f600007e9f" +source = "git+https://github.com/gtk-rs/gtk-rs#0fc0f84f0e237689b8c051249539a0214c6f3d53" dependencies = [ "glib-sys", "libc", @@ -1191,7 +1195,7 @@ dependencies = [ [[package]] name = "graphene-rs" version = "0.13.0" -source = "git+https://github.com/gtk-rs/gtk-rs#f9714995940f334a712f5bfcccd558f600007e9f" +source = "git+https://github.com/gtk-rs/gtk-rs#0fc0f84f0e237689b8c051249539a0214c6f3d53" dependencies = [ "glib", "graphene-sys", @@ -1201,7 +1205,7 @@ dependencies = [ [[package]] name = "graphene-sys" version = "0.13.0" -source = "git+https://github.com/gtk-rs/gtk-rs#f9714995940f334a712f5bfcccd558f600007e9f" +source = "git+https://github.com/gtk-rs/gtk-rs#0fc0f84f0e237689b8c051249539a0214c6f3d53" dependencies = [ "glib-sys", "libc", @@ -1212,7 +1216,7 @@ dependencies = [ [[package]] name = "gsk4" version = "0.1.0" -source = "git+https://github.com/gtk-rs/gtk4-rs#d393f59dbf97518add962d250de9e3b69339f251" +source = "git+https://github.com/gtk-rs/gtk4-rs#397e7f9d6ea62b325e9e707dc76cd602a00e006e" dependencies = [ "bitflags", "cairo-rs", @@ -1227,7 +1231,7 @@ dependencies = [ [[package]] name = "gsk4-sys" version = "0.1.0" -source = "git+https://github.com/gtk-rs/gtk4-rs#d393f59dbf97518add962d250de9e3b69339f251" +source = "git+https://github.com/gtk-rs/gtk4-rs#397e7f9d6ea62b325e9e707dc76cd602a00e006e" dependencies = [ "cairo-sys-rs", "gdk4-sys", @@ -1248,7 +1252,7 @@ checksum = "1874c48e670519ce192093ac906c08a6dde7cb2d18b28722ef237726a39c3a63" [[package]] name = "gtk4" version = "0.1.0" -source = "git+https://github.com/gtk-rs/gtk4-rs#d393f59dbf97518add962d250de9e3b69339f251" +source = "git+https://github.com/gtk-rs/gtk4-rs#397e7f9d6ea62b325e9e707dc76cd602a00e006e" dependencies = [ "bitflags", "cairo-rs", @@ -1269,7 +1273,7 @@ dependencies = [ [[package]] name = "gtk4-macros" version = "0.1.0" -source = "git+https://github.com/gtk-rs/gtk4-rs#d393f59dbf97518add962d250de9e3b69339f251" +source = "git+https://github.com/gtk-rs/gtk4-rs#397e7f9d6ea62b325e9e707dc76cd602a00e006e" dependencies = [ "anyhow", "heck", @@ -1284,7 +1288,7 @@ dependencies = [ [[package]] name = "gtk4-sys" version = "0.1.0" -source = "git+https://github.com/gtk-rs/gtk4-rs#d393f59dbf97518add962d250de9e3b69339f251" +source = "git+https://github.com/gtk-rs/gtk4-rs#397e7f9d6ea62b325e9e707dc76cd602a00e006e" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", @@ -1301,9 +1305,9 @@ dependencies = [ [[package]] name = "heck" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" +checksum = "87cbf45460356b7deeb5e3415b5563308c0a9b057c85e12b06ad551f98d0a6ac" dependencies = [ "unicode-segmentation", ] @@ -1345,11 +1349,11 @@ dependencies = [ [[package]] name = "http" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84129d298a6d57d246960ff8eb831ca4af3f96d29e2e28848dae275408658e26" +checksum = "7245cd7449cc792608c3c8a9eaf69bd4eabbabf802713748fd739c98b82f0747" dependencies = [ - "bytes", + "bytes 1.0.0", "fnv", "itoa", ] @@ -1449,7 +1453,7 @@ version = "0.9.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2948a0ce43e2c2ef11d7edf6816508998d99e13badd1150be0914205df9388a" dependencies = [ - "bytes", + "bytes 0.5.6", "crossbeam-utils", "curl", "curl-sys", @@ -1477,9 +1481,9 @@ dependencies = [ [[package]] name = "itoa" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6" +checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" [[package]] name = "jpeg-decoder" @@ -1517,14 +1521,14 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.81" +version = "0.2.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1482821306169ec4d07f6aca392a4681f66c75c9918aa49641a2595db64053cb" +checksum = "89203f3fba0a3795506acaad8ebce3c80c0af93f994d5a1d7a0b1eeb23271929" [[package]] name = "libhandy4" version = "0.1.0" -source = "git+https://gitlab.gnome.org/bilelmoussaoui/libhandy4-rs#511b3e4a398aacb9ffa30ccff9926955e135b7bc" +source = "git+https://gitlab.gnome.org/bilelmoussaoui/libhandy4-rs#ea059551d1e0c2f77a483f37ad83eb5b358d4c5d" dependencies = [ "bitflags", "gdk-pixbuf", @@ -1541,7 +1545,7 @@ dependencies = [ [[package]] name = "libhandy4-sys" version = "0.1.0" -source = "git+https://gitlab.gnome.org/bilelmoussaoui/libhandy4-rs#511b3e4a398aacb9ffa30ccff9926955e135b7bc" +source = "git+https://gitlab.gnome.org/bilelmoussaoui/libhandy4-rs#ea059551d1e0c2f77a483f37ad83eb5b358d4c5d" dependencies = [ "gdk-pixbuf-sys", "gdk4-sys", @@ -1892,9 +1896,9 @@ checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" [[package]] name = "openssl-sys" -version = "0.9.59" +version = "0.9.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de52d8eabd217311538a39bba130d7dea1f1e118010fee7a033d966845e7d5fe" +checksum = "921fc71883267538946025deffb622905ecad223c28efbfdef9bb59a0175f3e6" dependencies = [ "autocfg", "cc", @@ -1906,7 +1910,7 @@ dependencies = [ [[package]] name = "pango" version = "0.13.0" -source = "git+https://github.com/gtk-rs/gtk-rs#f9714995940f334a712f5bfcccd558f600007e9f" +source = "git+https://github.com/gtk-rs/gtk-rs#0fc0f84f0e237689b8c051249539a0214c6f3d53" dependencies = [ "bitflags", "glib", @@ -1918,7 +1922,7 @@ dependencies = [ [[package]] name = "pango-sys" version = "0.13.0" -source = "git+https://github.com/gtk-rs/gtk-rs#f9714995940f334a712f5bfcccd558f600007e9f" +source = "git+https://github.com/gtk-rs/gtk-rs#0fc0f84f0e237689b8c051249539a0214c6f3d53" dependencies = [ "glib-sys", "gobject-sys", @@ -1945,9 +1949,9 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7c6d9b8427445284a09c55be860a15855ab580a417ccad9da88f5a06787ced0" +checksum = "9ccb628cad4f84851442432c60ad8e1f607e29752d0bf072cbd0baf28aa34272" dependencies = [ "cfg-if 1.0.0", "instant", @@ -1969,16 +1973,7 @@ version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2ffbc8e94b38ea3d2d8ba92aea2983b503cd75d0888d75b86bb37970b5698e15" dependencies = [ - "pin-project-internal 0.4.27", -] - -[[package]] -name = "pin-project" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ccc2237c2c489783abd8c4c80e5450fc0e98644555b1364da68cc29aa151ca7" -dependencies = [ - "pin-project-internal 1.0.2", + "pin-project-internal", ] [[package]] @@ -1992,17 +1987,6 @@ dependencies = [ "syn", ] -[[package]] -name = "pin-project-internal" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8e8d2bf0b23038a4424865103a4df472855692821aab4e4f5c3312d461d9e5f" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "pin-project-lite" version = "0.1.11" @@ -2011,9 +1995,9 @@ checksum = "c917123afa01924fc84bb20c4c03f004d9c38e5127e3c039bbf7f4b9c76a2f6b" [[package]] name = "pin-project-lite" -version = "0.2.0" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b063f57ec186e6140e2b8b6921e5f1bd89c7356dda5b33acc5401203ca6131c" +checksum = "ba36e0a6cc5a4c645073f4984f1ed55d09f5857d4de7c14550baa81a39ef5a17" [[package]] name = "pin-utils" @@ -2054,11 +2038,12 @@ dependencies = [ [[package]] name = "polyval" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4fd92d8e0c06d08525d2e2643cc2b5c80c69ae8eb12c18272d501cd7079ccc0" +checksum = "eebcc4aa140b9abd2bc40d9c3f7ccec842679cd79045ac3a7ac698c1a064b7cd" dependencies = [ "cpuid-bool 0.2.0", + "opaque-debug", "universal-hash", ] @@ -2159,9 +2144,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37" +checksum = "991431c3519a3f36861882da93630ce66b52918dcf1b8e2fd66b397fc96f28df" dependencies = [ "proc-macro2", ] @@ -2251,9 +2236,9 @@ checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" [[package]] name = "regex" -version = "1.4.2" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38cf2c13ed4745de91a5eb834e11c00bcc3709e773173b2ce4c56c9fbde04b9c" +checksum = "d9251239e129e16308e70d853559389de218ac275b515068abc96829d05b948a" dependencies = [ "aho-corasick", "memchr", @@ -2263,9 +2248,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.21" +version = "0.6.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b181ba2dcf07aaccad5448e8ead58db5b742cf85dfe035e2227f137a539a189" +checksum = "b5eb417147ba9860a96cfe72a0b93bf88fee1744b5636ec99ab20c1aa9376581" [[package]] name = "ring" @@ -2387,9 +2372,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.60" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1500e84d27fe482ed1dc791a56eddc2f230046a040fa908c08bda1d9fb615779" +checksum = "4fceb2595057b6891a4ee808f70054bd2d12f0e97f1cbb78689b59f676df325a" dependencies = [ "itoa", "ryu", @@ -2469,15 +2454,15 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.5.1" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae524f056d7d770e174287294f562e95044c68e88dec909a00d2094805db9d75" +checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" [[package]] name = "socket2" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97e0e9fd577458a4f61fb91fcb559ea2afecc54c934119421f9f5d3d5b1a1057" +checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" dependencies = [ "cfg-if 1.0.0", "libc", @@ -2501,9 +2486,9 @@ dependencies = [ [[package]] name = "standback" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf906c8b8fc3f6ecd1046e01da1d8ddec83e48c8b08b84dcc02b585a6bedf5a8" +checksum = "c66a8cff4fa24853fdf6b51f75c6d7f8206d7c75cab4e467bcd7f25c2b1febe0" dependencies = [ "version_check", ] @@ -2605,9 +2590,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.54" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2af957a63d6bd42255c359c93d9bfdb97076bd3b820897ce55ffbfbf107f44" +checksum = "cc60a3d73ea6594cd712d830cc1f0390fd71542d8c8cd24e70cc54cdfd5e05d5" dependencies = [ "proc-macro2", "quote", @@ -2640,18 +2625,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e9ae34b84616eedaaf1e9dd6026dbe00dcafa92aa0c8077cb69df1fcfe5e53e" +checksum = "76cc616c6abf8c8928e2fdcc0dbfab37175edd8fb49a4641066ad1364fdab146" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ba20f23e85b10754cd195504aebf6a27e2e6cbe28c17778a0c930724628dd56" +checksum = "9be73a2caec27583d0046ef3796c3794f868a5bc813db689eed00c7631275cd1" dependencies = [ "proc-macro2", "quote", @@ -2660,9 +2645,9 @@ dependencies = [ [[package]] name = "thread_local" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" +checksum = "bb9bc092d0d51e76b2b19d9d85534ffc9ec2db959a2523cdae0697e2972cd447" dependencies = [ "lazy_static", ] @@ -2680,9 +2665,9 @@ dependencies = [ [[package]] name = "time" -version = "0.2.23" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcdaeea317915d59b2b4cd3b5efcd156c309108664277793f5351700c02ce98b" +checksum = "273d3ed44dca264b0d6b3665e8d48fb515042d42466fad93d2a45b90ec4058f7" dependencies = [ "const_fn", "libc", @@ -2748,7 +2733,7 @@ checksum = "9f47026cdc4080c07e49b37087de021820269d996f581aac150ef9e5583eefe3" dependencies = [ "cfg-if 1.0.0", "log", - "pin-project-lite 0.2.0", + "pin-project-lite 0.2.3", "tracing-attributes", "tracing-core", ] @@ -2779,7 +2764,7 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab7bb6f14721aa00656086e9335d363c5c8747bae02ebe32ea2c7dece5689b4c" dependencies = [ - "pin-project 0.4.27", + "pin-project", "tracing", ] @@ -2967,9 +2952,9 @@ checksum = "7e7811dd7f9398f14cc76efd356f98f03aa30419dea46aa810d71e819fc97158" [[package]] name = "wayland-client" -version = "0.28.2" +version = "0.28.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222b227f47871e47d657c1c5e5360b4af9a877aa9c892716787be1c192c78c42" +checksum = "bdbdbe01d03b2267809f3ed99495b37395387fde789e0f2ebb78e8b43f75b6d7" dependencies = [ "bitflags", "downcast-rs", @@ -2983,9 +2968,9 @@ dependencies = [ [[package]] name = "wayland-commons" -version = "0.28.2" +version = "0.28.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "230b3ffeda101f877ff8ecb8573f5d26e7beb345b197807c4df34ec06879a3e6" +checksum = "480450f76717edd64ad04a4426280d737fc3d10a236b982df7b1aee19f0e2d56" dependencies = [ "nix 0.18.0", "once_cell", @@ -2995,9 +2980,9 @@ dependencies = [ [[package]] name = "wayland-scanner" -version = "0.28.2" +version = "0.28.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee5bd43a1d746efc486515fec561e47205f328b74802b959f10f5500f7e56cc" +checksum = "7010ba5767b3fcd350decc59055390b4ebe6bd1b9279a9feb1f1888987f1133d" dependencies = [ "proc-macro2", "quote", @@ -3006,9 +2991,9 @@ dependencies = [ [[package]] name = "wayland-sys" -version = "0.28.2" +version = "0.28.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0814adbecc7ea97869971e1d1c1b657e31863dda6fd768f119ad3dc408a01e58" +checksum = "6793834e0c35d11fd96a97297abe03d37be627e1847da52e17d7e0e3b51cc099" dependencies = [ "dlib", "pkg-config", @@ -3099,16 +3084,20 @@ dependencies = [ [[package]] name = "zbus" -version = "1.3.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2f1803d7af14e3cddc5c1511b05af4bda27f89d8387e5e1aa3a7b918639cb18" +checksum = "40b4d4aa39daed4e32aed75f0c37b969184949a0fdfd5f2e1277abfda61f02a8" dependencies = [ + "async-io", "byteorder", "derivative", "enumflags2", "fastrand", + "futures", + "nb-connect", "nix 0.17.0", "once_cell", + "polling", "scoped-tls", "serde", "serde_repr", @@ -3118,9 +3107,9 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "1.3.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03273fa8aec65ed1be7026f58f92b90ecea09e622103718e9300591e21e24711" +checksum = "87cc141cda72384bef359badf1808e391d3968f9299e8f3c3cbb78dafa1e0930" dependencies = [ "proc-macro-crate", "proc-macro2", diff --git a/src/application.rs b/src/application.rs index 8bfcece..ed90ea2 100644 --- a/src/application.rs +++ b/src/application.rs @@ -5,16 +5,15 @@ use crate::{ widgets::{PreferencesWindow, ProvidersDialog, Window}, }; use gettextrs::gettext; -use gio::subclass::ObjectSubclass; use glib::clone; +use gtk::subclass::prelude::*; use gtk::{gio, glib, prelude::*}; use gtk_macros::{action, get_action}; use std::env; mod imp { use super::*; - use glib::{subclass, subclass::prelude::*, WeakRef}; - use gtk::subclass::prelude::{ApplicationImpl, ApplicationImplExt, GtkApplicationImpl}; + use glib::{subclass, WeakRef}; use std::cell::{Cell, RefCell}; pub struct Application { diff --git a/src/backup/andotp.rs b/src/backup/andotp.rs index 6a682c4..3ce05a7 100644 --- a/src/backup/andotp.rs +++ b/src/backup/andotp.rs @@ -35,7 +35,7 @@ impl Backupable for AndOTP { gettext("Into a plain-text JSON file") } - fn backup(model: ProvidersModel, into: gtk::gio::File) -> Result<()> { + fn backup(model: &ProvidersModel, into: >k::gio::File) -> Result<()> { let mut items = Vec::new(); for i in 0..model.get_n_items() { @@ -82,6 +82,8 @@ impl Backupable for AndOTP { } impl Restorable for AndOTP { + type Item = Self; + fn identifier() -> String { "andotp".to_string() } @@ -94,30 +96,31 @@ impl Restorable for AndOTP { gettext("From a plain-text JSON file") } - fn restore(model: ProvidersModel, from: gtk::gio::File) -> Result<()> { + fn restore(from: >k::gio::File) -> Result> { let (data, _) = from.load_contents(gtk::gio::NONE_CANCELLABLE)?; let items: Vec = serde_json::de::from_slice(&data)?; - items.iter().try_for_each(|item| -> anyhow::Result<()> { - info!( - "Restoring account: {} - {} from AndOTP", - item.issuer, item.label - ); + Ok(items) + } - let provider = model.find_or_create( - &item.issuer, - item.period.unwrap_or(30), - item.method, - None, - item.algorithm, - item.digits, - item.counter.unwrap_or(1), - )?; + fn restore_item(item: &Self::Item, model: &ProvidersModel) -> Result<()> { + info!( + "Restoring account: {} - {} from AndOTP", + item.issuer, item.label + ); - let account = Account::create(&item.label, &item.secret, &provider)?; - provider.add_account(&account); - Ok(()) - }); + let provider = model.find_or_create( + &item.issuer, + item.period.unwrap_or(30), + item.method, + None, + item.algorithm, + item.digits, + item.counter.unwrap_or(1), + )?; + + let account = Account::create(&item.label, &item.secret, &provider)?; + provider.add_account(&account); Ok(()) } } diff --git a/src/backup/bitwarden.rs b/src/backup/bitwarden.rs index e0c9ec6..60bf147 100644 --- a/src/backup/bitwarden.rs +++ b/src/backup/bitwarden.rs @@ -8,6 +8,8 @@ use serde::{Deserialize, Serialize}; pub struct Bitwarden; impl Restorable for Bitwarden { + type Item = Self; + fn identifier() -> String { "bitwarden".to_string() } @@ -20,7 +22,11 @@ impl Restorable for Bitwarden { gettext("From a plain-text JSON file") } - fn restore(model: ProvidersModel, from: gtk::gio::File) -> Result<()> { + fn restore(from: >k::gio::File) -> Result> { + Ok(Vec::new()) + } + + fn restore_item(item: &Self::Item, model: &ProvidersModel) -> Result<()> { Ok(()) } } diff --git a/src/backup/freeotp.rs b/src/backup/freeotp.rs index 5843e41..c3bea18 100644 --- a/src/backup/freeotp.rs +++ b/src/backup/freeotp.rs @@ -22,7 +22,7 @@ impl Backupable for FreeOTP { gettext("Into a plain-text file, compatible with FreeOTP+") } - fn backup(model: ProvidersModel, into: gtk::gio::File) -> Result<()> { + fn backup(model: &ProvidersModel, into: >k::gio::File) -> Result<()> { let mut items: Vec = Vec::new(); for i in 0..model.get_n_items() { @@ -55,6 +55,7 @@ impl Backupable for FreeOTP { } impl Restorable for FreeOTP { + type Item = OTPUri; fn identifier() -> String { "authenticator".to_string() } @@ -67,30 +68,33 @@ impl Restorable for FreeOTP { gettext("From a plain-text file, compatible with FreeOTP+") } - fn restore(model: ProvidersModel, from: gtk::gio::File) -> Result<()> { + fn restore(from: >k::gio::File) -> Result> { let (data, _) = from.load_contents(gtk::gio::NONE_CANCELLABLE)?; let uris = String::from_utf8(data)?; - uris.split('\n') + let items = uris + .split('\n') .into_iter() - .try_for_each(|uri| -> Result<()> { - println!("{:#?}", uri); - let otp_uri = OTPUri::from_str(uri)?; - let provider = model.find_or_create( - &otp_uri.issuer, - otp_uri.period.unwrap_or(30), - otp_uri.method, - None, - otp_uri.algorithm, - otp_uri.digits.unwrap_or(6), - otp_uri.counter.unwrap_or(1), - )?; + .map(|uri| OTPUri::from_str(uri)) + .filter(|uri| uri.is_ok()) + .map(|uri| uri.unwrap()) + .collect::>(); + Ok(items) + } - let account = Account::create(&otp_uri.label, &otp_uri.secret, &provider)?; - provider.add_account(&account); + fn restore_item(item: &Self::Item, model: &ProvidersModel) -> Result<()> { + let provider = model.find_or_create( + &item.issuer, + item.period.unwrap_or(30), + item.method, + None, + item.algorithm, + item.digits.unwrap_or(6), + item.counter.unwrap_or(1), + )?; - Ok(()) - }); + let account = Account::create(&item.label, &item.secret, &provider)?; + provider.add_account(&account); Ok(()) } } diff --git a/src/backup/legacy.rs b/src/backup/legacy.rs index c44d349..d94826b 100644 --- a/src/backup/legacy.rs +++ b/src/backup/legacy.rs @@ -21,6 +21,8 @@ pub struct LegacyAuthenticator { } impl Restorable for LegacyAuthenticator { + type Item = Self; + fn identifier() -> String { "authenticator_legacy".to_string() } @@ -33,31 +35,30 @@ impl Restorable for LegacyAuthenticator { gettext("From a plain-text JSON file") } - fn restore(model: ProvidersModel, from: gtk::gio::File) -> Result<()> { + fn restore(from: >k::gio::File) -> Result> { let (data, _) = from.load_contents(gtk::gio::NONE_CANCELLABLE)?; - let items: Vec = serde_json::de::from_slice(&data)?; + Ok(items) + } - items.iter().try_for_each(|item| -> anyhow::Result<()> { - let issuer = item.tags.get(0).unwrap(); - info!( - "Restoring account: {} - {} from LegacyAuthenticator", - issuer, item.label - ); + fn restore_item(item: &Self::Item, model: &ProvidersModel) -> Result<()> { + let issuer = item.tags.get(0).unwrap(); + info!( + "Restoring account: {} - {} from LegacyAuthenticator", + issuer, item.label + ); - let provider = model.find_or_create( - &issuer, - item.period, - item.method, - None, - item.algorithm, - item.digits, - 1, - )?; - let account = Account::create(&item.label, &item.secret, &provider)?; - provider.add_account(&account); - Ok(()) - })?; + let provider = model.find_or_create( + &issuer, + item.period, + item.method, + None, + item.algorithm, + item.digits, + 1, + )?; + let account = Account::create(&item.label, &item.secret, &provider)?; + provider.add_account(&account); Ok(()) } } diff --git a/src/backup/mod.rs b/src/backup/mod.rs index 5f4f445..397a828 100644 --- a/src/backup/mod.rs +++ b/src/backup/mod.rs @@ -1,3 +1,5 @@ +use std::fmt::Debug; + use crate::models::ProvidersModel; use anyhow::Result; @@ -7,20 +9,23 @@ pub enum Operation { Restore, } -pub trait Restorable { +pub trait Restorable: Sized { + type Item: Debug; + fn title() -> String; fn subtitle() -> String; // Used to define the `restore.$identifier` action fn identifier() -> String; - fn restore(model: ProvidersModel, from: gtk::gio::File) -> Result<()>; + fn restore(from: >k::gio::File) -> Result>; + fn restore_item(item: &Self::Item, model: &ProvidersModel) -> Result<()>; } -pub trait Backupable { +pub trait Backupable: Sized { fn title() -> String; fn subtitle() -> String; // Used to define the `backup.$identifier` action fn identifier() -> String; - fn backup(model: ProvidersModel, into: gtk::gio::File) -> Result<()>; + fn backup(model: &ProvidersModel, into: >k::gio::File) -> Result<()>; } mod andotp; diff --git a/src/models/account.rs b/src/models/account.rs index e93edc7..80ca6a8 100644 --- a/src/models/account.rs +++ b/src/models/account.rs @@ -7,8 +7,9 @@ use anyhow::Result; use byteorder::{BigEndian, ReadBytesExt}; use core::cmp::Ordering; use diesel::{BelongingToDsl, ExpressionMethods, QueryDsl, RunQueryDsl}; -use gio::{subclass::ObjectSubclass, FileExt}; use glib::{clone, Cast, ObjectExt, StaticType, ToValue}; +use gtk::prelude::*; +use gtk::subclass::prelude::*; use gtk::{gio, glib}; use once_cell::sync::OnceCell; use qrcode::QrCode; @@ -42,7 +43,7 @@ pub struct DiAccount { #[doc(hidden)] mod imp { use super::*; - use glib::subclass::{self, prelude::*}; + use glib::subclass; static PROPERTIES: [subclass::Property; 6] = [ subclass::Property("id", |name| { diff --git a/src/models/accounts.rs b/src/models/accounts.rs index 5003cc9..9ccce1a 100644 --- a/src/models/accounts.rs +++ b/src/models/accounts.rs @@ -1,12 +1,11 @@ use super::account::Account; -use gio::subclass::ObjectSubclass; use glib::StaticType; +use gtk::subclass::prelude::*; use gtk::{gio, glib, prelude::*}; mod imp { use super::*; - use gio::subclass::ListModelImpl; - use glib::{subclass, subclass::prelude::*}; + use glib::subclass; use std::cell::RefCell; #[derive(Debug)] diff --git a/src/models/provider.rs b/src/models/provider.rs index dae4210..24ec070 100644 --- a/src/models/provider.rs +++ b/src/models/provider.rs @@ -8,8 +8,8 @@ use anyhow::Result; use async_std::prelude::*; use core::cmp::Ordering; use diesel::{ExpressionMethods, QueryDsl, RunQueryDsl}; -use gio::subclass::ObjectSubclass; use glib::{Cast, StaticType, ToValue}; +use gtk::subclass::prelude::*; use gtk::{gio, glib, prelude::*}; use std::{ cell::{Cell, RefCell}, @@ -49,7 +49,7 @@ pub struct DiProvider { } mod imp { use super::*; - use glib::subclass::{self, prelude::*}; + use glib::subclass; static PROPERTIES: [subclass::Property; 11] = [ subclass::Property("id", |name| { @@ -480,13 +480,13 @@ impl Provider { pub fn filter(&self, text: String) { let self_ = imp::Provider::from_instance(self); - let filter = gtk::CustomFilter::new(Some(Box::new(move |obj| { + let filter = gtk::CustomFilter::new(move |obj| { let account = obj.downcast_ref::().unwrap(); account .name() .to_ascii_lowercase() .contains(&text.to_ascii_lowercase()) - }))); + }); self_.filter_model.set_filter(Some(&filter)); } diff --git a/src/models/providers.rs b/src/models/providers.rs index 979ad14..5731d50 100644 --- a/src/models/providers.rs +++ b/src/models/providers.rs @@ -1,13 +1,12 @@ use super::{Account, Algorithm, OTPMethod, Provider}; use anyhow::Result; -use gio::subclass::ObjectSubclass; use glib::StaticType; +use gtk::subclass::prelude::*; use gtk::{gio, glib, prelude::*}; mod imp { use super::*; - use gio::subclass::ListModelImpl; - use glib::{subclass, subclass::prelude::*}; + use glib::subclass; use std::cell::RefCell; #[derive(Debug)] diff --git a/src/widgets/accounts/add.rs b/src/widgets/accounts/add.rs index 5308f55..36bb777 100644 --- a/src/widgets/accounts/add.rs +++ b/src/widgets/accounts/add.rs @@ -4,8 +4,8 @@ use crate::{ widgets::{ProviderImage, UrlRow}, }; use anyhow::Result; -use gio::{subclass::ObjectSubclass, ActionMapExt}; use glib::{clone, signal::Inhibit}; +use gtk::subclass::prelude::*; use gtk::{gio, glib, prelude::*, CompositeTemplate}; use gtk_macros::{action, get_action}; use once_cell::sync::OnceCell; @@ -13,7 +13,6 @@ use once_cell::sync::OnceCell; mod imp { use super::*; use glib::subclass; - use gtk::subclass::prelude::*; use std::cell::RefCell; #[derive(CompositeTemplate)] diff --git a/src/widgets/accounts/details.rs b/src/widgets/accounts/details.rs index 44bf7e8..419b2b0 100644 --- a/src/widgets/accounts/details.rs +++ b/src/widgets/accounts/details.rs @@ -1,11 +1,10 @@ use crate::{models::Account, widgets::UrlRow}; -use gio::{subclass::ObjectSubclass, FileExt}; -use gtk::{gio, glib, prelude::*, CompositeTemplate}; +use gtk::subclass::prelude::*; +use gtk::{glib, prelude::*, CompositeTemplate}; mod imp { use super::*; use glib::subclass; - use gtk::subclass::prelude::*; #[derive(Debug, CompositeTemplate)] pub struct AccountDetailsPage { diff --git a/src/widgets/accounts/row.rs b/src/widgets/accounts/row.rs index d95ea4d..088918c 100644 --- a/src/widgets/accounts/row.rs +++ b/src/widgets/accounts/row.rs @@ -1,6 +1,6 @@ use crate::models::Account; -use gio::{subclass::ObjectSubclass, ActionMapExt}; use glib::clone; +use gtk::subclass::prelude::*; use gtk::{gio, glib, prelude::*, CompositeTemplate}; use gtk_macros::{action, get_action}; use std::cell::RefCell; @@ -8,7 +8,6 @@ use std::cell::RefCell; mod imp { use super::*; use glib::subclass; - use gtk::subclass::prelude::*; static PROPERTIES: [subclass::Property; 1] = [subclass::Property("account", |name| { glib::ParamSpec::object( diff --git a/src/widgets/preferences/password_page.rs b/src/widgets/preferences/password_page.rs index ed8755b..246494b 100644 --- a/src/widgets/preferences/password_page.rs +++ b/src/widgets/preferences/password_page.rs @@ -1,6 +1,6 @@ use crate::{config, helpers::Keyring}; -use gio::subclass::ObjectSubclass; use glib::clone; +use gtk::subclass::prelude::*; use gtk::{gio, glib, prelude::*, CompositeTemplate}; use gtk_macros::{action, get_action}; use once_cell::sync::OnceCell; @@ -10,7 +10,6 @@ mod imp { use super::*; use glib::subclass; - use gtk::subclass::prelude::*; #[derive(CompositeTemplate)] pub struct PasswordPage { pub actions: OnceCell, diff --git a/src/widgets/preferences/window.rs b/src/widgets/preferences/window.rs index 7150de4..bb4064f 100644 --- a/src/widgets/preferences/window.rs +++ b/src/widgets/preferences/window.rs @@ -4,9 +4,10 @@ use crate::{ config, models::ProvidersModel, }; +use anyhow::Result; use gettextrs::gettext; -use gio::{subclass::ObjectSubclass, ActionMapExt}; use glib::clone; +use gtk::subclass::prelude::*; use gtk::{gio, glib, prelude::*, CompositeTemplate}; use libhandy::prelude::*; use once_cell::sync::OnceCell; @@ -14,7 +15,6 @@ use once_cell::sync::OnceCell; mod imp { use super::*; use glib::subclass; - use gtk::subclass::prelude::*; use libhandy::subclass::{ preferences_window::PreferencesWindowImpl, window::WindowImpl as HdyWindowImpl, }; @@ -156,7 +156,7 @@ impl PreferencesWindow { let dialog = win.select_file(filters, Operation::Backup); dialog.connect_response(clone!(@weak model, @weak win => move |d, response| { if response == gtk::ResponseType::Accept { - T::backup(model, d.get_file().unwrap()); + T::backup(&model, &d.get_file().unwrap()); } d.destroy(); })); @@ -177,16 +177,15 @@ impl PreferencesWindow { .action_name(&format!("restore.{}", T::identifier())) .build(); - let model = self_.model.get().unwrap(); gtk_macros::action!( self_.restore_actions, &T::identifier(), - clone!(@weak self as win, @weak model => move |_, _| { + clone!(@weak self as win => move |_, _| { let dialog = win.select_file(filters, Operation::Restore); - dialog.connect_response(clone!(@weak model, @weak win => move |d, response| { + dialog.connect_response(clone!(@weak win => move |d, response| { if response == gtk::ResponseType::Accept { - T::restore(model, d.get_file().unwrap()).unwrap(); - win.emit("restore-completed", &[]).unwrap(); + let items: Vec = T::restore(&d.get_file().unwrap()).unwrap(); + //win.restore_items(items); } d.destroy(); })); @@ -196,6 +195,11 @@ impl PreferencesWindow { self_.restore_group.get().add(&row); } + fn restore_items(&self, items: Vec) -> Result<()> { + println!("{:#?}", items); + Ok(()) + } + fn select_file( &self, filters: &'static [&str], diff --git a/src/widgets/providers/dialog.rs b/src/widgets/providers/dialog.rs index 3802c9f..fb518d0 100644 --- a/src/widgets/providers/dialog.rs +++ b/src/widgets/providers/dialog.rs @@ -1,14 +1,13 @@ use super::{ProviderPage, ProviderPageMode}; use crate::models::{Provider, ProviderSorter, ProvidersModel}; -use gio::{subclass::ObjectSubclass, ListModelExt}; use glib::{clone, signal::Inhibit}; +use gtk::subclass::prelude::*; use gtk::{gio, glib, prelude::*, CompositeTemplate}; use row::ProviderActionRow; mod imp { use super::*; use glib::subclass; - use gtk::subclass::prelude::*; use libhandy::subclass::window::WindowImpl as HdyWindowImpl; #[derive(CompositeTemplate)] @@ -190,13 +189,13 @@ impl ProvidersDialog { fn search(&self, text: String) { let self_ = imp::ProvidersDialog::from_instance(self); - let providers_filter = gtk::CustomFilter::new(Some(Box::new(move |object| { + let providers_filter = gtk::CustomFilter::new(move |object| { let provider = object.downcast_ref::().unwrap(); provider .name() .to_ascii_lowercase() .contains(&text.to_ascii_lowercase()) - }))); + }); self_.filter_model.set_filter(Some(&providers_filter)); } @@ -219,7 +218,6 @@ mod row { mod imp { use super::*; use glib::subclass; - use gtk::subclass::prelude::*; use std::cell::RefCell; static PROPERTIES: [subclass::Property; 1] = [subclass::Property("provider", |name| { diff --git a/src/widgets/providers/image.rs b/src/widgets/providers/image.rs index c79fc1f..b5023ce 100644 --- a/src/widgets/providers/image.rs +++ b/src/widgets/providers/image.rs @@ -1,6 +1,6 @@ use crate::models::Provider; -use gio::{subclass::ObjectSubclass, FileExt}; use glib::{clone, Receiver, Sender}; +use gtk::subclass::prelude::*; use gtk::{gio, glib, prelude::*, CompositeTemplate}; pub enum ImageAction { @@ -11,7 +11,6 @@ pub enum ImageAction { mod imp { use super::*; use glib::subclass; - use gtk::subclass::prelude::*; use std::cell::{Cell, RefCell}; static PROPERTIES: [subclass::Property; 2] = [ diff --git a/src/widgets/providers/list.rs b/src/widgets/providers/list.rs index 8c13db7..6ef9d38 100644 --- a/src/widgets/providers/list.rs +++ b/src/widgets/providers/list.rs @@ -3,14 +3,13 @@ use crate::{ models::{Account, Provider, ProviderSorter, ProvidersModel}, widgets::providers::ProviderRow, }; -use gio::{subclass::ObjectSubclass, ListModelExt}; use glib::clone; +use gtk::subclass::prelude::*; use gtk::{gio, glib, prelude::*, CompositeTemplate}; mod imp { use super::*; use glib::subclass; - use gtk::subclass::prelude::*; #[derive(Debug, CompositeTemplate)] pub struct ProvidersList { @@ -75,10 +74,10 @@ impl ProvidersList { pub fn set_model(&self, model: ProvidersModel) { let self_ = imp::ProvidersList::from_instance(self); - let accounts_filter = gtk::CustomFilter::new(Some(Box::new(|object| { + let accounts_filter = gtk::CustomFilter::new(move |object| { let provider = object.downcast_ref::().unwrap(); provider.has_accounts() - }))); + }); self_.filter_model.set_filter(Some(&accounts_filter)); self_.filter_model.set_model(Some(&model)); } @@ -95,11 +94,11 @@ impl ProvidersList { pub fn search(&self, text: String) { let self_ = imp::ProvidersList::from_instance(self); - let accounts_filter = gtk::CustomFilter::new(Some(Box::new(move |object| { + let accounts_filter = gtk::CustomFilter::new(move |object| { let provider = object.downcast_ref::().unwrap(); provider.filter(text.clone()); provider.accounts().get_n_items() != 0 - }))); + }); self_.filter_model.set_filter(Some(&accounts_filter)); } @@ -115,7 +114,7 @@ impl ProvidersList { self_.providers_list.get().bind_model( Some(&sort_model), - Some(Box::new(clone!(@weak self as list => move |obj| { + clone!(@weak self as list => move |obj| { let provider = obj.clone().downcast::().unwrap(); let row = ProviderRow::new(provider); row.connect_local("changed", false, clone!(@weak list => move |_| { @@ -130,7 +129,7 @@ impl ProvidersList { })).unwrap(); row.upcast::() - }))), + }), ); } } diff --git a/src/widgets/providers/page.rs b/src/widgets/providers/page.rs index b917807..d890189 100644 --- a/src/widgets/providers/page.rs +++ b/src/widgets/providers/page.rs @@ -2,9 +2,9 @@ use crate::{ models::{Algorithm, OTPMethod, Provider}, widgets::ProviderImage, }; -use gio::subclass::ObjectSubclass; use glib::{clone, translate::ToGlib}; -use gtk::{gio, glib, prelude::*, CompositeTemplate}; +use gtk::subclass::prelude::*; +use gtk::{glib, prelude::*, CompositeTemplate}; use libhandy::ComboRowExt; pub enum ProviderPageMode { @@ -17,7 +17,6 @@ mod imp { use super::*; use glib::subclass; - use gtk::subclass::prelude::*; #[derive(Debug, CompositeTemplate)] pub struct ProviderPage { diff --git a/src/widgets/providers/row.rs b/src/widgets/providers/row.rs index 93adfb4..c2a82a8 100644 --- a/src/widgets/providers/row.rs +++ b/src/widgets/providers/row.rs @@ -2,19 +2,13 @@ use crate::{ models::{Account, AccountSorter, OTPMethod, Provider}, widgets::{accounts::AccountRow, ProviderImage}, }; -use gio::subclass::ObjectSubclass; -use gtk::{ - gio, glib, - glib::{clone, subclass::prelude::*}, - prelude::*, - CompositeTemplate, -}; +use gtk::subclass::prelude::*; +use gtk::{glib, glib::clone, prelude::*, CompositeTemplate}; use std::time::{Duration, Instant}; mod imp { use super::*; use glib::subclass; - use gtk::subclass::prelude::*; use std::cell::{Cell, RefCell}; static PROPERTIES: [subclass::Property; 2] = [ @@ -262,6 +256,6 @@ impl ProviderRow { self_ .accounts_list .get() - .bind_model(Some(&sort_model), Some(Box::new(create_callback))); + .bind_model(Some(&sort_model), create_callback); } } diff --git a/src/widgets/url_row.rs b/src/widgets/url_row.rs index 23fd9b3..4637044 100644 --- a/src/widgets/url_row.rs +++ b/src/widgets/url_row.rs @@ -1,12 +1,11 @@ -use gio::subclass::ObjectSubclass; use glib::{clone, ObjectExt, ToValue}; -use gtk::{gio, glib, WidgetExt}; +use gtk::subclass::prelude::*; +use gtk::{glib, WidgetExt}; use libhandy::ActionRowExt; mod imp { use super::*; use glib::subclass; - use gtk::subclass::prelude::*; use libhandy::subclass::action_row::ActionRowImpl; use std::cell::RefCell; diff --git a/src/widgets/window.rs b/src/widgets/window.rs index 6bc772f..b372da2 100644 --- a/src/widgets/window.rs +++ b/src/widgets/window.rs @@ -6,8 +6,8 @@ use crate::{ widgets::{accounts::AccountDetailsPage, providers::ProvidersList, AccountAddDialog}, window_state, }; -use gio::subclass::ObjectSubclass; use glib::{clone, signal::Inhibit}; +use gtk::subclass::prelude::*; use gtk::{gio, glib, prelude::*, CompositeTemplate}; use gtk_macros::{action, get_action}; use once_cell::sync::OnceCell; @@ -22,7 +22,6 @@ pub enum View { mod imp { use super::*; use glib::subclass; - use gtk::subclass::prelude::*; use libhandy::subclass::application_window::ApplicationWindowImpl as HdyApplicationWindowImpl; #[derive(Debug, CompositeTemplate)]