refactor(time): update to icu 2.0.0
This commit is contained in:
parent
0e5054a4c5
commit
2533b5542b
4 changed files with 308 additions and 478 deletions
561
Cargo.lock
generated
561
Cargo.lock
generated
|
|
@ -1017,9 +1017,9 @@ checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
|
|||
|
||||
[[package]]
|
||||
name = "calendrical_calculations"
|
||||
version = "0.1.3"
|
||||
version = "0.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e97f73e95d668625c9b28a3072e6326773785a0cf807de9f3d632778438f3d38"
|
||||
checksum = "53c5d386a9f2c8b97e1a036420bcf937db4e5c9df33eb0232025008ced6104c0"
|
||||
dependencies = [
|
||||
"core_maths",
|
||||
"displaydoc",
|
||||
|
|
@ -1676,7 +1676,7 @@ dependencies = [
|
|||
"dirs 6.0.0",
|
||||
"downcast-rs 2.0.1",
|
||||
"eyre",
|
||||
"fixed_decimal",
|
||||
"fixed_decimal 0.5.6",
|
||||
"fontdb 0.23.0",
|
||||
"freedesktop-desktop-entry",
|
||||
"futures",
|
||||
|
|
@ -2536,6 +2536,17 @@ dependencies = [
|
|||
"writeable 0.5.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "fixed_decimal"
|
||||
version = "0.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "35943d22b2f19c0cb198ecf915910a8158e94541c89dcc63300d7799d46c2c5e"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"smallvec",
|
||||
"writeable 0.6.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "flate2"
|
||||
version = "1.1.2"
|
||||
|
|
@ -3479,109 +3490,100 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "icu"
|
||||
version = "1.5.0"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dff5e3018d703f168b00dcefa540a65f1bbc50754ae32f3f5f0e43fe5ee51502"
|
||||
checksum = "ab13fe39da5da564b88228e9f08815c9d0efbe9ec244e72b149d9994e10f1054"
|
||||
dependencies = [
|
||||
"icu_calendar",
|
||||
"icu_casemap",
|
||||
"icu_collator",
|
||||
"icu_collections 1.5.0",
|
||||
"icu_collections",
|
||||
"icu_datetime",
|
||||
"icu_decimal",
|
||||
"icu_experimental",
|
||||
"icu_list",
|
||||
"icu_locid",
|
||||
"icu_locid_transform",
|
||||
"icu_normalizer 1.5.0",
|
||||
"icu_locale",
|
||||
"icu_normalizer",
|
||||
"icu_pattern",
|
||||
"icu_plurals",
|
||||
"icu_properties 1.5.1",
|
||||
"icu_provider 1.5.0",
|
||||
"icu_properties",
|
||||
"icu_provider",
|
||||
"icu_segmenter",
|
||||
"icu_timezone",
|
||||
"icu_time",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_calendar"
|
||||
version = "1.5.2"
|
||||
version = "2.0.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7265b2137f9a36f7634a308d91f984574bbdba8cfd95ceffe1c345552275a8ff"
|
||||
checksum = "1f6c40ba6481ed7ddd358437af0f000eb9f661345845977d9d1b38e606374e1f"
|
||||
dependencies = [
|
||||
"calendrical_calculations",
|
||||
"displaydoc",
|
||||
"icu_calendar_data",
|
||||
"icu_locid",
|
||||
"icu_locid_transform",
|
||||
"icu_provider 1.5.0",
|
||||
"tinystr 0.7.6",
|
||||
"writeable 0.5.5",
|
||||
"zerovec 0.10.4",
|
||||
"icu_locale",
|
||||
"icu_locale_core",
|
||||
"icu_provider",
|
||||
"ixdtf",
|
||||
"tinystr",
|
||||
"writeable 0.6.1",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_calendar_data"
|
||||
version = "1.5.1"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "820499e77e852162190608b4f444e7b4552619150eafc39a9e39333d9efae9e1"
|
||||
checksum = "7219c8639ab936713a87b571eed2bc2615aa9137e8af6eb221446ee5644acc18"
|
||||
|
||||
[[package]]
|
||||
name = "icu_casemap"
|
||||
version = "1.5.1"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9ff0c8ae9f8d31b12e27fc385ff9ab1f3cd9b17417c665c49e4ec958c37da75f"
|
||||
checksum = "6dc5e74b3c9d7b63e0d7c5fd54ee8c135705df2ea2aa558082dd555dc9747a97"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"icu_casemap_data",
|
||||
"icu_collections 1.5.0",
|
||||
"icu_locid",
|
||||
"icu_properties 1.5.1",
|
||||
"icu_provider 1.5.0",
|
||||
"writeable 0.5.5",
|
||||
"zerovec 0.10.4",
|
||||
"icu_collections",
|
||||
"icu_locale_core",
|
||||
"icu_properties",
|
||||
"icu_provider",
|
||||
"potential_utf",
|
||||
"writeable 0.6.1",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_casemap_data"
|
||||
version = "1.5.1"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "02bd9f6276270c85a5cd54611adbbf94e993ec464a2a86a452a6c565b7ded5d9"
|
||||
checksum = "f7584067558ab4c60c95d1ac2abd1588689cb4bcd4e099507f62dae86ae8d2c0"
|
||||
|
||||
[[package]]
|
||||
name = "icu_collator"
|
||||
version = "1.5.0"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d370371887d31d56f361c3eaa15743e54f13bc677059c9191c77e099ed6966b2"
|
||||
checksum = "42ad4c6a556938dfd31f75a8c54141079e8821dc697ffb799cfe0f0fa11f2edc"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"icu_collator_data",
|
||||
"icu_collections 1.5.0",
|
||||
"icu_locid_transform",
|
||||
"icu_normalizer 1.5.0",
|
||||
"icu_properties 1.5.1",
|
||||
"icu_provider 1.5.0",
|
||||
"icu_collections",
|
||||
"icu_locale",
|
||||
"icu_locale_core",
|
||||
"icu_normalizer",
|
||||
"icu_properties",
|
||||
"icu_provider",
|
||||
"smallvec",
|
||||
"utf16_iter",
|
||||
"utf8_iter",
|
||||
"zerovec 0.10.4",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_collator_data"
|
||||
version = "1.5.1"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7b353986d77d28991eca4dea5ef2b8982f639342ae19ca81edc44f048bc38ebb"
|
||||
|
||||
[[package]]
|
||||
name = "icu_collections"
|
||||
version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"yoke 0.7.5",
|
||||
"zerofrom",
|
||||
"zerovec 0.10.4",
|
||||
]
|
||||
checksum = "d880b8e680799eabd90c054e1b95526cd48db16c95269f3c89fb3117e1ac92c5"
|
||||
|
||||
[[package]]
|
||||
name = "icu_collections"
|
||||
|
|
@ -3591,116 +3593,143 @@ checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47"
|
|||
dependencies = [
|
||||
"displaydoc",
|
||||
"potential_utf",
|
||||
"yoke 0.8.0",
|
||||
"yoke",
|
||||
"zerofrom",
|
||||
"zerovec 0.11.4",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_datetime"
|
||||
version = "1.5.1"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d115efb85e08df3fd77e77f52e7e087545a783fffba8be80bfa2102f306b1780"
|
||||
checksum = "0790c15e3d6ae3303365fa2337b4f6469de257916141110d14dcaf73f1d31ac5"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"either",
|
||||
"fixed_decimal",
|
||||
"fixed_decimal 0.7.0",
|
||||
"icu_calendar",
|
||||
"icu_datetime_data",
|
||||
"icu_decimal",
|
||||
"icu_locid",
|
||||
"icu_locid_transform",
|
||||
"icu_locale",
|
||||
"icu_locale_core",
|
||||
"icu_pattern",
|
||||
"icu_plurals",
|
||||
"icu_provider 1.5.0",
|
||||
"icu_timezone",
|
||||
"litemap 0.7.5",
|
||||
"icu_provider",
|
||||
"icu_time",
|
||||
"potential_utf",
|
||||
"smallvec",
|
||||
"tinystr 0.7.6",
|
||||
"writeable 0.5.5",
|
||||
"zerovec 0.10.4",
|
||||
"tinystr",
|
||||
"writeable 0.6.1",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_datetime_data"
|
||||
version = "1.5.1"
|
||||
version = "2.0.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bef5f04076123cab1b7a926a7083db27fe0d7a0e575adb984854aae3f3a6507d"
|
||||
checksum = "83791ac10bb7b774f130bb81fa89c4059de710dcef53caa0b86e645212d6d54c"
|
||||
|
||||
[[package]]
|
||||
name = "icu_decimal"
|
||||
version = "1.5.0"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fb8fd98f86ec0448d85e1edf8884e4e318bb2e121bd733ec929a05c0a5e8b0eb"
|
||||
checksum = "fec61c43fdc4e368a9f450272833123a8ef0d7083a44597660ce94d791b8a2e2"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"fixed_decimal",
|
||||
"fixed_decimal 0.7.0",
|
||||
"icu_decimal_data",
|
||||
"icu_locid_transform",
|
||||
"icu_provider 1.5.0",
|
||||
"writeable 0.5.5",
|
||||
"icu_locale",
|
||||
"icu_locale_core",
|
||||
"icu_provider",
|
||||
"serde",
|
||||
"tinystr",
|
||||
"writeable 0.6.1",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_decimal_data"
|
||||
version = "1.5.1"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "67c95dd97f5ccf6d837a9c115496ec7d36646fa86ca18e7f1412115b4c820ae2"
|
||||
checksum = "b70963bc35f9bdf1bc66a5c1f458f4991c1dc71760e00fa06016b2c76b2738d5"
|
||||
|
||||
[[package]]
|
||||
name = "icu_experimental"
|
||||
version = "0.1.0"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "844ad7b682a165c758065d694bc4d74ac67f176da1c499a04d85d492c0f193b7"
|
||||
checksum = "ebe3d7e64892a434b08d5a58b53127e47a095ff780305f563c8c01798a1051b0"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"fixed_decimal",
|
||||
"icu_collections 1.5.0",
|
||||
"either",
|
||||
"fixed_decimal 0.7.0",
|
||||
"icu_casemap",
|
||||
"icu_collections",
|
||||
"icu_decimal",
|
||||
"icu_experimental_data",
|
||||
"icu_locid",
|
||||
"icu_locid_transform",
|
||||
"icu_normalizer 1.5.0",
|
||||
"icu_list",
|
||||
"icu_locale",
|
||||
"icu_locale_core",
|
||||
"icu_normalizer",
|
||||
"icu_pattern",
|
||||
"icu_plurals",
|
||||
"icu_properties 1.5.1",
|
||||
"icu_provider 1.5.0",
|
||||
"litemap 0.7.5",
|
||||
"icu_properties",
|
||||
"icu_provider",
|
||||
"litemap",
|
||||
"num-bigint",
|
||||
"num-rational",
|
||||
"num-traits",
|
||||
"potential_utf",
|
||||
"smallvec",
|
||||
"tinystr 0.7.6",
|
||||
"writeable 0.5.5",
|
||||
"tinystr",
|
||||
"writeable 0.6.1",
|
||||
"zerofrom",
|
||||
"zerotrie 0.1.3",
|
||||
"zerovec 0.10.4",
|
||||
"zerotrie",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_experimental_data"
|
||||
version = "0.1.1"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "121df92eafb8f5286d4e8ff401c1e7db8384377f806db3f8db77b91e5b7bd4dd"
|
||||
checksum = "b60d32ba5610adfc2083f5a759f55d9a9082ebf72750f126cb1630844eea1acf"
|
||||
|
||||
[[package]]
|
||||
name = "icu_list"
|
||||
version = "1.5.0"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bbfeda1d7775b6548edd4e8b7562304a559a91ed56ab56e18961a053f367c365"
|
||||
checksum = "e26f94ec776bb8b28cedc7dcf91033b822c5cb4c1783cf7a3f796fc168aa0c8b"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"icu_list_data",
|
||||
"icu_locid_transform",
|
||||
"icu_provider 1.5.0",
|
||||
"regex-automata 0.2.0",
|
||||
"writeable 0.5.5",
|
||||
"icu_locale",
|
||||
"icu_provider",
|
||||
"regex-automata 0.4.10",
|
||||
"serde",
|
||||
"writeable 0.6.1",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_list_data"
|
||||
version = "1.5.1"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "52b1a7fbdbf3958f1be8354cb59ac73f165b7b7082d447ff2090355c9a069120"
|
||||
checksum = "5a456a2412458ca45e181d9d51c5090ef8cd90f5692e11d34bafab3b3be1c76b"
|
||||
|
||||
[[package]]
|
||||
name = "icu_locale"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6ae5921528335e91da1b6c695dbf1ec37df5ac13faa3f91e5640be93aa2fbefd"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"icu_collections",
|
||||
"icu_locale_core",
|
||||
"icu_locale_data",
|
||||
"icu_provider",
|
||||
"potential_utf",
|
||||
"tinystr",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_locale_core"
|
||||
|
|
@ -3709,62 +3738,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"litemap 0.8.0",
|
||||
"tinystr 0.8.1",
|
||||
"litemap",
|
||||
"tinystr",
|
||||
"writeable 0.6.1",
|
||||
"zerovec 0.11.4",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_locid"
|
||||
version = "1.5.0"
|
||||
name = "icu_locale_data"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"litemap 0.7.5",
|
||||
"tinystr 0.7.6",
|
||||
"writeable 0.5.5",
|
||||
"zerovec 0.10.4",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_locid_transform"
|
||||
version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"icu_locid",
|
||||
"icu_locid_transform_data",
|
||||
"icu_provider 1.5.0",
|
||||
"tinystr 0.7.6",
|
||||
"zerovec 0.10.4",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_locid_transform_data"
|
||||
version = "1.5.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d"
|
||||
|
||||
[[package]]
|
||||
name = "icu_normalizer"
|
||||
version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"icu_collections 1.5.0",
|
||||
"icu_normalizer_data 1.5.1",
|
||||
"icu_properties 1.5.1",
|
||||
"icu_provider 1.5.0",
|
||||
"smallvec",
|
||||
"utf16_iter",
|
||||
"utf8_iter",
|
||||
"write16",
|
||||
"zerovec 0.10.4",
|
||||
]
|
||||
checksum = "4fdef0c124749d06a743c69e938350816554eb63ac979166590e2b4ee4252765"
|
||||
|
||||
[[package]]
|
||||
name = "icu_normalizer"
|
||||
|
|
@ -3773,20 +3757,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"icu_collections 2.0.0",
|
||||
"icu_normalizer_data 2.0.0",
|
||||
"icu_properties 2.0.1",
|
||||
"icu_provider 2.0.0",
|
||||
"icu_collections",
|
||||
"icu_normalizer_data",
|
||||
"icu_properties",
|
||||
"icu_provider",
|
||||
"smallvec",
|
||||
"zerovec 0.11.4",
|
||||
"utf16_iter",
|
||||
"utf8_iter",
|
||||
"write16",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_normalizer_data"
|
||||
version = "1.5.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7"
|
||||
|
||||
[[package]]
|
||||
name = "icu_normalizer_data"
|
||||
version = "2.0.0"
|
||||
|
|
@ -3795,51 +3776,36 @@ checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3"
|
|||
|
||||
[[package]]
|
||||
name = "icu_pattern"
|
||||
version = "0.2.0"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cb7f36aafd098d6717de34e668a8120822275c1fba22b936e757b7de8a2fd7e4"
|
||||
checksum = "983825f401e6bc4a13c45d552ffd9ad6f3f6b6bc0ec03f31d6835a90a46deb1f"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"either",
|
||||
"writeable 0.5.5",
|
||||
"yoke 0.7.5",
|
||||
"zerofrom",
|
||||
"writeable 0.6.1",
|
||||
"yoke",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_plurals"
|
||||
version = "1.5.0"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ba5a70e7c025dbd5c501b0a5c188cd11666a424f0dadcd4f0a95b7dafde3b114"
|
||||
checksum = "0fd83a65f58b6f28e1f3da8c6ada6b415ee3ad5cb480b75bdb669f34d72dd179"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"fixed_decimal",
|
||||
"icu_locid_transform",
|
||||
"fixed_decimal 0.7.0",
|
||||
"icu_locale",
|
||||
"icu_plurals_data",
|
||||
"icu_provider 1.5.0",
|
||||
"zerovec 0.10.4",
|
||||
"icu_provider",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_plurals_data"
|
||||
version = "1.5.1"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a483403238cb7d6a876a77a5f8191780336d80fe7b8b00bfdeb20be6abbfd112"
|
||||
|
||||
[[package]]
|
||||
name = "icu_properties"
|
||||
version = "1.5.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"icu_collections 1.5.0",
|
||||
"icu_locid_transform",
|
||||
"icu_properties_data 1.5.1",
|
||||
"icu_provider 1.5.0",
|
||||
"tinystr 0.7.6",
|
||||
"zerovec 0.10.4",
|
||||
]
|
||||
checksum = "9ec552d761eaf4a1c39ad28936e0af77a41bf01ff756ea54be4f8bfc21c265d7"
|
||||
|
||||
[[package]]
|
||||
name = "icu_properties"
|
||||
|
|
@ -3848,44 +3814,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"icu_collections 2.0.0",
|
||||
"icu_collections",
|
||||
"icu_locale_core",
|
||||
"icu_properties_data 2.0.1",
|
||||
"icu_provider 2.0.0",
|
||||
"icu_properties_data",
|
||||
"icu_provider",
|
||||
"potential_utf",
|
||||
"zerotrie 0.2.2",
|
||||
"zerovec 0.11.4",
|
||||
"zerotrie",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_properties_data"
|
||||
version = "1.5.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2"
|
||||
|
||||
[[package]]
|
||||
name = "icu_properties_data"
|
||||
version = "2.0.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632"
|
||||
|
||||
[[package]]
|
||||
name = "icu_provider"
|
||||
version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"icu_locid",
|
||||
"icu_provider_macros",
|
||||
"stable_deref_trait",
|
||||
"tinystr 0.7.6",
|
||||
"writeable 0.5.5",
|
||||
"yoke 0.7.5",
|
||||
"zerofrom",
|
||||
"zerovec 0.10.4",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_provider"
|
||||
version = "2.0.0"
|
||||
|
|
@ -3895,67 +3838,63 @@ dependencies = [
|
|||
"displaydoc",
|
||||
"icu_locale_core",
|
||||
"stable_deref_trait",
|
||||
"tinystr 0.8.1",
|
||||
"tinystr",
|
||||
"writeable 0.6.1",
|
||||
"yoke 0.8.0",
|
||||
"yoke",
|
||||
"zerofrom",
|
||||
"zerotrie 0.2.2",
|
||||
"zerovec 0.11.4",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_provider_macros"
|
||||
version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.106",
|
||||
"zerotrie",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_segmenter"
|
||||
version = "1.5.0"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a717725612346ffc2d7b42c94b820db6908048f39434504cb130e8b46256b0de"
|
||||
checksum = "e185fc13b6401c138cf40db12b863b35f5edf31b88192a545857b41aeaf7d3d3"
|
||||
dependencies = [
|
||||
"core_maths",
|
||||
"displaydoc",
|
||||
"icu_collections 1.5.0",
|
||||
"icu_locid",
|
||||
"icu_provider 1.5.0",
|
||||
"icu_collections",
|
||||
"icu_locale",
|
||||
"icu_locale_core",
|
||||
"icu_provider",
|
||||
"icu_segmenter_data",
|
||||
"potential_utf",
|
||||
"utf8_iter",
|
||||
"zerovec 0.10.4",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_segmenter_data"
|
||||
version = "1.5.1"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a1e52775179941363cc594e49ce99284d13d6948928d8e72c755f55e98caa1eb"
|
||||
checksum = "5360a2fbe97f617c4f8b944356dedb36d423f7da7f13c070995cf89e59f01220"
|
||||
|
||||
[[package]]
|
||||
name = "icu_timezone"
|
||||
version = "1.5.0"
|
||||
name = "icu_time"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "aa91ba6a585939a020c787235daa8aee856d9bceebd6355e283c0c310bc6de96"
|
||||
checksum = "10d01a4a2dcbc5e5180ef113920e7461d0e9caaddb3567d81c4eca262efe55c0"
|
||||
dependencies = [
|
||||
"calendrical_calculations",
|
||||
"displaydoc",
|
||||
"icu_calendar",
|
||||
"icu_provider 1.5.0",
|
||||
"icu_timezone_data",
|
||||
"tinystr 0.7.6",
|
||||
"zerotrie 0.1.3",
|
||||
"zerovec 0.10.4",
|
||||
"icu_locale_core",
|
||||
"icu_provider",
|
||||
"icu_time_data",
|
||||
"ixdtf",
|
||||
"serde",
|
||||
"tinystr",
|
||||
"writeable 0.6.1",
|
||||
"zerotrie",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icu_timezone_data"
|
||||
version = "1.5.1"
|
||||
name = "icu_time_data"
|
||||
version = "2.0.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1adcf7b613a268af025bc2a2532b4b9ee294e6051c5c0832d8bff20ac0232e68"
|
||||
checksum = "8472be4410d26a03d7208cae3a76c798dd6766e8226ab977cd8b2d349a6dbf08"
|
||||
|
||||
[[package]]
|
||||
name = "ident_case"
|
||||
|
|
@ -3980,8 +3919,8 @@ version = "1.2.1"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
|
||||
dependencies = [
|
||||
"icu_normalizer 2.0.0",
|
||||
"icu_properties 2.0.1",
|
||||
"icu_normalizer",
|
||||
"icu_properties",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -4225,6 +4164,15 @@ version = "1.0.15"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
|
||||
|
||||
[[package]]
|
||||
name = "ixdtf"
|
||||
version = "0.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8289f7f711a1a51f80e2e368355d023042ca55d8d554fd5e953f01464c15842d"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "jni"
|
||||
version = "0.21.1"
|
||||
|
|
@ -4735,12 +4683,6 @@ version = "0.9.4"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12"
|
||||
|
||||
[[package]]
|
||||
name = "litemap"
|
||||
version = "0.7.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856"
|
||||
|
||||
[[package]]
|
||||
name = "litemap"
|
||||
version = "0.8.0"
|
||||
|
|
@ -6015,7 +5957,8 @@ version = "0.1.2"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585"
|
||||
dependencies = [
|
||||
"zerovec 0.11.4",
|
||||
"serde",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -6470,15 +6413,6 @@ dependencies = [
|
|||
"regex-syntax 0.6.29",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex-automata"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e9368763f5a9b804326f3af749e16f9abf378d227bcdee7634b13d8f17793782"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex-automata"
|
||||
version = "0.4.10"
|
||||
|
|
@ -7567,16 +7501,6 @@ dependencies = [
|
|||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tinystr"
|
||||
version = "0.7.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"zerovec 0.10.4",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tinystr"
|
||||
version = "0.8.1"
|
||||
|
|
@ -7584,7 +7508,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"zerovec 0.11.4",
|
||||
"zerovec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -7838,7 +7762,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "dce1bf08044d4b7a94028c93786f8566047edc11110595914de93362559bc658"
|
||||
dependencies = [
|
||||
"serde",
|
||||
"tinystr 0.8.1",
|
||||
"tinystr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -9034,15 +8958,15 @@ name = "writeable"
|
|||
version = "0.5.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51"
|
||||
dependencies = [
|
||||
"either",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "writeable"
|
||||
version = "0.6.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb"
|
||||
dependencies = [
|
||||
"either",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wyz"
|
||||
|
|
@ -9192,18 +9116,6 @@ version = "0.2.1"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e01738255b5a16e78bbb83e7fbba0a1e7dd506905cfc53f4622d89015a03fbb5"
|
||||
|
||||
[[package]]
|
||||
name = "yoke"
|
||||
version = "0.7.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40"
|
||||
dependencies = [
|
||||
"serde",
|
||||
"stable_deref_trait",
|
||||
"yoke-derive 0.7.5",
|
||||
"zerofrom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "yoke"
|
||||
version = "0.8.0"
|
||||
|
|
@ -9212,22 +9124,10 @@ checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc"
|
|||
dependencies = [
|
||||
"serde",
|
||||
"stable_deref_trait",
|
||||
"yoke-derive 0.8.0",
|
||||
"yoke-derive",
|
||||
"zerofrom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "yoke-derive"
|
||||
version = "0.7.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.106",
|
||||
"synstructure",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "yoke-derive"
|
||||
version = "0.8.0"
|
||||
|
|
@ -9428,17 +9328,6 @@ version = "1.8.1"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
|
||||
|
||||
[[package]]
|
||||
name = "zerotrie"
|
||||
version = "0.1.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fb594dd55d87335c5f60177cee24f19457a5ec10a065e0a3014722ad252d0a1f"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"yoke 0.7.5",
|
||||
"zerofrom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerotrie"
|
||||
version = "0.2.2"
|
||||
|
|
@ -9446,41 +9335,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595"
|
||||
dependencies = [
|
||||
"displaydoc",
|
||||
"yoke 0.8.0",
|
||||
"yoke",
|
||||
"zerofrom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerovec"
|
||||
version = "0.10.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079"
|
||||
dependencies = [
|
||||
"yoke 0.7.5",
|
||||
"zerofrom",
|
||||
"zerovec-derive 0.10.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerovec"
|
||||
version = "0.11.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b"
|
||||
dependencies = [
|
||||
"yoke 0.8.0",
|
||||
"yoke",
|
||||
"zerofrom",
|
||||
"zerovec-derive 0.11.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerovec-derive"
|
||||
version = "0.10.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.106",
|
||||
"zerovec-derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
|
|||
|
|
@ -91,8 +91,8 @@ num-derive = "0.4"
|
|||
pwhash = "1"
|
||||
|
||||
[dependencies.icu]
|
||||
version = "1.5.0"
|
||||
features = ["experimental", "compiled_data", "icu_datetime_experimental"]
|
||||
version = "2.0.0"
|
||||
features = ["compiled_data"]
|
||||
|
||||
[dependencies.i18n-embed]
|
||||
version = "0.16.0"
|
||||
|
|
|
|||
|
|
@ -14,9 +14,13 @@ use cosmic::{
|
|||
};
|
||||
use cosmic_settings_page::{self as page, Section, section};
|
||||
use icu::{
|
||||
calendar::{DateTime, Iso, types::IsoWeekday, week},
|
||||
datetime::DateTimeFormatter,
|
||||
locid::Locale,
|
||||
calendar::{Gregorian, types::Weekday, week},
|
||||
datetime::{
|
||||
DateTimeFormatter, DateTimeFormatterPreferences, fieldsets,
|
||||
input::{Date, DateTime, Time},
|
||||
options::TimePrecision,
|
||||
},
|
||||
locale::{Locale, preferences::extensions::unicode::keywords::HourCycle},
|
||||
};
|
||||
use slab::Slab;
|
||||
use slotmap::{Key, SlotMap};
|
||||
|
|
@ -43,7 +47,7 @@ pub struct Page {
|
|||
ntp_enabled: bool,
|
||||
show_date_in_top_panel: bool,
|
||||
timezone_context: bool,
|
||||
local_time: Option<DateTime<Iso>>,
|
||||
local_time: Option<DateTime<Gregorian>>,
|
||||
timezone: Option<usize>,
|
||||
timezone_list: Vec<String>,
|
||||
timezone_search: String,
|
||||
|
|
@ -513,67 +517,51 @@ fn locale() -> Result<Locale, Box<dyn std::error::Error>> {
|
|||
Ok(locale)
|
||||
}
|
||||
|
||||
fn format_date(date: &DateTime<Iso>, military: bool, show_seconds: bool) -> String {
|
||||
fn format_date(date: &DateTime<Gregorian>, military: bool, show_seconds: bool) -> String {
|
||||
let Ok(locale) = locale() else {
|
||||
return String::new();
|
||||
};
|
||||
|
||||
let mut bag = icu::datetime::options::components::Bag::empty();
|
||||
let mut prefs = DateTimeFormatterPreferences::from(locale);
|
||||
prefs.hour_cycle = Some(if military {
|
||||
HourCycle::H23
|
||||
} else {
|
||||
HourCycle::H12
|
||||
});
|
||||
|
||||
bag.year = Some(icu::datetime::options::components::Year::Numeric);
|
||||
bag.day = Some(icu::datetime::options::components::Day::NumericDayOfMonth);
|
||||
bag.month = Some(icu::datetime::options::components::Month::Long);
|
||||
bag.hour = Some(icu::datetime::options::components::Numeric::Numeric);
|
||||
bag.minute = Some(icu::datetime::options::components::Numeric::Numeric);
|
||||
bag.second = show_seconds.then_some(icu::datetime::options::components::Numeric::Numeric);
|
||||
bag.preferences = Some(icu::datetime::options::preferences::Bag::from_hour_cycle(
|
||||
if military {
|
||||
icu::datetime::options::preferences::HourCycle::H23
|
||||
} else {
|
||||
icu::datetime::options::preferences::HourCycle::H12
|
||||
},
|
||||
));
|
||||
let mut fs = fieldsets::YMDT::long();
|
||||
if !show_seconds {
|
||||
fs = fs.with_time_precision(TimePrecision::Minute);
|
||||
}
|
||||
|
||||
let dtf = DateTimeFormatter::try_new_experimental(&locale.into(), bag.into()).unwrap();
|
||||
let dtf = DateTimeFormatter::try_new(prefs, fs).unwrap();
|
||||
|
||||
dtf.format(&date.to_any())
|
||||
.expect("can't format value")
|
||||
.to_string()
|
||||
dtf.format(date).to_string()
|
||||
}
|
||||
|
||||
fn update_local_time() -> DateTime<Iso> {
|
||||
fn update_local_time() -> DateTime<Gregorian> {
|
||||
let now = chrono::Local::now();
|
||||
|
||||
DateTime::try_new_gregorian_datetime(
|
||||
now.year(),
|
||||
now.month() as u8,
|
||||
now.day() as u8,
|
||||
now.hour() as u8,
|
||||
now.minute() as u8,
|
||||
now.second() as u8,
|
||||
)
|
||||
.unwrap()
|
||||
.to_iso()
|
||||
DateTime {
|
||||
date: Date::try_new_gregorian(now.year(), now.month() as u8, now.day() as u8).unwrap(),
|
||||
time: Time::try_new(now.hour() as u8, now.minute() as u8, now.second() as u8, 0).unwrap(),
|
||||
}
|
||||
}
|
||||
|
||||
fn get_locale_default_24h() -> bool {
|
||||
let Ok(locale) = locale() else { return false };
|
||||
|
||||
let test_time = icu::calendar::DateTime::try_new_gregorian_datetime(2024, 1, 1, 13, 0, 0)
|
||||
.unwrap()
|
||||
.to_iso();
|
||||
let test_time = DateTime {
|
||||
date: Date::try_new_gregorian(2024, 1, 1).unwrap(),
|
||||
time: Time::try_new(13, 0, 0, 0).unwrap(),
|
||||
};
|
||||
|
||||
let bag = icu::datetime::options::length::Bag::from_time_style(
|
||||
icu::datetime::options::length::Time::Medium,
|
||||
);
|
||||
|
||||
let Ok(dtf) =
|
||||
icu::datetime::DateTimeFormatter::try_new_experimental(&locale.into(), bag.into())
|
||||
else {
|
||||
let prefs = DateTimeFormatterPreferences::from(locale);
|
||||
let Ok(dtf) = DateTimeFormatter::try_new(prefs, fieldsets::T::medium()) else {
|
||||
return false;
|
||||
};
|
||||
|
||||
let formatted = dtf.format(&test_time.to_any()).unwrap().to_string();
|
||||
let formatted = dtf.format(&test_time).to_string();
|
||||
|
||||
// If we see "13" in the output, it's 24-hour format
|
||||
// If we see "1" (but not "13"), it's 12-hour format
|
||||
|
|
@ -582,17 +570,17 @@ fn get_locale_default_24h() -> bool {
|
|||
|
||||
fn get_locale_default_first_day() -> usize {
|
||||
let Ok(locale) = locale() else { return 6 };
|
||||
let Ok(week_calc) = week::WeekCalculator::try_new(&locale.into()) else {
|
||||
let Ok(week_info) = week::WeekInformation::try_new(week::WeekPreferences::from(&locale)) else {
|
||||
return 6;
|
||||
};
|
||||
|
||||
match week_calc.first_weekday {
|
||||
IsoWeekday::Monday => 0,
|
||||
IsoWeekday::Tuesday => 1,
|
||||
IsoWeekday::Wednesday => 2,
|
||||
IsoWeekday::Thursday => 3,
|
||||
IsoWeekday::Friday => 4,
|
||||
IsoWeekday::Saturday => 5,
|
||||
IsoWeekday::Sunday => 6,
|
||||
match week_info.first_weekday {
|
||||
Weekday::Monday => 0,
|
||||
Weekday::Tuesday => 1,
|
||||
Weekday::Wednesday => 2,
|
||||
Weekday::Thursday => 3,
|
||||
Weekday::Friday => 4,
|
||||
Weekday::Saturday => 5,
|
||||
Weekday::Sunday => 6,
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,16 +15,14 @@ use cosmic_config::{ConfigGet, ConfigSet};
|
|||
use cosmic_settings_page::Section;
|
||||
use cosmic_settings_page::{self as page, section};
|
||||
use eyre::Context;
|
||||
use fixed_decimal::FixedDecimal;
|
||||
use icu::calendar::DateTime;
|
||||
use icu::datetime::options::components::{self, Bag};
|
||||
use icu::datetime::options::length;
|
||||
use icu::datetime::{DateTimeFormatter, DateTimeFormatterOptions};
|
||||
use icu::decimal::FixedDecimalFormatter;
|
||||
use icu::decimal::options::FixedDecimalFormatterOptions;
|
||||
use icu::{
|
||||
calendar::{types::IsoWeekday, week},
|
||||
locid::Locale,
|
||||
calendar::{types::Weekday, week},
|
||||
datetime::{
|
||||
DateTimeFormatter, DateTimeFormatterPreferences, fieldsets,
|
||||
input::{Date, DateTime, Time},
|
||||
},
|
||||
decimal::{DecimalFormatter, input::Decimal},
|
||||
locale::Locale,
|
||||
};
|
||||
use locales_rs as locale;
|
||||
use slotmap::{DefaultKey, SlotMap};
|
||||
|
|
@ -409,27 +407,19 @@ impl Page {
|
|||
.next()
|
||||
.unwrap_or("en_US");
|
||||
|
||||
let Ok(locale) = icu::locid::Locale::from_str(time_locale) else {
|
||||
let Ok(locale) = Locale::from_str(time_locale) else {
|
||||
return String::new();
|
||||
};
|
||||
|
||||
let mut bag = Bag::empty();
|
||||
bag.day = Some(components::Day::TwoDigitDayOfMonth);
|
||||
bag.month = Some(components::Month::TwoDigit);
|
||||
bag.year = Some(components::Year::Numeric);
|
||||
let prefs = DateTimeFormatterPreferences::from(locale);
|
||||
let dtf = DateTimeFormatter::try_new(prefs, fieldsets::YMD::medium()).unwrap();
|
||||
|
||||
let options = icu::datetime::DateTimeFormatterOptions::Components(bag);
|
||||
let datetime = DateTime {
|
||||
date: Date::try_new_gregorian(1776, 7, 4).unwrap(),
|
||||
time: Time::try_new(12, 0, 0, 0).unwrap(),
|
||||
};
|
||||
|
||||
let dtf = DateTimeFormatter::try_new_experimental(&locale.into(), options).unwrap();
|
||||
|
||||
let datetime = DateTime::try_new_gregorian_datetime(1776, 7, 4, 12, 0, 0)
|
||||
.unwrap()
|
||||
.to_iso()
|
||||
.to_any();
|
||||
|
||||
dtf.format(&datetime)
|
||||
.expect("can't format value")
|
||||
.to_string()
|
||||
dtf.format(&datetime).to_string()
|
||||
}
|
||||
|
||||
fn formatted_dates_and_times(&self) -> String {
|
||||
|
|
@ -442,23 +432,19 @@ impl Page {
|
|||
.next()
|
||||
.unwrap_or("en_US");
|
||||
|
||||
let Ok(locale) = icu::locid::Locale::from_str(time_locale) else {
|
||||
let Ok(locale) = Locale::from_str(time_locale) else {
|
||||
return String::new();
|
||||
};
|
||||
|
||||
let bag = length::Bag::from_date_time_style(length::Date::Long, length::Time::Medium);
|
||||
let options = DateTimeFormatterOptions::Length(bag);
|
||||
let prefs = DateTimeFormatterPreferences::from(locale);
|
||||
let dtf = DateTimeFormatter::try_new(prefs, fieldsets::YMDT::long()).unwrap();
|
||||
|
||||
let dtf = DateTimeFormatter::try_new_experimental(&locale.into(), options).unwrap();
|
||||
let datetime = DateTime {
|
||||
date: Date::try_new_gregorian(1776, 7, 4).unwrap(),
|
||||
time: Time::try_new(13, 0, 0, 0).unwrap(),
|
||||
};
|
||||
|
||||
let datetime = DateTime::try_new_gregorian_datetime(1776, 7, 4, 13, 0, 0)
|
||||
.unwrap()
|
||||
.to_iso()
|
||||
.to_any();
|
||||
|
||||
dtf.format(&datetime)
|
||||
.expect("can't format value")
|
||||
.to_string()
|
||||
dtf.format(&datetime).to_string()
|
||||
}
|
||||
|
||||
fn formatted_time(&self) -> String {
|
||||
|
|
@ -471,22 +457,19 @@ impl Page {
|
|||
.next()
|
||||
.unwrap_or("en_US");
|
||||
|
||||
let Ok(locale) = icu::locid::Locale::from_str(time_locale) else {
|
||||
let Ok(locale) = Locale::from_str(time_locale) else {
|
||||
return String::new();
|
||||
};
|
||||
|
||||
let options = length::Bag::from_time_style(length::Time::Medium);
|
||||
let prefs = DateTimeFormatterPreferences::from(locale);
|
||||
let dtf = DateTimeFormatter::try_new(prefs, fieldsets::T::medium()).unwrap();
|
||||
|
||||
let dtf = DateTimeFormatter::try_new_experimental(&locale.into(), options.into()).unwrap();
|
||||
let datetime = DateTime {
|
||||
date: Date::try_new_gregorian(1776, 7, 4).unwrap(),
|
||||
time: Time::try_new(13, 0, 0, 0).unwrap(),
|
||||
};
|
||||
|
||||
let datetime = DateTime::try_new_gregorian_datetime(1776, 7, 4, 13, 0, 0)
|
||||
.unwrap()
|
||||
.to_iso()
|
||||
.to_any();
|
||||
|
||||
dtf.format(&datetime)
|
||||
.expect("can't format value")
|
||||
.to_string()
|
||||
dtf.format(&datetime).to_string()
|
||||
}
|
||||
|
||||
fn formatted_numbers(&self) -> String {
|
||||
|
|
@ -499,13 +482,12 @@ impl Page {
|
|||
.next()
|
||||
.unwrap_or("en_US");
|
||||
|
||||
let Ok(locale) = icu::locid::Locale::from_str(numerical_locale) else {
|
||||
let Ok(locale) = Locale::from_str(numerical_locale) else {
|
||||
return String::new();
|
||||
};
|
||||
|
||||
let options = FixedDecimalFormatterOptions::default();
|
||||
let formatter = FixedDecimalFormatter::try_new(&locale.into(), options).unwrap();
|
||||
let mut value = FixedDecimal::from(123456789);
|
||||
let formatter = DecimalFormatter::try_new(locale.into(), Default::default()).unwrap();
|
||||
let mut value = Decimal::from(123456789);
|
||||
value.multiply_pow10(-2);
|
||||
|
||||
formatter.format(&value).to_string()
|
||||
|
|
@ -967,24 +949,17 @@ fn get_default_24h(locale: String) -> bool {
|
|||
return false;
|
||||
};
|
||||
|
||||
let test_time = icu::calendar::DateTime::try_new_gregorian_datetime(2024, 1, 1, 13, 0, 0)
|
||||
.unwrap()
|
||||
.to_iso();
|
||||
let test_time = DateTime {
|
||||
date: Date::try_new_gregorian(2024, 1, 1).unwrap(),
|
||||
time: Time::try_new(13, 0, 0, 0).unwrap(),
|
||||
};
|
||||
|
||||
let bag = icu::datetime::options::length::Bag::from_time_style(
|
||||
icu::datetime::options::length::Time::Medium,
|
||||
);
|
||||
|
||||
let Ok(dtf) =
|
||||
icu::datetime::DateTimeFormatter::try_new_experimental(&locale.into(), bag.into())
|
||||
else {
|
||||
let prefs = DateTimeFormatterPreferences::from(locale);
|
||||
let Ok(dtf) = DateTimeFormatter::try_new(prefs, fieldsets::T::medium()) else {
|
||||
return false;
|
||||
};
|
||||
|
||||
let formatted = match dtf.format(&test_time.to_any()) {
|
||||
Ok(formatted) => formatted.to_string(),
|
||||
Err(_) => return false,
|
||||
};
|
||||
let formatted = dtf.format(&test_time).to_string();
|
||||
|
||||
// If we see "13" in the output, it's 24-hour format
|
||||
// If we see "1" (but not "13"), it's 12-hour format
|
||||
|
|
@ -995,18 +970,18 @@ fn get_default_first_day(locale: String) -> usize {
|
|||
let Ok(locale) = parse_locale(locale) else {
|
||||
return 6;
|
||||
};
|
||||
let Ok(week_calc) = week::WeekCalculator::try_new(&locale.into()) else {
|
||||
let Ok(week_info) = week::WeekInformation::try_new(week::WeekPreferences::from(&locale)) else {
|
||||
return 6;
|
||||
};
|
||||
|
||||
match week_calc.first_weekday {
|
||||
IsoWeekday::Monday => 0,
|
||||
IsoWeekday::Tuesday => 1,
|
||||
IsoWeekday::Wednesday => 2,
|
||||
IsoWeekday::Thursday => 3,
|
||||
IsoWeekday::Friday => 4,
|
||||
IsoWeekday::Saturday => 5,
|
||||
IsoWeekday::Sunday => 6,
|
||||
match week_info.first_weekday {
|
||||
Weekday::Monday => 0,
|
||||
Weekday::Tuesday => 1,
|
||||
Weekday::Wednesday => 2,
|
||||
Weekday::Thursday => 3,
|
||||
Weekday::Friday => 4,
|
||||
Weekday::Saturday => 5,
|
||||
Weekday::Sunday => 6,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue