Finished locales stage, and work on theming.

This commit is contained in:
2026-05-03 18:07:06 +02:00
parent a1263e7056
commit cf7b9ace08
7 changed files with 167 additions and 241 deletions
Generated
+61 -163
View File
@@ -73,7 +73,7 @@ dependencies = [
"android-properties",
"bitflags 2.11.1",
"cc",
"jni 0.22.4",
"jni",
"libc",
"log",
"ndk",
@@ -602,9 +602,9 @@ dependencies = [
[[package]]
name = "cc"
version = "1.2.60"
version = "1.2.61"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43c5703da9466b66a946814e1adf53ea2c90f10063b86290cc9eb67ce3478a20"
checksum = "d16d90359e986641506914ba71350897565610e87ce0ad9e6f28569db3dd5c6d"
dependencies = [
"find-msvc-tools",
"jobserver",
@@ -612,12 +612,6 @@ dependencies = [
"shlex",
]
[[package]]
name = "cesu8"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
[[package]]
name = "cfg-if"
version = "1.0.4"
@@ -854,9 +848,9 @@ dependencies = [
[[package]]
name = "ctor"
version = "0.10.0"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "95d0d11eb38e7642efca359c3cf6eb7b2e528182d09110165de70192b0352775"
checksum = "83cf0d42651b16c6dfe68685716d18480d18a9c39c62d76e8cf3eb6ed5d8bcbf"
dependencies = [
"dtor",
]
@@ -915,9 +909,9 @@ checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76"
[[package]]
name = "dtor"
version = "0.7.0"
version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "17f72721db8027a4e96dd6fb50d2a1d32259c9d3da1b63dee612ccd981e14293"
checksum = "edf234dd1594d6dd434a8fb8cada51ddbbc593e40e4a01556a0b31c62da2775b"
[[package]]
name = "either"
@@ -1072,23 +1066,9 @@ checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6"
[[package]]
name = "fax"
version = "0.2.6"
version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f05de7d48f37cd6730705cbca900770cab77a89f413d23e100ad7fad7795a0ab"
dependencies = [
"fax_derive",
]
[[package]]
name = "fax_derive"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
checksum = "caf1079563223d5d59d83c85886a56e586cfd5c1a26292e971a0fa266531ac5a"
[[package]]
name = "fdeflate"
@@ -1846,9 +1826,9 @@ dependencies = [
[[package]]
name = "imgref"
version = "1.12.0"
version = "1.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e7c5cedc30da3a610cac6b4ba17597bdf7152cf974e8aab3afb3d54455e371c8"
checksum = "40fac9d56ed6437b198fddba683305e8e2d651aa42647f00f5ae542e7f5c94a2"
[[package]]
name = "indexmap"
@@ -1906,22 +1886,6 @@ version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
[[package]]
name = "jni"
version = "0.21.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97"
dependencies = [
"cesu8",
"cfg-if",
"combine",
"jni-sys 0.3.1",
"log",
"thiserror 1.0.69",
"walkdir",
"windows-sys 0.45.0",
]
[[package]]
name = "jni"
version = "0.22.4"
@@ -2001,9 +1965,9 @@ dependencies = [
[[package]]
name = "js-sys"
version = "0.3.95"
version = "0.3.97"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2964e92d1d9dc3364cae4d718d93f227e3abb088e747d92e0395bfdedf1c12ca"
checksum = "a1840c94c045fbcf8ba2812c95db44499f7c64910a912551aaaa541decebcacf"
dependencies = [
"cfg-if",
"futures-util",
@@ -2078,9 +2042,9 @@ checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8"
[[package]]
name = "libc"
version = "0.2.185"
version = "0.2.186"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "52ff2c0fe9bc6cb6b14a0592c2ff4fa9ceb83eea9db979b0487cd054946a2b8f"
checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
[[package]]
name = "libfuzzer-sys"
@@ -2263,9 +2227,9 @@ dependencies = [
[[package]]
name = "mundy"
version = "0.2.2"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "523813c9e194ec43693805214eb112551f99382115b67f38600d724a692e7e8b"
checksum = "f32eb0db40f2df2bcfb05c93b8f73938d4c26ce9ac8881f1df0c8d3296921a73"
dependencies = [
"android-build",
"async-io",
@@ -2273,7 +2237,7 @@ dependencies = [
"dispatch",
"futures-channel",
"futures-lite 2.6.1",
"jni 0.21.1",
"jni",
"ndk-context",
"objc2 0.6.4",
"objc2-app-kit 0.3.2",
@@ -2827,9 +2791,9 @@ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
[[package]]
name = "orbclient"
version = "0.3.53"
version = "0.3.54"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "12c6933ddbbd16539a7672e697bb8d41ac3a4e99ac43eeb40c07236bd7fcb2dd"
checksum = "a570f6bca41d29acb2139229a7c873ec99bc9a313bd10804081d89bfac8ff329"
dependencies = [
"libc",
"libredox",
@@ -4274,9 +4238,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen"
version = "0.2.118"
version = "0.2.120"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0bf938a0bacb0469e83c1e148908bd7d5a6010354cf4fb73279b7447422e3a89"
checksum = "df52b6d9b87e0c74c9edfa1eb2d9bf85e5d63515474513aa50fa181b3c4f5db1"
dependencies = [
"cfg-if",
"once_cell",
@@ -4287,9 +4251,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-futures"
version = "0.4.68"
version = "0.4.70"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f371d383f2fb139252e0bfac3b81b265689bf45b6874af544ffa4c975ac1ebf8"
checksum = "af934872acec734c2d80e6617bbb5ff4f12b052dd8e6332b0817bce889516084"
dependencies = [
"js-sys",
"wasm-bindgen",
@@ -4297,9 +4261,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
version = "0.2.118"
version = "0.2.120"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eeff24f84126c0ec2db7a449f0c2ec963c6a49efe0698c4242929da037ca28ed"
checksum = "78b1041f495fb322e64aca85f5756b2172e35cd459376e67f2a6c9dffcedb103"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -4307,9 +4271,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
version = "0.2.118"
version = "0.2.120"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9d08065faf983b2b80a79fd87d8254c409281cf7de75fc4b773019824196c904"
checksum = "9dcd0ff20416988a18ac686d4d4d0f6aae9ebf08a389ff5d29012b05af2a1b41"
dependencies = [
"bumpalo",
"proc-macro2",
@@ -4320,9 +4284,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-shared"
version = "0.2.118"
version = "0.2.120"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5fd04d9e306f1907bd13c6361b5c6bfc7b3b3c095ed3f8a9246390f8dbdee129"
checksum = "49757b3c82ebf16c57d69365a142940b384176c24df52a087fb748e2085359ea"
dependencies = [
"unicode-ident",
]
@@ -4512,9 +4476,9 @@ dependencies = [
[[package]]
name = "web-sys"
version = "0.3.95"
version = "0.3.97"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4f2dfbb17949fa2088e5d39408c48368947b86f7834484e87b73de55bc14d97d"
checksum = "2eadbac71025cd7b0834f20d1fe8472e8495821b4e9801eb0a60bd1f19827602"
dependencies = [
"js-sys",
"wasm-bindgen",
@@ -4717,7 +4681,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6"
dependencies = [
"windows-core 0.58.0",
"windows-targets 0.52.6",
"windows-targets",
]
[[package]]
@@ -4751,7 +4715,7 @@ dependencies = [
"windows-interface 0.58.0",
"windows-result 0.2.0",
"windows-strings 0.1.0",
"windows-targets 0.52.6",
"windows-targets",
]
[[package]]
@@ -4844,7 +4808,7 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e"
dependencies = [
"windows-targets 0.52.6",
"windows-targets",
]
[[package]]
@@ -4863,7 +4827,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10"
dependencies = [
"windows-result 0.2.0",
"windows-targets 0.52.6",
"windows-targets",
]
[[package]]
@@ -4875,22 +4839,13 @@ dependencies = [
"windows-link",
]
[[package]]
name = "windows-sys"
version = "0.45.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
dependencies = [
"windows-targets 0.42.2",
]
[[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",
"windows-targets",
]
[[package]]
@@ -4899,7 +4854,7 @@ version = "0.59.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
dependencies = [
"windows-targets 0.52.6",
"windows-targets",
]
[[package]]
@@ -4911,35 +4866,20 @@ dependencies = [
"windows-link",
]
[[package]]
name = "windows-targets"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
dependencies = [
"windows_aarch64_gnullvm 0.42.2",
"windows_aarch64_msvc 0.42.2",
"windows_i686_gnu 0.42.2",
"windows_i686_msvc 0.42.2",
"windows_x86_64_gnu 0.42.2",
"windows_x86_64_gnullvm 0.42.2",
"windows_x86_64_msvc 0.42.2",
]
[[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_aarch64_gnullvm",
"windows_aarch64_msvc",
"windows_i686_gnu",
"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",
"windows_i686_msvc",
"windows_x86_64_gnu",
"windows_x86_64_gnullvm",
"windows_x86_64_msvc",
]
[[package]]
@@ -4951,36 +4891,18 @@ dependencies = [
"windows-link",
]
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
[[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.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
[[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.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
[[package]]
name = "windows_i686_gnu"
version = "0.52.6"
@@ -4993,48 +4915,24 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
[[package]]
name = "windows_i686_msvc"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
[[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.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
[[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.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
[[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.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
[[package]]
name = "windows_x86_64_msvc"
version = "0.52.6"
@@ -5282,9 +5180,9 @@ checksum = "e01738255b5a16e78bbb83e7fbba0a1e7dd506905cfc53f4622d89015a03fbb5"
[[package]]
name = "zbus"
version = "5.14.0"
version = "5.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ca82f95dbd3943a40a53cfded6c2d0a2ca26192011846a1810c4256ef92c60bc"
checksum = "c3bcbf15c8708d7fc1be0c993622e0a5cbd5e8b52bfa40afa4c3e0cd8d724ac1"
dependencies = [
"async-broadcast",
"async-executor",
@@ -5309,7 +5207,7 @@ dependencies = [
"uds_windows",
"uuid",
"windows-sys 0.61.2",
"winnow 0.7.15",
"winnow 1.0.2",
"zbus_macros",
"zbus_names",
"zvariant",
@@ -5317,9 +5215,9 @@ dependencies = [
[[package]]
name = "zbus_macros"
version = "5.14.0"
version = "5.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "897e79616e84aac4b2c46e9132a4f63b93105d54fe8c0e8f6bffc21fa8d49222"
checksum = "51fa5406ad9175a8c825a931f8cf347116b531b3634fcb0b627c290f1f2516ff"
dependencies = [
"proc-macro-crate",
"proc-macro2",
@@ -5332,12 +5230,12 @@ dependencies = [
[[package]]
name = "zbus_names"
version = "4.3.1"
version = "4.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ffd8af6d5b78619bab301ff3c560a5bd22426150253db278f164d6cf3b72c50f"
checksum = "7074f3e50b894eac91750142016d30d0a89be8e67dbfd9704fb875825760e52d"
dependencies = [
"serde",
"winnow 0.7.15",
"winnow 1.0.2",
"zvariant",
]
@@ -5399,23 +5297,23 @@ dependencies = [
[[package]]
name = "zvariant"
version = "5.10.0"
version = "5.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5708299b21903bbe348e94729f22c49c55d04720a004aa350f1f9c122fd2540b"
checksum = "c4db0ecb8987cf5e92653c57c098f7f0e39a03112edb796f4fe089fb7eaa14ff"
dependencies = [
"endi",
"enumflags2",
"serde",
"winnow 0.7.15",
"winnow 1.0.2",
"zvariant_derive",
"zvariant_utils",
]
[[package]]
name = "zvariant_derive"
version = "5.10.0"
version = "5.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b59b012ebe9c46656f9cc08d8da8b4c726510aef12559da3e5f1bf72780752c"
checksum = "5b949b639ab1b4bed763aa7481ba0e368af68d8b55532f8ed4bec86a59f2ca98"
dependencies = [
"proc-macro-crate",
"proc-macro2",
@@ -5426,13 +5324,13 @@ dependencies = [
[[package]]
name = "zvariant_utils"
version = "3.3.0"
version = "3.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f75c23a64ef8f40f13a6989991e643554d9bef1d682a281160cf0c1bc389c5e9"
checksum = "6d464f5733ffa07a3164d656f18533caace9d0638596721355d73256a410d691"
dependencies = [
"proc-macro2",
"quote",
"serde",
"syn",
"winnow 0.7.15",
"winnow 1.0.2",
]
+2 -2
View File
@@ -12,6 +12,6 @@ toml = "1"
[profile.release]
#lto = true
codegen-units = 8
opt-level = 3
codegen-units = 16
opt-level = 2
strip = true
+3 -3
View File
@@ -8,7 +8,7 @@
"wellcome.text": "Welcome to Kira Installer!",
"wellcome.choose_language": "Please select language to use during istalation!",
"license.license": "This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.",
"license.accept_text": "By pressing 'Accept' button you agreening to terms described above:",
"license.accept_text": "By pressing 'Accept' button you agreening to terms described below:",
"license.button.accept": "Accept",
"license.button.decline": "Decline",
"network.reuse_checkbox_caption": "Reuse settings?",
@@ -21,7 +21,7 @@
"timezone.selected_timezone": "Selected timezone:",
"timezone.select_timezone": "Please select preffered time zone",
"timezone.init_error": "Error getting time zones data from system!",
"locale.select_language_locale": "Language locale set to",
"locale.select_formats_locale": "Formats locale set to"
"locale.select_language_locale": "The system language will be set to",
"locale.select_formats_locale": "The numbers and dates locale will be set to"
}
+1
View File
@@ -252,6 +252,7 @@ pub fn main() -> ExitCode {
})
.centered()
.theme(kira_theming::main_theme())
.default_font(iced::Font::MONOSPACE)
.run();
match iced_result {
+28 -23
View File
@@ -1,25 +1,22 @@
// <Kira Installer - universal Linux installer.>
// Copyright (C) <2026> <Kira Foundation>
// <Kira Installer - universal Linux installer.>
// Copyright (C) <2026> <Kira Foundation>
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
/*
This is License stage. Used to inform user about program legal status.
*/
This is License stage. Used to inform user about program legal status.
*/
use iced::{Alignment, widget};
@@ -74,12 +71,20 @@ impl LicenseStage {
widget::button(widget::text(t!("license.button.decline"))).on_press(Message::Decline);
widget::column![
widget::container(widget::column![
widget::text(t!("license.accept_text")),
widget::container(widget::text(t!("license.license")))
.padding(10)
.style(widget::container::bordered_box)
].align_x(Alignment::Center).padding(20).spacing(10))
widget::container(
widget::column![
widget::text(t!("license.accept_text")).font(iced::Font {
weight: iced::font::Weight::Bold,
..iced::Font::DEFAULT
}),
widget::container(widget::text(t!("license.license")))
.padding(10)
.style(widget::container::bordered_box)
]
.align_x(Alignment::Center)
.padding(20)
.spacing(15)
)
.height(iced::Length::Fill)
.width(iced::Length::Fill)
.align_x(Alignment::Center)
+52 -41
View File
@@ -24,14 +24,14 @@ use crate::{
};
use iced::{Alignment, widget};
use rust_i18n::t;
use std::{collections::HashMap, default};
use std::collections::HashMap;
const LOCALES_GEN_FILE_NAME: &str = "/etc/locale.gen";
const LOCALES_GEN_START_LINE: usize = 17;
fn default_locale() -> (String, String) {
("C.UTF-8".to_string(), "UTF-8".to_string())
}
// fn default_locale() -> (String, String) {
// ("C.UTF-8".to_string(), "UTF-8".to_string())
// }
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct LocaleData {
@@ -41,20 +41,21 @@ pub struct LocaleData {
impl std::fmt::Display for LocaleData {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{} ({})", self.description, self.code)
write!(f, "{} ({})", self.code, self.description)
}
}
impl LocaleData {
pub fn default() -> Self {
let def = default_locale();
Self {
code: def.0,
description: def.1,
code: "C.UTF-8".into(),
description: "C locale".into(),
}
}
}
/// gets locales list from system "/etc/locale.gen" file
/// Filters out non UTF-8 locales
fn get_locales_codes_list_blocking() -> std::io::Result<Vec<(String, String)>> {
use std::fs::File;
use std::io::{BufReader, Read};
@@ -86,6 +87,7 @@ fn get_locales_codes_list_blocking() -> std::io::Result<Vec<(String, String)>> {
Ok(res)
}
/// Gets locales description from "/usr/share/i18n/locales/" directory.
fn get_locales_description_blocking() -> Result<HashMap<String, String>, String> {
use std::process::Command;
@@ -130,7 +132,7 @@ fn get_locales_description_blocking() -> Result<HashMap<String, String>, String>
#[derive(Debug, Clone)]
pub struct LocaleStage {
lang_locale: Option<LocaleData>,
all_locale: Option<LocaleData>,
formats_locale: Option<LocaleData>,
locales: Vec<LocaleData>,
lang_locale_text: String,
all_locale_text: String,
@@ -139,7 +141,7 @@ pub struct LocaleStage {
#[derive(Debug, Clone)]
pub enum Message {
SelectLangLocale(LocaleData),
SelectAllLocale(LocaleData),
SelectFormatsLocale(LocaleData),
Next,
Back,
}
@@ -151,13 +153,12 @@ impl LocaleStage {
.get_stage("welcome")
.and_then(|v| v.config.and_then(|v| v.get("loc_code").cloned()));
let loc_codes = get_locales_codes_list_blocking().unwrap();
let raw_loc_codes = get_locales_codes_list_blocking().unwrap();
let raw_loc_descr = get_locales_description_blocking().unwrap();
// println!("{:?}", raw_loc_descr);
//println!("{:?}", raw_loc_descr);
let locales: Vec<LocaleData> = loc_codes
let locales: Vec<LocaleData> = raw_loc_codes
.iter()
.filter_map(|(code, _)| {
code.split_once('.')
@@ -186,8 +187,8 @@ impl LocaleStage {
LocaleData::default()
};
println!("lang_match {:?}", lang_match);
println!("loc_codes {:?}", loc_codes);
//println!("lang_match {:?}", lang_match);
//println!("loc_codes {:?}", raw_loc_codes);
// let locale = locales.iter().find(|l| l.code == lang_match.0).cloned();
@@ -203,7 +204,7 @@ impl LocaleStage {
);
Self {
lang_locale: Some(lang_match.clone()),
all_locale: Some(lang_match),
formats_locale: Some(lang_match),
locales: locales,
lang_locale_text: lang_locale_text,
all_locale_text: all_locale_text,
@@ -212,7 +213,7 @@ impl LocaleStage {
fn gen_result(&self) -> StageResult {
if let Some(lang_locale) = &self.lang_locale
&& let Some(all_locale) = &self.all_locale
&& let Some(formats_locale) = &self.formats_locale
{
StageResult {
name: "locale".to_string(),
@@ -222,25 +223,23 @@ impl LocaleStage {
ConfigValue::String(lang_locale.code.clone()),
),
(
"all_locale".to_string(),
ConfigValue::String(all_locale.code.clone()),
"formats_locale".to_string(),
ConfigValue::String(formats_locale.code.clone()),
),
])),
resuts: None,
error: None,
}
} else {
let loc = LocaleData::default();
StageResult {
name: "locale".to_string(),
config: Some(HashMap::from([
(
"lang_locale".to_string(),
ConfigValue::String(default_locale().0),
),
(
"all_locale".to_string(),
ConfigValue::String(default_locale().0),
ConfigValue::String(loc.code.clone()),
),
("formats_locale".to_string(), ConfigValue::String(loc.code)),
])),
resuts: None,
error: None,
@@ -256,10 +255,10 @@ impl LocaleStage {
self.lang_locale = Some(loc);
StageAction::None
}
Message::SelectAllLocale(loc) => {
Message::SelectFormatsLocale(loc) => {
self.all_locale_text =
format!("{}: {}", t!("locale.select_formats_locale"), loc.code);
self.all_locale = Some(loc);
self.formats_locale = Some(loc);
StageAction::None
}
Message::Back => StageAction::Back,
@@ -280,20 +279,32 @@ impl LocaleStage {
widget::image(welcome_logo_handle)
.width(iced::Pixels(128.0))
.height(iced::Pixels(128.0)),
widget::column![
widget::text(self.lang_locale_text.as_str()),
widget::pick_list(
self.locales.clone(),
self.lang_locale.clone(),
Message::SelectLangLocale,
),
widget::text(self.all_locale_text.as_str()),
widget::pick_list(
self.locales.clone(),
self.all_locale.clone(),
Message::SelectAllLocale,
)
]
widget::container(
widget::column![
widget::text(self.lang_locale_text.as_str()),
widget::pick_list(
self.locales.clone(),
self.lang_locale.clone(),
Message::SelectLangLocale,
)
]
.spacing(5)
)
.style(widget::container::bordered_box)
.padding(5),
widget::container(
widget::column![
widget::text(self.all_locale_text.as_str()),
widget::pick_list(
self.locales.clone(),
self.formats_locale.clone(),
Message::SelectFormatsLocale,
)
]
.spacing(5)
)
.style(widget::container::bordered_box)
.padding(5)
]
.padding(10)
.spacing(10)
+20 -9
View File
@@ -29,7 +29,6 @@ use crate::stage;
use crate::stage::StageResult;
#[derive(Debug, Clone)]
#[derive(PartialEq, Eq)]
pub enum State {
Cheking,
@@ -50,6 +49,7 @@ pub struct NetworkStage {
use_net_settings: bool,
reqire_network: bool,
spinner_frames: apng::Frames,
logo_handle: widget::image::Handle,
status_message: String,
}
@@ -113,7 +113,10 @@ impl NetworkStage {
let spinner_frames =
apng::Frames::from_bytes(crate::kira_theming::get_spiner_bytes()).unwrap();
let logo_handle = widget::image::Handle::from_bytes(crate::kira_theming::get_logo_bytes());
Self {
logo_handle: logo_handle,
internet_active: false,
state: State::Cheking,
use_net_settings: false,
@@ -178,12 +181,12 @@ impl NetworkStage {
}
pub fn view(&self) -> iced::Element<'_, Message> {
let next_button = if (self.state == State::Cheking) || (!self.internet_active && self.reqire_network) {
widget::button(widget::text(t!("button.next")))
}
else {
widget::button(widget::text(t!("button.next"))).on_press(Message::Next)
};
let next_button =
if (self.state == State::Cheking) || (!self.internet_active && self.reqire_network) {
widget::button(widget::text(t!("button.next")))
} else {
widget::button(widget::text(t!("button.next"))).on_press(Message::Next)
};
let (back_button, check_button, reuse_checkbox) = match self.state {
State::Cheking => (
@@ -202,8 +205,16 @@ impl NetworkStage {
};
let spinner_container = match self.state {
State::Cheking => widget::container(apng(&self.spinner_frames)),
State::Normal => widget::container(widget::space().height(128).width(128)),
State::Cheking => widget::container(
apng(&self.spinner_frames)
.width(iced::Pixels(128.0).into())
.height(iced::Pixels(128.0).into()),
),
State::Normal => widget::container(
widget::image(&self.logo_handle)
.width(iced::Pixels(128.0))
.height(iced::Pixels(128.0)),
),
};
let info_column = widget::column![