Compare commits

..

147 Commits

Author SHA1 Message Date
zyphlar
d0106905c1 lower thread count for less OOM
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-03 19:39:53 -08:00
zyphlar
982009f3c0 add zulip bot, remove commented-out depdencencies
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-03 13:14:09 -08:00
zyphlar
eb1bda4d1b create force reclone option
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-03 10:53:44 -08:00
Konstantin Pastbin
bc10ca3b8c [generator] Fix SUBWAY_URL location
Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
2025-11-03 10:40:50 -08:00
zyphlar
b28c0cae65 comments, cleanup
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-03 10:40:50 -08:00
zyphlar
410b027bf8 python path fixes
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-03 10:40:50 -08:00
zyphlar
edaef67283 add geo dependency, bump docker
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-03 10:40:50 -08:00
zyphlar
8a1855add6 specify docker image version
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-03 10:40:50 -08:00
zyphlar
6049ab28cf Use 64 threads for the Features stage (pastk)
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-03 10:40:50 -08:00
zyphlar
a6ed71553a provide python dev to subways script
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-03 10:40:50 -08:00
zyphlar
c11b1558aa clean up remaining old paths
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 15:57:53 -08:00
zyphlar
d317286024 hardcode a different, easier wikipedia descriptions path
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:45:16 -08:00
zyphlar
a58f1674dc draft of removing old map versions from CDNs
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:45:16 -08:00
zyphlar
8c2adfd984 quadruple Taiwan_North threadcount
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:45:16 -08:00
zyphlar
40e74d032b go back to old script, fix wildcard in find
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:45:16 -08:00
zyphlar
e07413eda5 use new rclone script
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:45:16 -08:00
zyphlar
19da703a24 remove syntax error in docker script
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:45:16 -08:00
zyphlar
7aee6ab160 Set mapgen timeout to 28 days later
Signed-off-by: zyphlar <zyphlar@noreply.codeberg.org>
2025-11-02 11:45:16 -08:00
zyphlar
156fc52831 fix shopt error
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:45:16 -08:00
zyphlar
88638feba1 pathing
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:45:16 -08:00
zyphlar
1d39c726c2 debug
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:45:16 -08:00
zyphlar
056f1cf75a Change Docker to debian due to ubuntu outage; migrate map-generator paths, images. Consolidate dependencies.
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:45:16 -08:00
zyphlar
af2e923783 sort and add all dependencies
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:45:16 -08:00
zyphlar
af5cf0cc4b Homogenize symlinked maps_build and osm-maps path
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:45:16 -08:00
zyphlar
e6d3e75ed4 Change organicmaps path to comaps-init so relative paths don't suck so bad
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:45:15 -08:00
zyphlar
0c8cbdc3de Fix pathing issue with CI/CD
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:45:15 -08:00
zyphlar
29e487ac47 Handle not-yet-generated drules files; install protobuf for map generation
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:45:15 -08:00
zyphlar
d55f04be89 Add message to planet o5m
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:45:15 -08:00
zyphlar
14868e1eae Pull full paths from git
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:45:15 -08:00
zyphlar
b4314a0587 Go back to sane path fix for subways; pull latest repos as needed
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:45:15 -08:00
zyphlar
fef0872ca4 Fix tiger and subway scripts
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:45:15 -08:00
zyphlar
36a8425b06 debug runner issue
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:45:15 -08:00
zyphlar
378f144761 Debugging subways and wiki download
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:45:15 -08:00
zyphlar
362dae7925 fix subway csv path, tiger python
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:45:15 -08:00
zyphlar
2391e1c4e3 fix osm planet o5m task
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:45:15 -08:00
zyphlar
3c0b6ae782 Fix generator ci bugs, uploading
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:45:14 -08:00
Yannik Bloscheck
d85922f775 [styles] Recircle icons
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-11-02 11:45:14 -08:00
Yannik Bloscheck
bbd69ced6c [styles] Recategorize icons
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-11-02 11:45:12 -08:00
zyphlar
31b60be3e8 Docker fixes 2025-11-02 11:44:41 -08:00
zyphlar
03adb37007 Settings change
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:44:41 -08:00
Konstantin Pastbin
d153579a2b [generator] Skip World map download and symbols regen
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:44:41 -08:00
Konstantin Pastbin
d1eb1582ad [generator] Update conf path
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:44:41 -08:00
zyphlar
5bf59d3f53 Update generator scripts for docker/prod
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:44:41 -08:00
zyphlar
d6fcaaa7ec Add docker run script
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:44:41 -08:00
Konstantin Pastbin
1f7a93ff77 Increase Features threads from 12 to 16
Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
2025-11-02 11:44:41 -08:00
zyphlar
80ec3057ef Update tools/unix/docker_maps_generator.sh
Signed-off-by: zyphlar <zyphlar@noreply.codeberg.org>
2025-11-02 11:44:41 -08:00
zyphlar
f579e7ed94 Tweaks, get subway hooks proper
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:44:41 -08:00
Konstantin Pastbin
957fcbf6bf Update subways path
Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
2025-11-02 11:44:41 -08:00
Konstantin Pastbin
c58c3c01dd Update INI
Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
2025-11-02 11:44:41 -08:00
zyphlar
115a05a57a Fix s3 variables
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:44:41 -08:00
zyphlar
80c0932231 Map generation mostly working, but slow and not doing full planet with add-ins yet
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:44:41 -08:00
zyphlar
144b27adde On-server tweaks
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:44:41 -08:00
zyphlar
18075e7c8f Add files to automatically generate maps with Docker
Signed-off-by: zyphlar <zyphlar@gmail.com>
2025-11-02 11:44:40 -08:00
x7z4w
4567079c65 [search] Add synonym
Signed-off-by: x7z4w <x7z4w@noreply.codeberg.org>
2025-11-02 15:21:23 +01:00
Yannik Bloscheck
fd5c2e6cd1 [styles] Also using circled icon for water parks
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-11-02 12:56:42 +01:00
Jean-Baptiste
ab4cae961f Release notes for 2nd October release
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2025-11-01 21:29:24 +01:00
Codeberg Translate
1f0c202f62 [strings] Update from Codeberg Translate
Co-authored-by: Codeberg Translate <translate@codeberg.org>
Co-authored-by: ERYpTION <eryption@noreply.codeberg.org>
Co-authored-by: Edgarsons <edgarsons@noreply.codeberg.org>
Co-authored-by: JanezPavelZebovec <janezpavelzebovec@noreply.codeberg.org>
Co-authored-by: Juno Takano <jutty@noreply.codeberg.org>
Co-authored-by: Kachelkaiser <kachelkaiser@noreply.codeberg.org>
Co-authored-by: Outbreak2096 <outbreak2096@noreply.codeberg.org>
Co-authored-by: Prefill add-on <noreply-addon-prefill@weblate.org>
Co-authored-by: ToninoThePro <toninothepro@noreply.codeberg.org>
Co-authored-by: Weblate <noreply-mt-weblate@weblate.org>
Co-authored-by: Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>
Co-authored-by: aoxa <aoxa@noreply.codeberg.org>
Co-authored-by: guille11 <guille11@noreply.codeberg.org>
Co-authored-by: hippietivu <hippietivu@noreply.codeberg.org>
Co-authored-by: matheusgomesms <matheusgomesms@noreply.codeberg.org>
Co-authored-by: ovl-005 <ovl-005@noreply.codeberg.org>
Co-authored-by: sunsand <sunsand@noreply.codeberg.org>
Co-authored-by: tagomagic <tagomagic@noreply.codeberg.org>
Co-authored-by: teletext <teletext@noreply.codeberg.org>
Co-authored-by: x7z4w <x7z4w@noreply.codeberg.org>
Co-authored-by: 玄枵 <ipmlosion@noreply.codeberg.org>
Translation: CoMaps/Android - Map Feature Types
Translation: CoMaps/Android UI Strings
Translation: CoMaps/Android UI Strings (SDK)
Translation: CoMaps/Countries and regions names
Translation: CoMaps/F-Droid app description
Translation: CoMaps/Voice announcements for navigation (TTS)
Translation: CoMaps/iOS - Map Feature Types
Translation: CoMaps/iOS Plist
Translation: CoMaps/iOS Plurals
Translation: CoMaps/iOS UI Strings
2025-11-01 18:58:21 +00:00
Yannik Bloscheck
d9354e0bd1 [drape] Don't apply bus reference when there is no main title
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-11-01 19:58:01 +01:00
Jean-Baptiste
f443d3a207 [planet] Update map data to 251028
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2025-11-01 11:16:46 +01:00
Jean-Baptiste
98fe26f4ab [android] Remove useless tools property in views
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2025-11-01 10:28:12 +01:00
map-per
f6be1b0ebf Hide charging sockets in editor until #2368 is fixed
Signed-off-by: map-per <map-per@gmx.de>
2025-11-01 09:48:44 +01:00
Yannik Bloscheck
0e3b6264b8 [styles] Fix event venue label color
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-10-31 20:13:46 +01:00
Jean-Baptiste
f5edbb33f8 [android] Remove old webp used on unused views
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2025-10-31 13:46:24 +01:00
Yannik Bloscheck
81c59fe2c9 [styles] Deduplicate colored labels
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-10-30 12:53:53 +01:00
Alexander Borsuk
25d004f7b3 Add OM version to uploaded OSM notes
Signed-off-by: Alexander Borsuk <me@alex.bio>
2025-10-30 11:22:58 +01:00
x7z4w
210b4df8b2 [drape] Fix sqrt constexpr
Signed-off-by: x7z4w <x7z4w@noreply.codeberg.org>
2025-10-29 10:17:15 +00:00
Jean-Baptiste
12b9504daa [android] Unify border radius in navigation
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2025-10-29 06:33:33 +01:00
x7z4w
ae9dc62b54 [strings] Add synonyms
Signed-off-by: x7z4w <x7z4w@noreply.codeberg.org>
2025-10-28 22:17:28 +01:00
x7z4w
42f059f8f7 [core] Use constexpr when possible
Signed-off-by: x7z4w <x7z4w@noreply.codeberg.org>
2025-10-28 22:11:19 +01:00
Dobri Dabar
936e05283c [desktop] Sort map languages in the dropdown list in preferences
Signed-off-by: Dobri Dabar <dobridabar@noreply.codeberg.org>
2025-10-28 21:38:28 +01:00
Codeberg Translate
6cee8ee389 [strings] Update from Codeberg Translate
Co-authored-by: Codeberg Translate <translate@codeberg.org>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: JanezPavelZebovec <janezpavelzebovec@noreply.codeberg.org>
Co-authored-by: Prefill add-on <noreply-addon-prefill@weblate.org>
Co-authored-by: Priit Jõerüüt <jrtcdbrg@noreply.codeberg.org>
Co-authored-by: Weblate <noreply-mt-weblate@weblate.org>
Co-authored-by: Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>
Co-authored-by: javnik <javnik@noreply.codeberg.org>
Translation: CoMaps/Android - Map Feature Types
Translation: CoMaps/Android UI Strings
Translation: CoMaps/iOS - Map Feature Types
Translation: CoMaps/iOS UI Strings
2025-10-28 18:11:24 +00:00
Yannik Bloscheck
d92a26739b [styles] Fix wrong icon for guest houses as certain zoom levels
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-10-28 14:05:55 +01:00
Yannik Bloscheck
be906c7973 [styles] Fix wrong label color for massage salons
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-10-28 14:05:55 +01:00
x7z4w
d1ff4f8c60 [strings] Add default language to countries
Signed-off-by: x7z4w <x7z4w@noreply.codeberg.org>
2025-10-28 13:22:59 +01:00
Codeberg Translate
9b29191e63 [strings] Update from Codeberg Translate
Co-authored-by: Alexey Ladygin <nitrodox@noreply.codeberg.org>
Co-authored-by: Anonymous <anonymous@noreply.codeberg.org>
Co-authored-by: Burak Onder <burakonder@noreply.codeberg.org>
Co-authored-by: Codeberg Translate <translate@codeberg.org>
Co-authored-by: ERYpTION <eryption@noreply.codeberg.org>
Co-authored-by: Edgarsons <edgarsons@noreply.codeberg.org>
Co-authored-by: Edison_Lu <edison_lu@noreply.codeberg.org>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: JanezPavelZebovec <janezpavelzebovec@noreply.codeberg.org>
Co-authored-by: Juno Takano <jutty@noreply.codeberg.org>
Co-authored-by: Mickael81 <mickael81@noreply.codeberg.org>
Co-authored-by: N4ta <codeberg@n4ta.anonaddy.me>
Co-authored-by: Outbreak2096 <outbreak2096@noreply.codeberg.org>
Co-authored-by: Pamputt <pamputt@noreply.codeberg.org>
Co-authored-by: Prefill add-on <noreply-addon-prefill@weblate.org>
Co-authored-by: Priit Jõerüüt <jrtcdbrg@noreply.codeberg.org>
Co-authored-by: Stzyxh <stzyxh@noreply.codeberg.org>
Co-authored-by: ToninoThePro <toninothepro@noreply.codeberg.org>
Co-authored-by: Weblate <noreply-mt-weblate@weblate.org>
Co-authored-by: Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>
Co-authored-by: codebergian42 <codebergian42@noreply.codeberg.org>
Co-authored-by: dobridabar <dobridabar@noreply.codeberg.org>
Co-authored-by: gedankenstuecke <gedankenstuecke@noreply.codeberg.org>
Co-authored-by: hectodium <hectodium@noreply.codeberg.org>
Co-authored-by: ikanakova <ikanakova@noreply.codeberg.org>
Co-authored-by: jeanbaptisteC <jeanbaptistec@noreply.codeberg.org>
Co-authored-by: ldmpub <ldmpub@noreply.codeberg.org>
Co-authored-by: loscati <loscati@noreply.codeberg.org>
Co-authored-by: map-per <map-per@noreply.codeberg.org>
Co-authored-by: matheusgomesms <matheusgomesms@noreply.codeberg.org>
Co-authored-by: metehan <metehan@noreply.codeberg.org>
Co-authored-by: oleg-rswll <oleg-rswll@noreply.codeberg.org>
Co-authored-by: ovl-005 <ovl-005@noreply.codeberg.org>
Co-authored-by: patepelo <patepelo@noreply.codeberg.org>
Co-authored-by: paulb <paulb@noreply.codeberg.org>
Co-authored-by: phama <phama@noreply.codeberg.org>
Co-authored-by: polarwood <polarwood@noreply.codeberg.org>
Co-authored-by: rimas <rimas@noreply.codeberg.org>
Co-authored-by: summoner <summoner@noreply.codeberg.org>
Co-authored-by: teletext <teletext@noreply.codeberg.org>
Co-authored-by: tsobuskerudbyen <tsobuskerudbyen@noreply.codeberg.org>
Co-authored-by: x7z4w <x7z4w@noreply.codeberg.org>
Co-authored-by: yurtpage <yurtpage@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/comaps/android-typestrings/
Translate-URL: https://translate.codeberg.org/projects/comaps/ios-typestrings/
Translate-URL: https://translate.codeberg.org/projects/comaps/ios/
Translate-URL: https://translate.codeberg.org/projects/comaps/search-synonyms-aliases/
Translation: CoMaps/Android - Map Feature Types
Translation: CoMaps/Android UI Strings
Translation: CoMaps/Android UI Strings (SDK)
Translation: CoMaps/Apple AppStore description
Translation: CoMaps/Countries and regions names
Translation: CoMaps/F-Droid app description
Translation: CoMaps/Google Play and Huawei AppGallery descriptions
Translation: CoMaps/Search synonyms / aliases
Translation: CoMaps/Voice announcements for navigation (TTS)
Translation: CoMaps/iOS - Map Feature Types
Translation: CoMaps/iOS Plist
Translation: CoMaps/iOS Plurals
Translation: CoMaps/iOS UI Strings
2025-10-28 12:10:42 +00:00
Jean-Baptiste
73accecfd4 [android] Remove call to fullscreen theme
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2025-10-28 13:09:51 +01:00
Yannik Bloscheck
495d3e91fd [styles] Fix white road shields in dark mode
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-10-28 11:43:46 +01:00
Yannik Bloscheck
7c92cdafa6 [styles] Fix broken key cutter icon in dark mode
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-10-28 10:05:15 +01:00
map-per
310287e918 [editor] remove error messages from CS comment and enforce OSM 255 char length limit (#919)
Signed-off-by: map-per <map-per@gmx.de>
2025-10-28 08:53:29 +01:00
Jean-Baptiste
bab74782f8 [android] Remove title list in description list view
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2025-10-28 06:44:50 +01:00
Yannik Bloscheck
647b66cbd0 [styles] Adding lounger
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-10-27 20:49:51 +01:00
Yannik Bloscheck
7bd8f8064a [styles] Fix showing ruins icon when castles are also ruins
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-10-27 20:44:02 +01:00
Jean-Baptiste
2b5930dff8 [android] Support drawable in PlaceHolderView
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2025-10-27 20:22:40 +01:00
Yannik Bloscheck
d4ac51cc02 [styles] Added guest house icon
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-10-27 10:32:39 +01:00
patepelo
09ab8322be edit link to support
Signed-off-by: patepelo <developing.anton@gmail.com>

added RU changes
2025-10-27 14:15:41 +08:00
map-per
5886d15e88 [styles] Add disused business POIs (e.g. disused:shop)
Signed-off-by: map-per <map-per@gmx.de>
2025-10-26 16:22:22 +01:00
map-per
da7c3d6710 [strings] Update category names for amenity=studio and shop=coffee
Signed-off-by: map-per <map-per@gmx.de>
2025-10-26 15:38:47 +01:00
x7z4w
b806ab7443 [search] Separate cafe/restaurant
Signed-off-by: x7z4w <x7z4w@noreply.codeberg.org>
2025-10-26 14:52:36 +01:00
Yannik Bloscheck
da68f01ff9 [styles] Show building names only from zoom level 17 on
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-10-26 14:31:24 +01:00
Yannik Bloscheck
44dc71066c [styles] Add event venue icon
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-10-26 13:14:53 +01:00
Yannik Bloscheck
c0396e96c6 [styles] Work around missing support for =no
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-10-26 13:05:38 +01:00
Jean-Baptiste
1b66a9ac73 [android] Replace settings icon with edit icon on edit list menu
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2025-10-26 10:24:24 +01:00
Jean-Baptiste
22a28d75cc [android] Remove focus to app version when we open about screen
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2025-10-25 23:11:13 +02:00
Yannik Bloscheck
a730fccf76 Revert "[types] Add cuisines"
This reverts commit 1d80478eac.
2025-10-25 20:19:57 +02:00
Jean-Baptiste
ae14c05559 Remove speed cameras for some countries
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2025-10-25 18:22:00 +02:00
Jean-Baptiste
9d908b5e3d Update french categories
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2025-10-25 18:12:41 +02:00
Yannik Bloscheck
3e67c82517 [styles] Recategorize icons
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-10-25 16:20:39 +02:00
Yannik Bloscheck
5962d60e42 [styles] Recategorize icons
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-10-25 16:04:11 +02:00
Yannik Bloscheck
e0ee0d9f57 [styles] Add bandstands
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-10-25 16:02:15 +02:00
Yannik Bloscheck
1d80478eac [types] Add cuisines
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-10-25 15:53:05 +02:00
Yannik Bloscheck
2daf40479a [styles] Show police and fire stations earlier
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-10-25 15:41:42 +02:00
Yannik Bloscheck
5e7a30df8f [styles] Show drinking water from zoom level 17
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-10-25 15:38:54 +02:00
Yannik Bloscheck
35d4e8af8b [styles] Add bandstands
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-10-25 15:31:50 +02:00
Yannik Bloscheck
20bfa0a1ad [styles] Add backless bench
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-10-25 15:23:53 +02:00
Yannik Bloscheck
363f892752 [styles] Add specific icon for massage salons
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-10-25 15:10:36 +02:00
Yannik Bloscheck
d01ed97e34 [styles] Recategorize icons
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-10-25 13:11:06 +02:00
map-per
6e12ede1d9 rewrite level validation to support more than one value and ranges
Signed-off-by: map-per <map-per@gmx.de>
2025-10-25 10:38:30 +02:00
zyphlar
90dbfd6311 Use protobuf, new branch
Signed-off-by: zyphlar <zyphlar@noreply.codeberg.org>
2025-10-25 02:56:46 +02:00
zyphlar
45cf6130f0 Add map generator ci/cd script
Supports semi-generic runners (that have /media/4tbexternal mapped)

Signed-off-by: zyphlar <zyphlar@noreply.codeberg.org>
2025-10-24 15:42:15 -07:00
Jean-Baptiste
8a6ce5a561 [android] Add margin around title on the first screen
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2025-10-24 22:23:15 +02:00
Jean-Baptiste
5bf4a8296c [android] Fix icon tint of edit bookmark button
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2025-10-24 17:47:31 +02:00
x7z4w
a6314cc53a [core] Fix warning
Signed-off-by: x7z4w <x7z4w@noreply.codeberg.org>
2025-10-24 11:39:24 +02:00
map-per
2820fbac46 Add attribution for OSM Carto (#2237)
Signed-off-by: map-per <map-per@gmx.de>
2025-10-23 17:50:51 +02:00
eisa01
7afb1df917 [core] Only include branch in search highlight range on iOS
Can be removed when other platforms incorporate branch in UI

Signed-off-by: eisa01 <eisa01@gmail.com>
2025-10-23 17:24:37 +02:00
x7z4w
042d497a5e [search] Add multi-token synonyms
Signed-off-by: x7z4w <x7z4w@noreply.codeberg.org>
Co-authored-by: patepelo <developing.anton@gmail.com>
2025-10-23 13:13:56 +02:00
Yannik Bloscheck
6dcf4b039e [styles] Show public transport stop reference on map
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-10-23 12:57:19 +02:00
Yannik Bloscheck
44f0db083f [styles] Making railway tunnels more inconspicuous
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-10-23 12:56:40 +02:00
Yannik Bloscheck
1c4b2ea991 [styles] Add specific icon for light rail
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-10-23 12:56:18 +02:00
Yannik Bloscheck
658c3c0af8 [styles] Added custom road shields for Italian autostrada
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-10-23 12:56:06 +02:00
Yannik Bloscheck
f6e7580aff [styles] Add pill shapes for road shields (and reorganized the existing logic)
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-10-23 12:56:06 +02:00
Jean-Baptiste
8e5c1a4d17 Reorganize and clean maxspeed:type values
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2025-10-23 10:01:18 +02:00
x7z4w
239332edb4 [generator] Support more maxspeed from the wiki
Signed-off-by: x7z4w <x7z4w@noreply.codeberg.org>
2025-10-23 10:01:18 +02:00
Jean-Baptiste
564c6203eb [generator] Support more maxspeed type in the world
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2025-10-23 10:01:18 +02:00
Isira Seneviratne
c727fd7f20 [android] Simplify TTS code using AudioManagerCompat
Signed-off-by: Isira Seneviratne <31027858+Isira-Seneviratne@users.noreply.github.com>
2025-10-23 09:54:16 +02:00
javnik
5cd9f1274b [routing] Support PL:expressway instead of PL:trunk
Signed-off-by: javnik <javnik@noreply.codeberg.org>
2025-10-22 16:38:35 +02:00
Jean-Baptiste
c8a965c855 [android] Update Android dependencies
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2025-10-22 12:07:23 +02:00
map-per
0d4099b555 Use map selection instead of mapObject center as OSM note position
Signed-off-by: map-per <map-per@gmx.de>
2025-10-21 19:27:15 +02:00
x7z4w
08bdf41bae [build] Do not build tests on release
Signed-off-by: x7z4w <x7z4w@noreply.codeberg.org>
2025-10-21 19:14:47 +02:00
Jean-Baptiste
6d28928f58 [android] Remove end icon in dialog socket view
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2025-10-21 18:39:40 +02:00
Jean-Baptiste
d748e4f4f2 [android] Bump targetSDK to 36
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2025-10-21 11:32:52 +02:00
Jean-Baptiste
a373a3151d [android] Use SVG assets for avoid icons
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2025-10-21 07:24:32 +02:00
lluka
7b1ed86a5f [android] Make from- and to-time pickers save input mode while picking time
Signed-off-by: lluka <lluka@noreply.codeberg.org>
2025-10-20 22:04:23 +02:00
lluka
0eaa770b21 [android] Use MaterialTimePicker when editing opening hours
Signed-off-by: lluka <lluka@noreply.codeberg.org>
2025-10-20 22:04:23 +02:00
Jean-Baptiste
be3205a82d [android] Use material divider instead view with background
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2025-10-20 18:58:46 +02:00
Bastian Greshake Tzovaras
dc20e576f7 [taginfo] update for CoMaps
Signed-off-by: Bastian Greshake Tzovaras <bgreshake@googlemail.com>
2025-10-20 16:11:42 +02:00
David Martinez
7915b85f58 [taginfo] Fix timestamp format 2025-10-20 16:11:42 +02:00
David Martinez
6fe73a2e5c [taginfo] Add generate_taginfo.py
Signed-off-by: David Martinez <47610359+dvdmrtnz@users.noreply.github.com>
2025-10-20 16:11:42 +02:00
Jean-Baptiste
9dc3ccae4f [doc] Remove custom color to see red color when CI fails
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2025-10-20 14:57:02 +02:00
map-per
448f21bb44 update docs
Signed-off-by: map-per <map-per@gmx.de>
2025-10-20 13:58:38 +02:00
Jean-Baptiste
b5d65a0f78 [android] Improve edit bookmark button on the place page
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2025-10-19 20:49:48 +02:00
Jean-Baptiste
6d774667c5 [android] Fix warnings about ColorStateList
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2025-10-19 14:22:23 +02:00
Yannik Bloscheck
053f35b519 [ios] Display navigation voice and change instructions in settings
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-10-19 13:17:27 +02:00
Jean-Baptiste
96d51dfcf9 [editor] Support more postcode format
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2025-10-19 10:40:25 +02:00
Yannik Bloscheck
cf1432cbf7 Remove speed cameras in Germany
Signed-off-by: Yannik Bloscheck <git@yannikbloscheck.com>
2025-10-19 09:32:20 +02:00
x7z4w
9ae005ac56 [map] Don't save routing viewport
Signed-off-by: x7z4w <x7z4w@noreply.codeberg.org>
2025-10-19 09:30:02 +02:00
x7z4w
bdf9a335ae [tools] Add txt to JSON categories conversion
Signed-off-by: x7z4w <x7z4w@noreply.codeberg.org>
2025-10-18 20:14:20 +00:00
Codeberg Translate
422b14d31a [strings] Update from Codeberg Translate
Co-authored-by: Codeberg Translate <translate@codeberg.org>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Prefill add-on <noreply-addon-prefill@weblate.org>
Co-authored-by: Weblate <noreply-mt-weblate@weblate.org>
Co-authored-by: dobridabar <dobridabar@noreply.codeberg.org>
Co-authored-by: matheusgomesms <matheusgomesms@noreply.codeberg.org>
Co-authored-by: patepelo <patepelo@noreply.codeberg.org>
Co-authored-by: summoner <summoner@noreply.codeberg.org>
Translation: CoMaps/Android - Map Feature Types
Translation: CoMaps/Android UI Strings
Translation: CoMaps/Countries and regions names
Translation: CoMaps/Search synonyms / aliases
Translation: CoMaps/iOS - Map Feature Types
Translation: CoMaps/iOS UI Strings
2025-10-18 18:41:37 +00:00
827 changed files with 16475 additions and 8162 deletions

View File

@@ -0,0 +1,402 @@
name: map-generator
on:
workflow_dispatch: # Manual trigger
inputs:
jobs:
description: 'Which job(s) to run right now?'
required: true
default: 'all'
type: choice
options:
- all
- clone-repos
- copy-coasts
- planet
- wiki
- isolines
- subways
- tiger
- maps
- upload
reclone:
description: 'Force a re-clone of all git repos?'
required: false
default: 'no'
type: choice
options:
- 'no'
- force
## RCLONE_CONF is multi-line text containing keys and credentials for us2,ru1,fi1,de1 servers
env:
RCLONE_CONF: ${{ secrets.RCLONE_CONF }}
WIKIMEDIA_USERNAME: ${{ secrets.WIKIMEDIA_USERNAME }}
WIKIMEDIA_PASSWORD: ${{ secrets.WIKIMEDIA_PASSWORD }}
ZULIP_BOT_EMAIL: ${{ secrets.ZULIP_BOT_EMAIL }}
ZULIP_API_KEY: ${{ secrets.ZULIP_API_KEY }}
DEBIAN_FRONTEND: noninteractive
TZ: Etc/UTC
jobs:
clone-repos:
if: inputs.jobs == 'clone-repos' || inputs.jobs == 'all'
name: Clone Git Repos
runs-on: mapfilemaker
container:
image: codeberg.org/comaps/maps_generator:96d2a38aa23d
volumes:
- /mnt/4tbexternal:/mnt/4tbexternal
concurrency:
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
- name: Clone or update main repo if necessary
shell: bash
run: |
ls -al /mnt
ls -al /mnt/4tbexternal
if [[ '${{ inputs.reclone }}' == 'force' ]]; then
rm -rf /mnt/4tbexternal/comaps-init
fi
if [ ! -d /mnt/4tbexternal/comaps-init ]; then
cd /mnt/4tbexternal
git clone --recurse-submodules --shallow-submodules -b rebase-generator-pastk-wb251027 --single-branch https://codeberg.org/comaps/comaps.git comaps-init
else
cd /mnt/4tbexternal/comaps-init && git pull origin rebase-generator-pastk-wb251027
fi
- name: Clone or update wikiparser repo if necessary
shell: bash
run: |
if [[ '${{ inputs.reclone }}' == 'force' ]]; then
rm -rf /mnt/4tbexternal/wikiparser
fi
if [ ! -d /mnt/4tbexternal/wikiparser ]; then
cd /mnt/4tbexternal
git clone https://codeberg.org/comaps/wikiparser.git
else
cd /mnt/4tbexternal/wikiparser && git pull origin main
fi
- name: Clone or update subways repo if necessary
shell: bash
run: |
if [[ '${{ inputs.reclone }}' == 'force' ]]; then
rm -rf /mnt/4tbexternal/subways
fi
if [ ! -d /mnt/4tbexternal/subways ]; then
cd /mnt/4tbexternal
git clone https://codeberg.org/comaps/subways.git
else
cd /mnt/4tbexternal/subways && git pull origin master
fi
copy-coasts:
if: inputs.jobs == 'copy-coasts' || inputs.jobs == 'all'
name: Copy Previously Generated Coasts
runs-on: mapfilemaker
container:
image: codeberg.org/comaps/maps_generator:96d2a38aa23d
volumes:
- /mnt/4tbexternal/comaps-init:/root/OM/comaps-init
- /mnt/4tbexternal/wikiparser:/root/OM/wikiparser
- /mnt/4tbexternal/osm-planet:/home/planet
- /mnt/4tbexternal/osm-maps:/root/OM/osm-maps
- /mnt/4tbexternal/subways:/root/OM/subways
- /mnt/4tbexternal/omim-build-relwithdebinfo:/root/OM/omim-build-relwithdebinfo
concurrency:
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
- name: Copy Coasts
shell: bash
run: |
if [ -f /root/OM/osm-maps/*/intermediate_data/WorldCoasts.geom ]; then
cp /root/OM/osm-maps/*/intermediate_data/WorldCoasts.geom /home/planet/latest_coasts.geom
cp /root/OM/osm-maps/*/intermediate_data/WorldCoasts.rawgeom /home/planet/latest_coasts.rawgeom
fi
update-planet:
if: inputs.jobs == 'planet' || inputs.jobs == 'all'
name: Update Planet
runs-on: mapfilemaker
container:
image: codeberg.org/comaps/maps_generator:96d2a38aa23d
volumes:
- /mnt/4tbexternal/comaps-init:/root/OM/comaps-init
- /mnt/4tbexternal/wikiparser:/root/OM/wikiparser
- /mnt/4tbexternal/osm-planet:/home/planet
- /mnt/4tbexternal/osm-maps:/root/OM/osm-maps
- /mnt/4tbexternal/subways:/root/OM/subways
- /mnt/4tbexternal/omim-build-relwithdebinfo:/root/OM/omim-build-relwithdebinfo
concurrency:
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
- name: Download Planet File if Absent
shell: bash
run: |
if [ ! -d /home/planet/planet/ ]; then
mkdir -p /home/planet/planet/
fi
if [ ! -f /home/planet/planet/planet-latest.osm.pbf ]; then
cd /home/planet/planet/
wget2 --verbose --progress=bar --continue https://ftpmirror.your.org/pub/openstreetmap/pbf/planet-latest.osm.pbf
fi
- name: Update Planet
shell: bash
run: |
cd /home/planet/planet/
pyosmium-up-to-date planet-latest.osm.pbf -o planet-latest-new.osm.pbf -vv --size 16384
mv planet-latest-new.osm.pbf planet-latest.osm.pbf
- name: Converting planet-latest.osm.pbf to planet.o5m
run: |
echo "Starting..."
cd /home/planet/planet/
osmconvert planet-latest.osm.pbf -o=planet.o5m
echo "Done."
- name: Notify Zulip
run: |
curl -X POST https://comaps.zulipchat.com/api/v1/messages \
-u $ZULIP_BOT_EMAIL:$ZULIP_API_KEY \
--data-urlencode type=stream \
--data-urlencode 'to="DevOps"' \
--data-urlencode topic=codeberg-bot \
--data-urlencode 'content=Planet update is done!'
wiki-update:
if: inputs.jobs == 'wiki' || inputs.jobs == 'all'
name: Update Wikipedia
runs-on: mapfilemaker
container:
image: codeberg.org/comaps/maps_generator:96d2a38aa23d
volumes:
- /mnt/4tbexternal/comaps-init:/root/OM/comaps-init
- /mnt/4tbexternal/wikiparser:/root/OM/wikiparser
- /mnt/4tbexternal/osm-planet:/home/planet
- /mnt/4tbexternal/osm-maps:/root/OM/osm-maps
- /mnt/4tbexternal/subways:/root/OM/subways
- /mnt/4tbexternal/omim-build-relwithdebinfo:/root/OM/omim-build-relwithdebinfo
concurrency:
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
- name: Check for planet file
shell: bash
run: |
if [ ! -f /home/planet/planet/planet-latest.osm.pbf ]; then
echo "ERROR: No file at /home/planet/planet/planet-latest.osm.pbf"
ls -al /home/planet/
ls -al /home/planet/planet/
exit 1
fi
- name: Update Wikipedia from Enterprise API
shell: bash
run: |
#todo: curl in download.sh can fail when rate limited and even save error messages to the output. need to validate.
#downloading all languages can also trigger rate limits or fail as well. needs work.
#also: a failure to download means a failure to build, and could result in no wiki descriptions etc.
#also-also: do we want to remove old wiki data in planet between builds?
mkdir -p /home/planet/wikipedia/dumps
mkdir -p /home/planet/wikipedia/build
cd /root/OM/wikiparser
ls -al
echo "Downloading ..."
./download.sh /home/planet/wikipedia/dumps
ls -al /home/planet/wikipedia/dumps/*
echo "Running ..."
./run.sh /home/planet/wikipedia/build \
/home/planet/planet/planet-latest.osm.pbf \
/home/planet/wikipedia/dumps/latest/*.tar.gz
echo "DONE"
update-isolines:
if: inputs.jobs == 'isolines' || inputs.jobs == 'all'
name: Update Isolines
runs-on: mapfilemaker
container:
image: codeberg.org/comaps/maps_generator:96d2a38aa23d
volumes:
- /mnt/4tbexternal/comaps-init:/root/OM/comaps-init
- /mnt/4tbexternal/wikiparser:/root/OM/wikiparser
- /mnt/4tbexternal/osm-planet:/home/planet
- /mnt/4tbexternal/osm-maps:/root/OM/osm-maps
- /mnt/4tbexternal/subways:/root/OM/subways
- /mnt/4tbexternal/omim-build-relwithdebinfo:/root/OM/omim-build-relwithdebinfo
concurrency:
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
# TODO: we only need to update these if our SRTM or countries change
# TODO: after update, verify that sizable files exist: /home/planet/isolines/*.isolines
- name: Update Isolines
shell: bash
run: |
cd /root/OM/comaps-init/
./tools/unix/build_omim.sh -R topography_generator_tool
rm -rf /home/planet/isolines/
mkdir /home/planet/isolines/
../omim-build-relwithdebinfo/topography_generator_tool \
--profiles_path=./data/conf/isolines/isolines-profiles.json \
--countries_to_generate_path=./data/conf/isolines/countries-to-generate.json \
--tiles_isolines_out_dir=/home/planet/isolines/tmp-tiles/ \
--countries_isolines_out_dir=/home/planet/isolines/ \
--data_dir=./data/ \
--srtm_path=/home/planet/SRTM-patched-europe/ \
--threads=22
update-subways:
if: inputs.jobs == 'subways' || inputs.jobs == 'all'
name: Update Subways
runs-on: mapfilemaker
container:
image: codeberg.org/comaps/maps_generator:96d2a38aa23d
volumes:
- /mnt/4tbexternal/comaps-init:/root/OM/comaps-init
- /mnt/4tbexternal/wikiparser:/root/OM/wikiparser
- /mnt/4tbexternal/osm-planet:/home/planet
- /mnt/4tbexternal/osm-maps:/root/OM/osm-maps
- /mnt/4tbexternal/subways:/root/OM/subways
- /mnt/4tbexternal/omim-build-relwithdebinfo:/root/OM/omim-build-relwithdebinfo
concurrency:
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
- name: Update Subways
shell: bash
run: |
cd /root/OM/comaps-init/
cp tools/unix/maps/settings.sh.prod tools/unix/maps/settings.sh
./tools/unix/maps/generate_subways.sh
update-tiger:
if: inputs.jobs == 'tiger' || inputs.jobs == 'all'
name: Update TIGER
runs-on: mapfilemaker
container:
image: codeberg.org/comaps/maps_generator:96d2a38aa23d
volumes:
- /mnt/4tbexternal/comaps-init:/root/OM/comaps-init
- /mnt/4tbexternal/wikiparser:/root/OM/wikiparser
- /mnt/4tbexternal/osm-planet:/home/planet
- /mnt/4tbexternal/osm-maps:/root/OM/osm-maps
- /mnt/4tbexternal/subways:/root/OM/subways
- /mnt/4tbexternal/omim-build-relwithdebinfo:/root/OM/omim-build-relwithdebinfo
concurrency:
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
- name: Build address_parser
shell: bash
run: |
cd /root/OM/comaps-init
rm -rf ../omim-build-relwithdebinfo/CMakeCache.txt
rm -rf ../omim-build-relwithdebinfo/CMakeFiles
./tools/unix/build_omim.sh -R address_parser_tool
- name: Update TIGER from Nominatim
shell: bash
run: |
# TODO: maybe remove old osm-planet/tiger first?
cd /home/planet/
mkdir -p tiger
wget2 https://nominatim.org/data/tiger-nominatim-preprocessed-latest.csv.tar.gz
cd /root/OM/comaps-init
tar -xOzf /home/planet/tiger-nominatim-preprocessed-latest.csv.tar.gz | /root/OM/omim-build-relwithdebinfo/address_parser_tool --output_path=/home/planet/tiger
generate-maps:
if: inputs.jobs == 'maps' || inputs.jobs == 'all'
name: Generate Maps
runs-on: mapfilemaker
timeout-minutes: 40320
container:
image: codeberg.org/comaps/maps_generator:96d2a38aa23d
volumes:
- /mnt/4tbexternal/comaps-init:/root/OM/comaps-init
- /mnt/4tbexternal/wikiparser:/root/OM/wikiparser
- /mnt/4tbexternal/osm-planet:/home/planet
- /mnt/4tbexternal/osm-maps:/root/OM/osm-maps
- /mnt/4tbexternal/subways:/root/OM/subways
- /mnt/4tbexternal/omim-build-relwithdebinfo:/root/OM/omim-build-relwithdebinfo
options: --ulimit nofile=262144:262144
concurrency:
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
- name: Make output folders if necessary
shell: bash
run: |
if [ ! -d /root/OM/osm-maps ]; then
mkdir -p /root/OM/osm-maps
fi
- name: Get SRTM if necessary
shell: bash
run: |
if [ ! -d /home/planet/SRTM-patched-europe/ ]; then
echo "ERROR: NO SRTM"
exit 1
fi
- name: Run docker_maps_generator.sh
shell: bash
run: |
cd /root/OM/comaps-init
./tools/unix/docker_maps_generator.sh
- name: Notify Zulip
run: |
curl -X POST https://comaps.zulipchat.com/api/v1/messages \
-u $ZULIP_BOT_EMAIL:$ZULIP_API_KEY \
--data-urlencode type=stream \
--data-urlencode 'to="DevOps"' \
--data-urlencode topic=codeberg-bot \
--data-urlencode 'content=Generator is done!'
upload-maps:
if: inputs.jobs == 'upload' || inputs.jobs == 'all'
name: Upload Maps
runs-on: mapfilemaker
container:
image: codeberg.org/comaps/maps_generator:96d2a38aa23d
volumes:
- /mnt/4tbexternal/comaps-init:/root/OM/comaps-init
- /mnt/4tbexternal/wikiparser:/root/OM/wikiparser
- /mnt/4tbexternal/osm-planet:/home/planet
- /mnt/4tbexternal/osm-maps:/root/OM/osm-maps
- /mnt/4tbexternal/subways:/root/OM/subways
- /mnt/4tbexternal/omim-build-relwithdebinfo:/root/OM/omim-build-relwithdebinfo
concurrency:
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
- name: Write config file
run: |
mkdir -p ~/.config/rclone/
echo "${{ secrets.RCLONE_CONF }}" > ~/.config/rclone/rclone.conf
head -n3 ~/.config/rclone/rclone.conf
- name: Upload map files to CDNs
shell: bash
run: |
shopt -s nullglob
buildfolder=$(find /root/OM/osm-maps/ -mindepth 1 -maxdepth 1 -iname "2*" -type d | sort -n -r | head -1 | cut -d/ -f5)
builddate=$(find /root/OM/osm-maps/*/ -mindepth 1 -maxdepth 1 -iname "2*" -type d | sort -n -r | head -1 | cut -d/ -f6)
mwmfiles=( /root/OM/osm-maps/$buildfolder/$builddate/*.mwm )
if (( ${#mwmfiles[@]} )); then
echo "<$(date +%T)> Uploading maps from $buildfolder/$builddate..."
cd /root/OM/comaps-init/tools/unix/maps
./upload_to_cdn.sh /root/OM/osm-maps/$buildfolder/$builddate
else
echo "<$(date +%T)> No MWM files in /root/OM/osm-maps/$buildfolder/$builddate/*.mwm, not uploading maps."
echo "<$(date +%T)> Found top level: $(ls -alt /root/OM/osm-maps/*)"
echo "<$(date +%T)> Found second level: $(ls -alt /root/OM/osm-maps/$buildfolder/*)"
fi
- name: Notify Zulip
run: |
curl -X POST https://comaps.zulipchat.com/api/v1/messages \
-u $ZULIP_BOT_EMAIL:$ZULIP_API_KEY \
--data-urlencode type=stream \
--data-urlencode 'to="DevOps"' \
--data-urlencode topic=codeberg-bot \
--data-urlencode 'content=Upload is done!'

4
.gitignore vendored
View File

@@ -9,6 +9,7 @@ Makefile.Release
object_script.*.Debug
object_script.*.Release
compile_commands.json
*.local.*
stxxl.errlog
stxxl.log
@@ -38,9 +39,6 @@ data/patterns.txt*
# Auto-generated from data/categories-strings/* by tools/unix/generate_categories.sh
data/categories.txt
# Auto-generated from data/cuisines-strings/* by tools/unix/generate_cuisines.sh
data/categories_cuisines.txt
# Compiled Python
*.pyc

View File

@@ -23,10 +23,10 @@
<img src="https://img.shields.io/github/license/comaps/comaps?style=for-the-badge&logo=opensourceinitiative&logoColor=white&color=588157" alt="License"/>
</a>
<a href="https://github.com/comaps/comaps/actions/workflows/android-check.yaml">
<img src="https://img.shields.io/github/actions/workflow/status/comaps/comaps/.github/workflows/android-check.yaml?label=Android%20Build&logo=android&logoColor=white&style=for-the-badge&color=588157" alt="Android Build Status"/>
<img src="https://img.shields.io/github/actions/workflow/status/comaps/comaps/.github/workflows/android-check.yaml?label=Android%20Build&logo=android&logoColor=white&style=for-the-badge" alt="Android Build Status"/>
</a>
<a href="https://github.com/comaps/comaps/actions/workflows/ios-check.yaml">
<img src="https://img.shields.io/github/actions/workflow/status/comaps/comaps/.github/workflows/ios-check.yaml?label=iOS%20Build&logo=apple&logoColor=white&style=for-the-badge&color=588157" alt="iOS Build Status"/>
<img src="https://img.shields.io/github/actions/workflow/status/comaps/comaps/.github/workflows/ios-check.yaml?label=iOS%20Build&logo=apple&logoColor=white&style=for-the-badge" alt="iOS Build Status"/>
</a>
<a href="https://opencollective.com/comaps">
<img src="https://img.shields.io/opencollective/all/comaps?label=Open%20Collective%20Donors&logo=opencollective&logoColor=white&style=for-the-badge&color=588157" alt="Open Collective Donors"/>

View File

@@ -0,0 +1 @@
CoMaps - Mapas ensin conexón con privacidá

View File

@@ -1,9 +0,0 @@
• Vylepšena viditelnost a uživatelské rozhraní pokynů v navigaci
• Přidána možnost vynechat kroky
• Vylepšeno vyhledávání ve více jazycích
• Přidána specifická ikona pro autobusové zastávky
• Opraveny problémy s Android Auto (prostřednictvím projektu OM)
• Vylepšen editor a opraveny drobné problémy
• Vylepšeny styly map (prostřednictvím projektu OM)
• Vylepšeny překlady aplikace
Další změny najdete v našich poznámkách k vydání Codeberg!

View File

@@ -1,9 +1,8 @@
Verbesserte Sichtbarkeit & Benutzeroberfläche für Navigationsanweisungen
Option um Treppen zu vermeiden
Verbesserte Suche in mehreren Sprachen
Spezifisches Symbol für Busbahnöfe hinzugefügt
Probleme mit Android Auto behoben (via OM)
Verbesserter Editor mit kleinere Bugfixes
Kartenstile verbessert (via OM)
• Verbesserte Übersetzungen
Für weitere Änderungen siehe Codeberg-Versionshinweise
OpenStreetMap-Daten vom 28. Oktober
Aktualisierte Karten-Icons, inkl. Farben für Unterhaltungs-, Sport- & andere Unternehmen
Informationen zu Steckdosen an EV-Ladestationen
• Symbole für Sportzentren, Veranstaltungsorte, Massagesalons, Gästehäuser und einige stillgelegte Unternehmen
Verbesserungen bei der Suche
Behebung eines Absturzes bei der Suche
Verbesserte Sprachführung während der Navigation (via OM)
Weitere Änderungen finden in unseren Codeberg-Versionshinweisen!

View File

@@ -1,9 +1,7 @@
Improved visibility and UI of instructions in navigation
Added option to avoid steps
Improved search in multiple languages
Added specific icon for bus stations
• Fixed Android Auto issues (via OM project)
• Improved editor and fix minor issues
• Improved map styles (via OM project)
• Improved app translations
Recategorized map icons including some new colors for entertainment, sports and other businesses
Display info about available sockets on charging stations
Added icons for different sport centres, event venues, massage salons, guest houses and some disused businesses
Multiple search improvements
• Fixed crash in search
• Improved voice guidance during navigation (via OM project)
Check our Codeberg release notes for more changes!

View File

@@ -1,8 +1,7 @@
Mejora de la visibilidad y la interfaz de usuario de las instrucciones de navegación
Se ha añadido la opción de evitar escaleras
Mejora de la búsqueda en varios idiomas como ES
Se ha añadido un icono específico para las estaciones de autobús
Se han solucionado los problemas de Android Auto (a través del proyecto OM)
Se ha mejorado el editor y se han solucionado pequeños problemas
• Se han mejorado los estilos de los mapas (a través del proyecto OM)
Datos OSM del 28/10
Iconos del mapa recategorizados, incluyendo nuevos colores
Visualización de información sobre enchufes disponibles en estaciones de recarga
Adición de iconos para diferentes centros deportivos, lugares de eventos, salones de masajes, posadas y algunos establecimientos comerciales desactivados
Varias mejoras y correcciones de errores en la búsqueda
Mejora en la orientación por voz durante la navegación (via OM)
Más detalles en Codeberg

View File

@@ -1,9 +1,8 @@
Interface utilisateur et visibilité des instructions en navigation améliorée
Option pour éviter les escaliers ajoutée
Recherche améliorée dans différents languages
Icône pour les gares routières ajoutée
Corrections de bugs liées à Android Auto (via OM)
Editeur amélioré et corrections de bugs
Style de la carte amélioré (via OM)
• Traductions améliorées
Données OpenStreetMap du 28 octobre
Recatégorisation des icônes sur la carte avec ajout de nouvelles couleurs pour certains types de lieux
Affichage des prises sur les bornes électriques
Ajout d'icônes pour les centres sportifs, salles d'événements, salon de massage et autres lieux
Multiple améliorations dans la recherche
Correction d'un plantage dans la recherche
Amélioration de la synthèse vocale durant la navigation (via le projet OM)
Plus d'informations sur notre Codeberg

View File

@@ -1,9 +1,7 @@
Visibilidade e interface do usuário aprimoradas para instruções na navegação
Opção adicionada para evitar degraus
Busca aprimorada em vários idiomas
• Adição de ícone específico para rodoviárias
Problemas corrigidos no Android Auto (via projeto OM)
Editor aprimorado e correção de problemas menores
• Estilos de mapa aprimorados (via projeto OM)
• Traduções aprimoradas
Confira nossas notas de lançamento do Codeberg para mais mudanças!
Dados OSM de 28/10
Ícones do mapa recategorizados, incluindo novas cores
Exibição de informações sobre tomadas disponíveis em eletropostos
• Adição de ícones para diferentes centros esportivos, locais de eventos, salões de massagem, pousadas e alguns estabelecimentos comerciais desativados
Diversas melhorias e correção de erro na busca
Melhoria na orientação por voz durante a navegação (via projeto OM)
Confira nossas notas de lançamento no Codeberg para mais detalhes!

View File

@@ -0,0 +1,32 @@
Uma aplicação pela comunidade, grátis e open-source, de mapas baseada em dados do OpenStreetMap e reforçada com compromisso para transparência, privacidade e sem fins lucrativos. CoMaps é um fork/spin-off de Organic Maps, que, por sua vez, é um fork de Maps.ME
Leia sobre as razões deste projeto e a sua direção em <b><i>codeberg.org/comaps</i></b>.
Junte-se à comunidade e ajude a fazer a melhor aplicação de mapas
• Use a aplicação e partilhe-a com outros
• Dê feedback e reporte problemas
• Atualize os dados de mapa na aplicação ou no site do OpenStreetMap
‣ <b>Simples e Polida</b>: funcionalidades essenciais fáceis que “somente funcionam”.
‣ <b>Foco Offline</b>: Planeie e navegue as suas viagens no estrangeiro sem dados móveis, procure locais numa caminhada distante, etc. Todas as funções da aplicação foram criadas com intenção de serem usadas sem internet.
‣ <b>Respeita a privacidade</b>: A aplicação foi criada com privacidade em mente — não identifica o utilizador, não rastreia, e não usa a sua informação pessoal. Sem anúncios.
‣ <b>Saves Your Battery and Space</b>: Não esgota a sua bateria ao contrário de outras aplicações. Mapas compactos salvam espaço no seu telemóvel.
‣ <b>Gratuita e Feita pela Comunidade</b>: Pessoas como si ajudam a criar a aplicação ao adicionar locais ao OpenStreetMap, testando e dando opiniões em funcionalidades e contribuindo com dotes de desenvolvimento e dinheiro.
‣ <b>Decisões e Finanças Abertas e Transparentes, Sem fins lucrativos e Open-Source.</b>
<b>Funcionalidades principais</b>:
• Mapas detalhados descarregáveis com locais que não estão disponíveis com o Google Maps
• Modo ao Ar Livre com trilhos de caminhada destacados, acampamentos, fontes de água, cumes, curvas de nível, etc
• Caminhos pedestres e ciclovias
• Pontos de interesse como restaurantes, estações de serviço, hotéis, lojas, atrações e muitos mais
• Pesquise por nome, endereço, ou por categoria de ponto de interesse
• Navegação com anúncios de voz ao caminhar, pedalar ou conduzir
• Marque os seus locais favoritos com um único clique
• Artigos da Wikipédia Offline
• Camada de metro e direções
• Gravação de Percursos
• Exportar e importar marcadores e percursos em formatos KML, KMZ, GPX
• Um modo escuro para usar durante a noite
• Melhore a informação do mapa para todos com um editor básico embebido
<b>A liberdade chegou</b>
Descubra a sua jornada, navegue o mundo com privacidade e a comunidade à frente!

View File

@@ -1,9 +0,0 @@
• Лучшая видимость и интерфейс при навигации
• Добавлена возможность пропускать шаги
• Улучшен поиск на нескольких языках
• Новый значок автостанций
• Исправлены проблемы с Android Auto (через OM)
• Улучшен редактор и исправлены мелкие недочёты
• Улучшены стили карт (через OM)
• Улучшены переводы приложения
Ознакомьтесь с примечаниями к выпуску Codeberg, чтобы узнать изменениях!

View File

@@ -1 +1 @@
Enostavna navigacija Odkrij več o svojem potovanju Podprto v skupnosti
Enostavno usmerjanje Odkrij več o svojem potovanju Podprto v skupnosti

View File

@@ -0,0 +1,36 @@
Uma aplicação pela comunidade, grátis e open-source, de mapas baseada em dados do OpenStreetMap e reforçada com compromisso para transparência, privacidade e sem fins lucrativos.
Junte-se à comunidade e ajude a fazer a melhor aplicação de mapas
• Use a aplicação e partilhe-a com outros
• Dê feedback e reporte problemas
• Atualize os dados de mapa na aplicação ou no site do OpenStreetMap
<i>O seu feedback e reviews de 5 estrelas são a melhor maneira de nos ajudar!</i>
‣ <b>Simples e Polida</b>: funcionalidades essenciais fáceis que “somente funcionam”.
‣ <b>Foco Offline</b>: Planeie e navegue as suas viagens no estrangeiro sem dados móveis, procure locais numa caminhada distante, etc. Todas as funções da aplicação foram criadas com intenção de serem usadas sem internet.
‣ <b>Respeita a privacidade</b>: A aplicação foi criada com privacidade em mente — não identifica o utilizador, não rastreia, e não usa a sua informação pessoal. Sem anúncios.
‣ <b>Saves Your Battery and Space</b>: Não esgota a sua bateria ao contrário de outras aplicações. Mapas compactos salvam espaço no seu telemóvel.
‣ <b>Gratuita e Feita pela Comunidade</b>: Pessoas como si ajudam a criar a aplicação ao adicionar locais ao OpenStreetMap, testando e dando opiniões em funcionalidades e contribuindo com dotes de desenvolvimento e dinheiro.
‣ <b>Decisões e Finanças Abertas e Transparentes, Sem fins lucrativos e Open-Source.</b>
<b>Funcionalidades principais</b>:
• Mapas detalhados descarregáveis com locais que não estão disponíveis com o Google Maps
• Modo ao Ar Livre com trilhos de caminhada destacados, acampamentos, fontes de água, cumes, curvas de nível, etc
• Caminhos pedestres e ciclovias
• Pontos de interesse como restaurantes, estações de serviço, hotéis, lojas, atrações e muitos mais
• Pesquise por nome, endereço, ou por categoria de ponto de interesse
• Navegação com anúncios de voz ao caminhar, pedalar ou conduzir
• Marque os seus locais favoritos com um único clique
• Artigos da Wikipédia Offline
• Camada de metro e direções
• Gravação de Percursos
• Exportar e importar marcadores e percursos em formatos KML, KMZ, GPX
• Um modo escuro para usar durante a noite
• Melhore a informação do mapa para todos com um editor básico embebido
• Suporte para Android Auto
Por favor, reporte problemas da aplicação, sugira ideias e junte-se à nossa comunidade no website <b><i>comaps.app</i></b>.
<b>A liberdade chegou</b>
Descubra a sua jornada, navegue o mundo com privacidade e a comunidade à frente!

View File

@@ -1 +1 @@
Enostavna navigacija Odkrij več o svojem potovanju Podprto v skupnosti
Enostavno usmerjanje Odkrij več o svojem potovanju Podprto v skupnosti

View File

@@ -1 +1 @@
CoMaps - Navigacija z zasebnostjo
CoMaps - Usmerjajte zasebno

View File

@@ -7,15 +7,9 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StyleRes;
import androidx.fragment.app.DialogFragment;
import app.organicmaps.R;
public class BaseMwmDialogFragment extends DialogFragment
{
@StyleRes
protected final int getFullscreenTheme()
{
return R.style.MwmTheme_DialogFragment_Fullscreen;
}
protected int getStyle()
{

View File

@@ -188,7 +188,7 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment<Bookmark
ArrayList<MenuBottomSheetItem> items = new ArrayList<>();
if (mSelectedCategory != null)
{
items.add(new MenuBottomSheetItem(R.string.edit, R.drawable.ic_settings,
items.add(new MenuBottomSheetItem(R.string.edit, R.drawable.ic_edit,
() -> onSettingsActionSelected(mSelectedCategory)));
items.add(new MenuBottomSheetItem(mSelectedCategory.isVisible() ? R.string.hide : R.string.show,
mSelectedCategory.isVisible() ? R.drawable.ic_hide : R.drawable.ic_show,

View File

@@ -466,12 +466,10 @@ public class BookmarkListAdapter extends RecyclerView.Adapter<Holders.BaseBookma
View desc = inflater.inflate(R.layout.item_category_description, parent, false);
MaterialTextView moreBtn = desc.findViewById(R.id.more_btn);
MaterialTextView text = desc.findViewById(R.id.text);
MaterialTextView title = desc.findViewById(R.id.title);
setMoreButtonVisibility(text, moreBtn);
holder = new Holders.DescriptionViewHolder(desc, mSectionsDataSource.getCategory());
text.setOnClickListener(v -> onMoreButtonClicked(text, moreBtn));
moreBtn.setOnClickListener(v -> onMoreButtonClicked(text, moreBtn));
title.setOnClickListener(v -> onMoreButtonClicked(text, moreBtn));
break;
}

View File

@@ -282,11 +282,11 @@ public class BookmarksListFragment extends BaseMwmRecyclerFragment<ConcatAdapter
{
if (isEmptySearchResults())
{
requirePlaceholder().setContent(R.string.search_not_found, R.string.search_not_found_query);
requirePlaceholder().setContent(R.string.search_not_found, R.string.search_not_found_query, R.drawable.ic_search_fail);
}
else if (isEmpty())
{
requirePlaceholder().setContent(R.string.bookmarks_empty_list_title, R.string.bookmarks_empty_list_message);
requirePlaceholder().setContent(R.string.bookmarks_empty_list_title, R.string.bookmarks_empty_list_message, R.drawable.ic_bookmarks);
}
boolean isEmptyRecycler = isEmpty() || isEmptySearchResults();
@@ -771,7 +771,7 @@ public class BookmarksListFragment extends BaseMwmRecyclerFragment<ConcatAdapter
items.add(new MenuBottomSheetItem(R.string.export_file_gpx, R.drawable.ic_file_gpx,
() -> onShareOptionSelected(KmlFileType.Gpx)));
}
items.add(new MenuBottomSheetItem(R.string.edit, R.drawable.ic_settings, this::onSettingsOptionSelected));
items.add(new MenuBottomSheetItem(R.string.edit, R.drawable.ic_edit, this::onSettingsOptionSelected));
if (!isLastOwnedCategory())
items.add(new MenuBottomSheetItem(R.string.delete_list, R.drawable.ic_delete, this::onDeleteOptionSelected));
return items;

View File

@@ -438,21 +438,17 @@ public class Holders
static final float SPACING_MULTIPLE = 1.0f;
static final float SPACING_ADD = 0.0f;
@NonNull
private final MaterialTextView mTitle;
@NonNull
private final MaterialTextView mDescText;
DescriptionViewHolder(@NonNull View itemView, @NonNull BookmarkCategory category)
{
super(itemView);
mDescText = itemView.findViewById(R.id.text);
mTitle = itemView.findViewById(R.id.title);
}
@Override
void bind(@NonNull SectionPosition position, @NonNull BookmarkListAdapter.SectionsDataSource sectionsDataSource)
{
mTitle.setText(sectionsDataSource.getCategory().getName());
bindDescription(sectionsDataSource.getCategory());
}
@@ -462,9 +458,12 @@ public class Holders
String formattedDesc = desc.replace("\n", "<br>");
Spanned spannedDesc = Utils.fromHtml(formattedDesc);
mDescText.setText(spannedDesc);
UiUtils.showIf(!TextUtils.isEmpty(spannedDesc), mDescText);
if (!TextUtils.isEmpty(spannedDesc)) {
mDescText.setText(spannedDesc);
}
else {
mDescText.setText(R.string.list_description_empty);
}
}
}
}

View File

@@ -222,10 +222,10 @@ public class DownloaderFragment
return;
if (mAdapter != null && mAdapter.isSearchResultsMode())
placeholder.setContent(R.string.search_not_found, R.string.search_not_found_query);
placeholder.setContent(R.string.search_not_found, R.string.search_not_found_query, R.drawable.ic_search_fail);
else
placeholder.setContent(R.string.downloader_no_downloaded_maps_title,
R.string.downloader_no_downloaded_maps_message);
R.string.downloader_no_downloaded_maps_message, R.drawable.ic_download);
}
@Override

View File

@@ -352,7 +352,8 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
{
hasChargeSockets = hasChargeSockets || (type == Metadata.MetadataType.FMD_CHARGE_SOCKETS.toInt());
}
UiUtils.showIf(hasChargeSockets, mCardChargingStation);
// Hide socket until https://codeberg.org/comaps/comaps/issues/2368 is fixed
//UiUtils.showIf(hasChargeSockets, mCardChargingStation);
setCardVisibility(mCardDetails, mDetailsBlocks, editableDetails);
setCardVisibility(mCardSocialMedia, mSocialMediaBlocks, editableDetails);

View File

@@ -0,0 +1,208 @@
package app.organicmaps.editor;
import android.content.res.Configuration;
import android.content.res.Resources;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
import com.google.android.material.timepicker.MaterialTimePicker;
import com.google.android.material.timepicker.TimeFormat;
import app.organicmaps.R;
import app.organicmaps.sdk.editor.data.HoursMinutes;
import app.organicmaps.sdk.util.DateUtils;
public class FromToTimePicker
{
private final FragmentActivity mActivity;
private final FragmentManager mFragmentManager;
private final OnPickListener mListener;
private final int mId;
private final boolean mIs24HourFormat;
private final Resources mResources;
private HoursMinutes mFromTime;
private HoursMinutes mToTime;
private MaterialTimePicker mToTimePicker;
private MaterialTimePicker mFromTimePicker;
private boolean mIsFromTimePicked;
private int mInputMode;
public static void pickTime(@NonNull Fragment fragment,
@NonNull FromToTimePicker.OnPickListener listener,
@NonNull HoursMinutes fromTime,
@NonNull HoursMinutes toTime,
int id,
boolean startWithToTime)
{
FromToTimePicker timePicker = new FromToTimePicker(fragment,
listener,
fromTime,
toTime,
id);
if (startWithToTime)
timePicker.showToTimePicker();
else
timePicker.showFromTimePicker();
}
private FromToTimePicker(@NonNull Fragment fragment,
@NonNull FromToTimePicker.OnPickListener listener,
@NonNull HoursMinutes fromTime,
@NonNull HoursMinutes toTime,
int id)
{
mActivity = fragment.requireActivity();
mFragmentManager = fragment.getChildFragmentManager();
mListener = listener;
mFromTime = fromTime;
mToTime = toTime;
mId = id;
mIsFromTimePicked = false;
mInputMode = MaterialTimePicker.INPUT_MODE_CLOCK;
mIs24HourFormat = DateUtils.is24HourFormat(mActivity);
mResources = mActivity.getResources();
mActivity.addOnConfigurationChangedListener(this::handleConfigurationChanged);
}
public void showFromTimePicker()
{
if (mFromTimePicker != null)
{
saveState(mFromTimePicker, true);
mFromTimePicker.dismiss();
}
mFromTimePicker = buildFromTimePicker();
mFromTimePicker.show(mFragmentManager, null);
}
public void showToTimePicker()
{
if (mToTimePicker != null)
{
saveState(mToTimePicker, false);
mToTimePicker.dismiss();
}
mToTimePicker = buildToTimePicker();
mToTimePicker.show(mFragmentManager, null);
}
private MaterialTimePicker buildFromTimePicker()
{
MaterialTimePicker timePicker = buildTimePicker(mFromTime,
mResources.getString(R.string.editor_time_from),
mResources.getString(R.string.next_button),
null);
timePicker.addOnNegativeButtonClickListener(view -> finishTimePicking(false));
timePicker.addOnPositiveButtonClickListener(view ->
{
mIsFromTimePicked = true;
saveState(timePicker, true);
mFromTimePicker = null;
showToTimePicker();
});
timePicker.addOnCancelListener(view -> finishTimePicking(false));
return timePicker;
}
private MaterialTimePicker buildToTimePicker()
{
MaterialTimePicker timePicker = buildTimePicker(mToTime,
mResources.getString(R.string.editor_time_to),
null,
mResources.getString(R.string.back));
timePicker.addOnNegativeButtonClickListener(view ->
{
saveState(timePicker, false);
mToTimePicker = null;
if (mIsFromTimePicked)
showFromTimePicker();
else
finishTimePicking(false);
});
timePicker.addOnPositiveButtonClickListener(view ->
{
saveState(timePicker, false);
finishTimePicking(true);
});
timePicker.addOnCancelListener(view -> finishTimePicking(false));
return timePicker;
}
@NonNull
private MaterialTimePicker buildTimePicker(@NonNull HoursMinutes time,
@NonNull String title,
@Nullable String positiveButtonTextOverride,
@Nullable String negativeButtonTextOverride)
{
MaterialTimePicker.Builder builder = new MaterialTimePicker.Builder()
.setTitleText(title)
.setTimeFormat(mIs24HourFormat ? TimeFormat.CLOCK_24H : TimeFormat.CLOCK_12H)
.setInputMode(mInputMode)
.setTheme(R.style.MwmMain_MaterialTimePicker)
.setHour((int) time.hours)
.setMinute((int) time.minutes);
if (positiveButtonTextOverride != null)
builder.setPositiveButtonText(positiveButtonTextOverride);
if (negativeButtonTextOverride != null)
builder.setNegativeButtonText(negativeButtonTextOverride);
return builder.build();
}
private void saveState(@NonNull MaterialTimePicker timePicker, boolean isFromTime)
{
mInputMode = timePicker.getInputMode();
if (isFromTime)
mFromTime = getHoursMinutes(timePicker);
else
mToTime = getHoursMinutes(timePicker);
}
private HoursMinutes getHoursMinutes(@NonNull MaterialTimePicker timePicker)
{
return new HoursMinutes(timePicker.getHour(), timePicker.getMinute(), mIs24HourFormat);
}
private void finishTimePicking(boolean isConfirmed)
{
mActivity.removeOnConfigurationChangedListener(this::handleConfigurationChanged);
if (isConfirmed)
mListener.onHoursMinutesPicked(mFromTime, mToTime, mId);
}
private void handleConfigurationChanged(Configuration configuration)
{
if (mFromTimePicker != null && mFromTimePicker.isVisible())
showFromTimePicker();
else if (mToTimePicker != null && mToTimePicker.isVisible())
showToTimePicker();
}
public interface OnPickListener
{
void onHoursMinutesPicked(HoursMinutes from, HoursMinutes to, int id);
}
}

View File

@@ -1,211 +0,0 @@
package app.organicmaps.editor;
import android.annotation.SuppressLint;
import android.app.Dialog;
import android.content.Context;
import android.content.res.ColorStateList;
import android.os.Bundle;
import android.text.format.DateFormat;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.TimePicker;
import androidx.annotation.IntRange;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.content.res.AppCompatResources;
import androidx.fragment.app.FragmentManager;
import app.organicmaps.R;
import app.organicmaps.base.BaseMwmDialogFragment;
import app.organicmaps.sdk.editor.data.HoursMinutes;
import app.organicmaps.sdk.util.DateUtils;
import app.organicmaps.util.Utils;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.tabs.TabLayout;
import com.google.android.material.textview.MaterialTextView;
public class HoursMinutesPickerFragment extends BaseMwmDialogFragment
{
private static final String EXTRA_FROM = "HoursMinutesFrom";
private static final String EXTRA_TO = "HoursMinutesTo";
private static final String EXTRA_SELECT_FIRST = "SelectedTab";
private static final String EXTRA_ID = "Id";
public static final int TAB_FROM = 0;
public static final int TAB_TO = 1;
private HoursMinutes mFrom;
private HoursMinutes mTo;
private TimePicker mPicker;
private View mPickerHoursLabel;
@IntRange(from = 0, to = 1)
private int mSelectedTab;
private TabLayout mTabs;
private int mId;
private Button mOkButton;
public interface OnPickListener
{
void onHoursMinutesPicked(HoursMinutes from, HoursMinutes to, int id);
}
public static void pick(Context context, FragmentManager manager, @NonNull HoursMinutes from,
@NonNull HoursMinutes to, @IntRange(from = 0, to = 1) int selectedPosition, int id)
{
final Bundle args = new Bundle();
args.putParcelable(EXTRA_FROM, from);
args.putParcelable(EXTRA_TO, to);
args.putInt(EXTRA_SELECT_FIRST, selectedPosition);
args.putInt(EXTRA_ID, id);
final HoursMinutesPickerFragment fragment = (HoursMinutesPickerFragment) manager.getFragmentFactory().instantiate(
context.getClassLoader(), HoursMinutesPickerFragment.class.getName());
fragment.setArguments(args);
fragment.show(manager, null);
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
readArgs();
final View root = createView();
// noinspection ConstantConditions
mTabs.getTabAt(mSelectedTab).select();
final AlertDialog dialog =
new MaterialAlertDialogBuilder(requireActivity(), R.style.MwmMain_DialogFragment_TimePicker)
.setView(root)
.setNegativeButton(R.string.cancel, null)
.setPositiveButton(R.string.ok, null)
.setCancelable(true)
.create();
dialog.setOnShowListener(dialogInterface -> {
mOkButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE);
mOkButton.setOnClickListener(v -> {
if (mSelectedTab == TAB_FROM)
{
// noinspection ConstantConditions
mTabs.getTabAt(TAB_TO).select();
return;
}
saveHoursMinutes();
dismiss();
if (getParentFragment() instanceof OnPickListener)
((OnPickListener) getParentFragment()).onHoursMinutesPicked(mFrom, mTo, mId);
});
refreshPicker();
});
return dialog;
}
private void readArgs()
{
final Bundle args = getArguments();
if (args == null)
throw new IllegalArgumentException("Args must not be null");
mFrom = Utils.getParcelable(args, EXTRA_FROM, HoursMinutes.class);
mTo = Utils.getParcelable(args, EXTRA_TO, HoursMinutes.class);
mSelectedTab = args.getInt(EXTRA_SELECT_FIRST);
mId = args.getInt(EXTRA_ID);
}
private View createView()
{
final LayoutInflater inflater = LayoutInflater.from(requireActivity());
@SuppressLint("InflateParams")
final View root = inflater.inflate(R.layout.fragment_timetable_picker, null);
mPicker = root.findViewById(R.id.picker);
mPicker.setIs24HourView(DateFormat.is24HourFormat(requireActivity()));
@SuppressLint("DiscouragedApi")
int id = getResources().getIdentifier("hours", "id", "android");
if (id != 0)
{
mPickerHoursLabel = mPicker.findViewById(id);
if (!(mPickerHoursLabel instanceof TextView))
mPickerHoursLabel = null;
}
mTabs = root.findViewById(R.id.tabs);
MaterialTextView tabView = (MaterialTextView) inflater.inflate(R.layout.tab_timepicker, mTabs, false);
tabView.setText(getResources().getString(R.string.editor_time_from));
final ColorStateList textColor =
AppCompatResources.getColorStateList(requireContext(), R.color.accent_color_selector);
tabView.setTextColor(textColor);
mTabs.addTab(mTabs.newTab().setCustomView(tabView), true);
tabView = (MaterialTextView) inflater.inflate(R.layout.tab_timepicker, mTabs, false);
tabView.setText(getResources().getString(R.string.editor_time_to));
tabView.setTextColor(textColor);
mTabs.addTab(mTabs.newTab().setCustomView(tabView), true);
mTabs.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab)
{
if (!isInit())
return;
saveHoursMinutes();
mSelectedTab = tab.getPosition();
refreshPicker();
if (mPickerHoursLabel != null)
mPickerHoursLabel.performClick();
}
@Override
public void onTabUnselected(TabLayout.Tab tab)
{}
@Override
public void onTabReselected(TabLayout.Tab tab)
{}
});
return root;
}
private void saveHoursMinutes()
{
boolean is24HourFormat = DateUtils.is24HourFormat(requireContext());
final HoursMinutes hoursMinutes =
new HoursMinutes(mPicker.getCurrentHour(), mPicker.getCurrentMinute(), is24HourFormat);
if (mSelectedTab == TAB_FROM)
mFrom = hoursMinutes;
else
mTo = hoursMinutes;
}
private boolean isInit()
{
return mOkButton != null && mPicker != null;
}
private void refreshPicker()
{
if (!isInit())
return;
HoursMinutes hoursMinutes;
int okBtnRes;
if (mSelectedTab == TAB_FROM)
{
hoursMinutes = mFrom;
okBtnRes = R.string.next_button;
}
else
{
hoursMinutes = mTo;
okBtnRes = R.string.ok;
}
mPicker.setCurrentMinute((int) hoursMinutes.minutes);
mPicker.setCurrentHour((int) hoursMinutes.hours);
mOkButton.setText(okBtnRes);
}
}

View File

@@ -6,6 +6,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.CompoundButton;
import android.widget.LinearLayout;
import androidx.annotation.IdRes;
import androidx.annotation.IntRange;
import androidx.annotation.Nullable;
@@ -29,13 +30,13 @@ import java.util.Calendar;
import java.util.List;
class SimpleTimetableAdapter extends RecyclerView.Adapter<SimpleTimetableAdapter.BaseTimetableViewHolder>
implements HoursMinutesPickerFragment.OnPickListener, TimetableProvider
implements FromToTimePicker.OnPickListener, TimetableProvider
{
private static final int TYPE_TIMETABLE = 0;
private static final int TYPE_ADD_TIMETABLE = 1;
private static final int ID_OPENING = 0;
private static final int ID_CLOSING = 1;
private static final int ID_OPENING_TIME = 0;
private static final int ID_CLOSED_SPAN = 1;
private static final int[] DAYS = {R.id.day1, R.id.day2, R.id.day3, R.id.day4, R.id.day5, R.id.day6, R.id.day7};
@@ -69,7 +70,7 @@ class SimpleTimetableAdapter extends RecyclerView.Adapter<SimpleTimetableAdapter
@Override
public String getTimetables()
{
return OpeningHours.nativeTimetablesToString(mItems.toArray(new Timetable[mItems.size()]));
return OpeningHours.nativeTimetablesToString(mItems.toArray(new Timetable[0]));
}
@Override
@@ -101,7 +102,7 @@ class SimpleTimetableAdapter extends RecyclerView.Adapter<SimpleTimetableAdapter
private void addTimetable()
{
mItems.add(OpeningHours.nativeGetComplementTimetable(mItems.toArray(new Timetable[mItems.size()])));
mItems.add(OpeningHours.nativeGetComplementTimetable(mItems.toArray(new Timetable[0])));
notifyItemInserted(mItems.size() - 1);
refreshComplement();
}
@@ -115,25 +116,31 @@ class SimpleTimetableAdapter extends RecyclerView.Adapter<SimpleTimetableAdapter
private void refreshComplement()
{
mComplementItem = OpeningHours.nativeGetComplementTimetable(mItems.toArray(new Timetable[mItems.size()]));
mComplementItem = OpeningHours.nativeGetComplementTimetable(mItems.toArray(new Timetable[0]));
notifyItemChanged(getItemCount() - 1);
}
private void pickTime(int position,
@IntRange(from = HoursMinutesPickerFragment.TAB_FROM, to = HoursMinutesPickerFragment.TAB_TO)
int tab, @IntRange(from = ID_OPENING, to = ID_CLOSING) int id)
@IntRange(from = ID_OPENING_TIME, to = ID_CLOSED_SPAN) int id,
boolean startWithToTime)
{
final Timetable data = mItems.get(position);
mPickingPosition = position;
HoursMinutesPickerFragment.pick(mFragment.requireActivity(), mFragment.getChildFragmentManager(),
data.workingTimespan.start, data.workingTimespan.end, tab, id);
FromToTimePicker.pickTime(mFragment,
this,
data.workingTimespan.start,
data.workingTimespan.end,
id,
startWithToTime);
}
@Override
public void onHoursMinutesPicked(HoursMinutes from, HoursMinutes to, int id)
{
final Timetable item = mItems.get(mPickingPosition);
if (id == ID_OPENING)
if (id == ID_OPENING_TIME)
mItems.set(mPickingPosition, OpeningHours.nativeSetOpeningTime(item, new Timespan(from, to)));
else
mItems.set(mPickingPosition, OpeningHours.nativeAddClosedSpan(item, new Timespan(from, to)));
@@ -148,7 +155,7 @@ class SimpleTimetableAdapter extends RecyclerView.Adapter<SimpleTimetableAdapter
private void addWorkingDay(int day, int position)
{
final Timetable[] tts = mItems.toArray(new Timetable[mItems.size()]);
final Timetable[] tts = mItems.toArray(new Timetable[0]);
mItems = new ArrayList<>(Arrays.asList(OpeningHours.nativeAddWorkingDay(tts, position, day)));
refreshComplement();
notifyDataSetChanged();
@@ -156,7 +163,7 @@ class SimpleTimetableAdapter extends RecyclerView.Adapter<SimpleTimetableAdapter
private void removeWorkingDay(int day, int position)
{
final Timetable[] tts = mItems.toArray(new Timetable[mItems.size()]);
final Timetable[] tts = mItems.toArray(new Timetable[0]);
mItems = new ArrayList<>(Arrays.asList(OpeningHours.nativeRemoveWorkingDay(tts, position, day)));
refreshComplement();
notifyDataSetChanged();
@@ -262,13 +269,13 @@ class SimpleTimetableAdapter extends RecyclerView.Adapter<SimpleTimetableAdapter
{
final int id = v.getId();
if (id == R.id.time_open)
pickTime(getBindingAdapterPosition(), HoursMinutesPickerFragment.TAB_FROM, ID_OPENING);
pickTime(getBindingAdapterPosition(), ID_OPENING_TIME, false);
else if (id == R.id.time_close)
pickTime(getBindingAdapterPosition(), HoursMinutesPickerFragment.TAB_TO, ID_OPENING);
pickTime(getBindingAdapterPosition(), ID_OPENING_TIME, true);
else if (id == R.id.tv__remove_timetable)
removeTimetable(getBindingAdapterPosition());
else if (id == R.id.tv__add_closed)
pickTime(getBindingAdapterPosition(), HoursMinutesPickerFragment.TAB_FROM, ID_CLOSING);
pickTime(getBindingAdapterPosition(), ID_CLOSED_SPAN, false);
else if (id == R.id.allday)
swAllday.toggle();
}

View File

@@ -8,10 +8,9 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import app.organicmaps.R;
import app.organicmaps.base.BaseMwmRecyclerFragment;
import app.organicmaps.sdk.editor.data.HoursMinutes;
public class SimpleTimetableFragment extends BaseMwmRecyclerFragment<SimpleTimetableAdapter>
implements TimetableProvider, HoursMinutesPickerFragment.OnPickListener
implements TimetableProvider
{
private SimpleTimetableAdapter mAdapter;
@Nullable
@@ -57,10 +56,4 @@ public class SimpleTimetableFragment extends BaseMwmRecyclerFragment<SimpleTimet
{
mInitTimetables = timetables;
}
@Override
public void onHoursMinutesPicked(HoursMinutes from, HoursMinutes to, int id)
{
mAdapter.onHoursMinutesPicked(from, to, id);
}
}

View File

@@ -273,7 +273,7 @@ public class SearchFragment extends BaseMwmFragment implements SearchListener, C
RecyclerView mResults = mResultsFrame.findViewById(R.id.recycler);
setRecyclerScrollListener(mResults);
mResultsPlaceholder = mResultsFrame.findViewById(R.id.placeholder);
mResultsPlaceholder.setContent(R.string.search_not_found, R.string.search_not_found_query);
mResultsPlaceholder.setContent(R.string.search_not_found, R.string.search_not_found_query, R.drawable.ic_search_fail);
mSearchAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver()
{

View File

@@ -47,7 +47,7 @@ public class SearchHistoryFragment extends BaseMwmRecyclerFragment<SearchHistory
super.onViewCreated(view, savedInstanceState);
getRecyclerView().setLayoutManager(new LinearLayoutManager(view.getContext()));
mPlaceHolder = view.findViewById(R.id.placeholder);
mPlaceHolder.setContent(R.string.search_history_title, R.string.search_history_text);
mPlaceHolder.setContent(R.string.search_history_title, R.string.search_history_text, R.drawable.ic_search_recent);
getAdapter().registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
@Override

View File

@@ -3,6 +3,7 @@ package app.organicmaps.widget;
import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
@@ -11,6 +12,7 @@ import androidx.annotation.DrawableRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.core.content.ContextCompat;
import com.google.android.material.imageview.ShapeableImageView;
import com.google.android.material.textview.MaterialTextView;
@@ -176,9 +178,10 @@ public class PlaceholderView extends LinearLayout
return view.getMeasuredHeight() + params.bottomMargin + params.topMargin;
}
public void setContent(@StringRes int titleRes, @StringRes int subtitleRes)
public void setContent(@StringRes int titleRes, @StringRes int subtitleRes, @DrawableRes int iconRes)
{
mTitle.setText(titleRes);
mSubtitle.setText(subtitleRes);
mImage.setImageDrawable(ContextCompat.getDrawable(getContext(), iconRes));
}
}

View File

@@ -1,5 +1,6 @@
package app.organicmaps.widget.placepage;
import android.app.Dialog;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
@@ -14,6 +15,7 @@ import androidx.annotation.Nullable;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.FragmentFactory;
import androidx.fragment.app.FragmentManager;
import app.organicmaps.R;
@@ -103,9 +105,9 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View.
public EditBookmarkFragment() {}
@Override
protected int getCustomTheme()
{
return getFullscreenTheme();
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NORMAL, R.style.MwmTheme_FullScreenDialog);
}
@Nullable
@@ -181,6 +183,12 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View.
public void onStart()
{
super.onStart();
Dialog dialog = getDialog();
if (dialog != null) {
dialog.getWindow().setLayout(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT);
}
// Focus name and show keyboard for "Unknown Place" bookmarks
if (mBookmark != null

View File

@@ -152,7 +152,7 @@ public class PlacePageView extends Fragment
private View mEditTopSpace;
private ShapeableImageView mColorIcon;
private MaterialTextView mTvCategory;
private ShapeableImageView mEditBookmark;
private MaterialButton mEditBookmark;
// Data
private CoordinatesFormat mCoordsFormat = CoordinatesFormat.LatLonDecimal;
@@ -691,16 +691,27 @@ public class PlacePageView extends Fragment
mTvAddPlace.setOnClickListener(this);
mTvEditPlace.setEnabled(Editor.nativeShouldEnableEditPlace());
mTvAddPlace.setEnabled(Editor.nativeShouldEnableAddPlace());
final int editPlaceButtonColor =
final int editTextButtonColor =
Editor.nativeShouldEnableEditPlace()
? ContextCompat.getColor(
getContext(),
UiUtils.getStyledResourceId(getContext(), com.google.android.material.R.attr.colorSecondary))
: ContextCompat.getColor(getContext(), R.color.button_accent_text_disabled);
mTvEditPlace.setTextColor(editPlaceButtonColor);
mTvAddPlace.setTextColor(editPlaceButtonColor);
mTvEditPlace.setStrokeColor(ColorStateList.valueOf(editPlaceButtonColor));
mTvAddPlace.setStrokeColor(ColorStateList.valueOf(editPlaceButtonColor));
final ColorStateList editStrokeButtonColor = new ColorStateList(
new int[][]{
new int[]{android.R.attr.state_enabled}, // enabled
new int[]{-android.R.attr.state_enabled} // disabled
},
new int[]{
ContextCompat.getColor(
getContext(),
UiUtils.getStyledResourceId(getContext(), com.google.android.material.R.attr.colorSecondary)),
ContextCompat.getColor(getContext(), R.color.button_accent_text_disabled)
});
mTvEditPlace.setTextColor(editTextButtonColor);
mTvAddPlace.setTextColor(editTextButtonColor);
mTvEditPlace.setStrokeColor(editStrokeButtonColor);
mTvAddPlace.setStrokeColor(editStrokeButtonColor);
UiUtils.showIf(
UiUtils.isVisible(mEditPlace) || UiUtils.isVisible(mAddPlace),
mEditTopSpace);

View File

@@ -59,8 +59,6 @@ public class PlacePageBookmarkFragment extends Fragment implements View.OnClickL
mFrame = view;
mTvBookmarkNote = mFrame.findViewById(R.id.tv__bookmark_notes);
mTvBookmarkNote.setOnLongClickListener(this);
final View editBookmarkBtn = mFrame.findViewById(R.id.tv__bookmark_edit);
editBookmarkBtn.setOnClickListener(this);
}
private void initWebView()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 520 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 620 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 594 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 414 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 402 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 690 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 826 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 814 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1016 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 B

View File

@@ -2,5 +2,5 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/bg_cards"/>
<corners android:radius="4dp"/>
<corners android:radius="8dp"/>
</shape>

View File

@@ -2,5 +2,5 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/bg_primary"/>
<corners android:radius="4dp"/>
<corners android:radius="8dp"/>
</shape>

View File

@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="80"
android:viewportHeight="80">
<path
android:fillColor="#FFF"
android:pathData="m6.778,18.994 l5.418,5.418c-2.663,4.673 -4.184,10.086 -4.184,15.858 0,9.988 4.552,18.9 11.701,24.763 -0.03,-0.193 -0.021,-0.395 0.031,-0.596 0.113,-0.434 0.412,-0.79 0.81,-0.977l0.26,-0.094c0.57,-0.219 1.076,-0.463 1.548,-0.737l0.579,-0.359 1.178,-0.808c1.482,-0.993 2.772,-1.415 4.902,-1.415 2.125,0 3.459,0.506 5.32,1.775l0.757,0.534c1.89,1.354 2.921,1.797 4.871,1.797 1.787,0 2.877,-0.387 4.506,-1.464l0.955,-0.657c1.056,-0.732 1.931,-1.241 2.826,-1.56l2.32,2.32c-1.086,0.053 -1.893,0.372 -3.075,1.144l-0.957,0.656c-2.341,1.629 -3.944,2.298 -6.576,2.298 -2.414,0 -3.892,-0.548 -5.902,-1.915l-0.798,-0.562c-1.725,-1.235 -2.624,-1.628 -4.249,-1.628 -1.392,0 -2.152,0.198 -3.039,0.734l-0.616,0.407 -0.561,0.389c-0.385,0.264 -0.713,0.475 -1.07,0.682 -0.771,0.447 -1.608,0.828 -2.576,1.152 5.265,3.839 11.755,6.103 18.786,6.103 5.782,0 11.203,-1.531 15.881,-4.209l5.409,5.408c-6.143,3.939 -13.451,6.223 -21.29,6.223 -21.729,0 -39.404,-17.627 -39.404,-39.404 0,-7.839 2.291,-15.141 6.236,-21.276zM7.342,2.707 L77.558,72.923c1.368,1.368 1.368,3.59 0,4.958 -1.368,1.368 -3.59,1.368 -4.958,0l-70.216,-70.216c-1.368,-1.368 -1.368,-3.59 0,-4.958 1.368,-1.368 3.59,-1.368 4.958,0zM39.947,0.865c21.777,0 39.453,17.627 39.453,39.404 0,7.852 -2.298,15.164 -6.257,21.305l-5.423,-5.423c2.679,-4.678 4.21,-10.1 4.21,-15.882 0,-17.676 -14.307,-31.982 -31.983,-31.982 -5.785,0 -11.204,1.533 -15.877,4.214l-5.398,-5.399c6.14,-3.948 13.445,-6.238 21.276,-6.238zM27.862,40.076 L46.428,58.64c-0.133,0.082 -0.269,0.168 -0.407,0.257l-1.038,0.71c-1.924,1.339 -3.047,1.808 -5.012,1.808 -1.773,0 -2.786,-0.366 -4.375,-1.45l-0.731,-0.516c-2.147,-1.537 -3.524,-2.14 -5.842,-2.14 -2.13,0 -3.42,0.422 -4.902,1.415l-0.515,0.355 -6.9,-16.406zM51.512,39.944 L63.237,42.673 60.57,49.002zM44.497,19.925 L50.009,19.931c0.611,0 1.146,0.407 1.309,0.996l4.901,17.731 -7.814,-1.821 -6.81,-6.81 9.468,0.004 -1.787,-6.46c-0.054,-0.196 -0.233,-0.332 -0.436,-0.332l-7.738,-0.003 -0,6.297 -2.264,-2.264 0.001,-4.033 -4.032,0.002 -3.309,-3.309zM24.309,36.523 L25.928,38.142 23.719,38.657zM41.782,14.048c0.25,0 0.453,0.203 0.453,0.453l-0.007,4.025h-4.523l0.002,-4.025c0,-0.25 0.203,-0.453 0.453,-0.453z"
android:fillType="evenOdd"/>
</vector>

View File

@@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="89"
android:viewportHeight="101">
<path
android:fillColor="#FFF"
android:fillType="evenOdd"
android:pathData="m64.75,87.76c4.1,0 6.97,1.02 10.93,3.37l1.77,1.06c1.04,0.62 1.96,1.14 2.85,1.57l0.11,0.03c1.54,0.46 2.42,2.07 1.97,3.62 -0.24,0.82 -0.83,1.49 -1.6,1.83l-0.48,0.17c-1.35,-0.51 -2.68,-1.16 -4.14,-1.98l-1.81,-1.06 -1.29,-0.78c-3.24,-1.92 -5.28,-2.65 -8.29,-2.65 -2.4,0 -4,0.57 -6.46,2.18l-1.81,1.24c-4.43,3.08 -7.46,4.35 -12.44,4.35 -4.57,0 -7.36,-1.04 -11.17,-3.62l-1.51,-1.06c-3.26,-2.34 -4.96,-3.08 -8.04,-3.08 -2.64,0 -4.07,0.37 -5.75,1.39l-1.17,0.77 -1.06,0.74c-0.73,0.5 -1.35,0.9 -2.02,1.29 -1.63,0.94 -3.41,1.73 -5.52,2.39 -1.51,-0.39 -2.42,-1.94 -2.03,-3.45 0.21,-0.82 0.78,-1.49 1.53,-1.85l0.49,-0.18c1.08,-0.41 2.04,-0.88 2.93,-1.39l1.1,-0.68 2.23,-1.53c2.81,-1.88 5.25,-2.68 9.28,-2.68 4.02,0 6.55,0.96 10.07,3.36l1.43,1.01c3.58,2.56 5.53,3.4 9.22,3.4 3.38,0 5.44,-0.73 8.53,-2.77l1.81,-1.24c3.83,-2.66 6.41,-3.76 10.38,-3.76zM44.03,44.64 L88.06,54.89 75.11,85.62c-3.67,-2.11 -6.46,-3.04 -10.36,-3.04 -3.58,0 -6.02,0.89 -9.27,3.01l-1.96,1.34c-3.64,2.53 -5.77,3.42 -9.49,3.42 -3.35,0 -5.27,-0.69 -8.28,-2.74l-1.38,-0.98c-4.06,-2.91 -6.67,-4.05 -11.06,-4.05 -4.03,0 -6.47,0.8 -9.28,2.68l-0.97,0.67 -13.06,-31.05zM52.59,11.83 L63.02,11.85c1.16,0 2.17,0.77 2.48,1.88l9.28,33.55 -30.75,-7.16 -30.76,7.16 9.28,-33.55c0.31,-1.11 1.32,-1.88 2.48,-1.88zM41.88,18.1 L27.25,18.11c-0.39,0 -0.72,0.26 -0.83,0.63l-3.38,12.22 18.84,-0.01zM46.17,18.1v12.85l18.85,0.01 -3.38,-12.22c-0.1,-0.37 -0.44,-0.63 -0.83,-0.63zM47.46,0.71c0.47,0 0.86,0.38 0.86,0.86l-0.01,7.62h-8.56l0,-7.62c0,-0.47 0.38,-0.86 0.86,-0.86z" />
</vector>

View File

@@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="89"
android:viewportHeight="101">
<path
android:fillColor="#FFF"
android:fillType="evenOdd"
android:pathData="m65.11,87.89c2.22,0 4.09,0.3 5.95,0.95l2.49,2.49c1.86,1.86 4.38,2.67 6.81,2.42l0.29,0.15 0.11,0.03c1.54,0.46 2.42,2.07 1.97,3.62 -0.24,0.82 -0.83,1.49 -1.6,1.83l-0.48,0.17c-1.35,-0.51 -2.68,-1.16 -4.14,-1.98l-1.81,-1.06 -1.29,-0.78c-3.24,-1.92 -5.28,-2.65 -8.29,-2.65 -2.4,0 -4,0.57 -6.46,2.18l-1.81,1.24c-4.43,3.08 -7.46,4.35 -12.44,4.35 -4.57,0 -7.36,-1.04 -11.17,-3.62l-1.51,-1.06c-3.26,-2.34 -4.96,-3.08 -8.04,-3.08 -2.64,0 -4.07,0.37 -5.75,1.39l-1.17,0.77 -1.06,0.74c-0.73,0.5 -1.35,0.9 -2.02,1.29 -1.63,0.94 -3.41,1.73 -5.52,2.39 -1.51,-0.39 -2.42,-1.94 -2.03,-3.45 0.21,-0.82 0.78,-1.49 1.53,-1.85l0.49,-0.18c1.08,-0.41 2.04,-0.88 2.93,-1.39l1.1,-0.68 2.23,-1.53c2.81,-1.88 5.25,-2.68 9.28,-2.68 4.02,0 6.55,0.96 10.07,3.36l1.43,1.01c3.58,2.56 5.53,3.4 9.22,3.4 3.38,0 5.44,-0.73 8.53,-2.77l1.81,-1.24c3.83,-2.66 6.41,-3.76 10.38,-3.76zM30.27,48.05 L64.93,82.71 64.7,82.71c-3.36,0.07 -5.74,0.97 -8.86,3l-1.96,1.34c-3.64,2.53 -5.77,3.42 -9.49,3.42 -3.35,0 -5.27,-0.69 -8.28,-2.74l-1.38,-0.98c-4.06,-2.91 -6.67,-4.05 -11.06,-4.05 -4.03,0 -6.47,0.8 -9.28,2.68l-0.97,0.67 -13.06,-31.05zM11.76,12.69 L81.98,82.9c1.37,1.37 1.37,3.59 0,4.96 -1.37,1.37 -3.59,1.37 -4.96,0l-70.22,-70.22c-1.37,-1.37 -1.37,-3.59 0,-4.96s3.59,-1.37 4.96,0zM52.7,46.7 L88.42,55.01 80.3,74.29zM52.95,11.96 L63.38,11.97c1.16,0 2.17,0.77 2.48,1.88l9.28,33.55 -28.32,-6.6 -9.73,-9.73 5.16,-0v-12.85l-14.64,0.01c-0.39,0 -0.72,0.26 -0.83,0.63l-0.42,1.5 -4.11,-4.11 0.66,-2.39c0.31,-1.11 1.32,-1.88 2.48,-1.88zM17.1,34.88 L26.61,44.39 13.63,47.41zM46.53,18.23v12.85l18.85,0.01 -3.38,-12.22c-0.1,-0.37 -0.44,-0.63 -0.83,-0.63zM47.82,0.84c0.47,0 0.86,0.38 0.86,0.86l-0.01,7.62h-8.56l0,-7.62c0,-0.47 0.38,-0.86 0.86,-0.86z" />
</vector>

View File

@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="80"
android:viewportHeight="80">
<path
android:fillColor="#FFF"
android:pathData="m6.682,18.589 l5.418,5.418c-2.663,4.673 -4.184,10.086 -4.184,15.858 0,17.676 14.258,31.982 31.934,31.982 5.782,0 11.204,-1.531 15.882,-4.21l5.408,5.408c-6.143,3.939 -13.451,6.223 -21.29,6.223 -21.729,0 -39.404,-17.627 -39.404,-39.404 0,-7.839 2.291,-15.141 6.236,-21.276zM7.246,2.303 L77.461,72.519c1.368,1.368 1.368,3.59 0,4.958 -1.368,1.368 -3.59,1.368 -4.958,0l-70.216,-70.216c-1.368,-1.368 -1.368,-3.59 0,-4.958 1.368,-1.368 3.59,-1.368 4.958,0zM42.002,53.908 L50.794,62.7 42.266,62.701zM26.358,38.264 L37.87,49.776 37.482,62.701h-16.745zM39.85,0.461c21.777,0 39.453,17.627 39.453,39.404 0,7.852 -2.298,15.164 -6.257,21.305l-5.423,-5.424c2.679,-4.678 4.21,-10.1 4.21,-15.882 0,-17.676 -14.307,-31.982 -31.983,-31.982 -5.785,0 -11.204,1.533 -15.877,4.214l-5.398,-5.399c6.14,-3.948 13.445,-6.238 21.276,-6.238zM52.291,33.485 L54.361,42.485 45.36,33.484zM61.882,27.266v3.827h-2.871v2.871h-3.827v-2.871l-12.216,-0 -3.827,-3.827zM20.737,32.643 L22.057,33.963 20.737,33.963zM17.866,29.772 L19.186,31.092 17.867,31.093zM48.007,14.859 L50.531,25.83h-9.37l-0.329,-10.971zM38.917,14.859 L38.588,25.83 37.705,25.829 30.805,18.929 31.741,14.859z"
android:fillType="evenOdd"/>
</vector>

View File

@@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="84"
android:viewportHeight="91">
<path
android:fillColor="#FFF"
android:fillType="evenOdd"
android:pathData="m65.501,35.443 l12.641,54.961h-31.5l-1.649,-54.961zM39.291,35.443 L37.643,90.404h-31.5l12.641,-54.961zM83.543,23.743v7.2h-5.4v5.4h-7.2v-5.4h-57.6v5.4h-7.2v-5.4h-5.4v-7.2zM40.343,0.404 L39.723,21.043h-17.627l4.747,-20.639zM57.443,0.404 L62.189,21.043h-17.627l-0.619,-20.639z" />
</vector>

View File

@@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="83"
android:viewportHeight="91">
<path
android:fillColor="#FFF"
android:fillType="evenOdd"
android:pathData="m45.227,62.389 l25.507,25.507c1.862,1.862 4.382,2.667 6.814,2.416l0.021,0.092h-31.5zM18.28,35.442 L38.122,55.284 37.069,90.404h-31.5l12.641,-54.961zM8.943,9.256 L79.158,79.472c1.368,1.368 1.368,3.59 0,4.958 -1.368,1.368 -3.59,1.368 -4.958,0l-70.216,-70.216c-1.368,-1.368 -1.368,-3.59 0,-4.958s3.59,-1.368 4.958,0zM64.927,35.443 L71.757,65.137 44.492,37.872 44.42,35.443zM30.362,23.742 L82.969,23.743v7.2h-5.4v5.4h-7.2v-5.4l-32.807,-0.001zM6.58,23.742 L13.78,30.942 12.769,30.943v5.4h-7.2v-5.4h-5.4v-7.2zM56.869,0.404 L61.615,21.043h-17.627l-0.619,-20.639zM39.769,0.404 L39.149,21.043 27.662,21.042 22.669,16.049 26.269,0.404z" />
</vector>

View File

@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="80"
android:viewportHeight="80">
<path
android:fillColor="#FFF"
android:pathData="m6.682,19.023 l5.418,5.418c-2.663,4.673 -4.184,10.086 -4.184,15.858 0,17.676 14.258,31.982 31.934,31.982 5.782,0 11.204,-1.531 15.882,-4.21l5.408,5.408c-6.143,3.939 -13.451,6.223 -21.29,6.223 -21.729,0 -39.404,-17.627 -39.404,-39.404 0,-7.839 2.291,-15.141 6.236,-21.276zM7.246,2.736 L77.461,72.952c1.368,1.368 1.368,3.59 0,4.958 -1.368,1.368 -3.59,1.368 -4.958,0l-70.216,-70.216c-1.368,-1.368 -1.368,-3.59 0,-4.958 1.368,-1.368 3.59,-1.368 4.958,0zM39.85,0.894c21.777,0 39.453,17.627 39.453,39.404 0,7.852 -2.298,15.164 -6.257,21.305l-5.423,-5.424c2.679,-4.678 4.21,-10.1 4.21,-15.882 0,-17.676 -14.307,-31.982 -31.983,-31.982 -5.785,0 -11.204,1.533 -15.877,4.214l-5.398,-5.399c6.14,-3.948 13.445,-6.238 21.276,-6.238zM24.24,36.58 L38.181,50.521 38.181,55.68h3.256l-0,-1.903 5.603,5.603 -22.799,0.001zM31.919,20.477 L55.378,20.477 55.377,43.935 41.437,29.995 41.437,24.178h-3.256l-0,2.561z"
android:fillType="evenOdd"/>
</vector>

View File

@@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="29dp"
android:viewportWidth="61"
android:viewportHeight="76">
<path
android:fillColor="#FFF"
android:fillType="evenOdd"
android:pathData="m60.739,0.837v75h-60v-75zM33.876,52.693h-6.274v16.011h6.274zM33.876,30.332h-6.274v16.011h6.274zM33.876,7.972h-6.274v16.011h6.274z" />
</vector>

View File

@@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="78"
android:viewportHeight="78">
<path
android:fillColor="#FFF"
android:fillType="evenOdd"
android:pathData="m6.245,1.736 l70.216,70.216c1.368,1.368 1.368,3.59 0,4.958 -1.368,1.368 -3.59,1.368 -4.958,0l-70.216,-70.216c-1.368,-1.368 -1.368,-3.59 0,-4.958s3.59,-1.368 4.958,0zM9.029,21.369 L40.568,52.908 35.892,52.908v16.011h6.274l-0,-14.413 21.546,21.546 -54.683,0.001zM12.494,1.052 L69.029,1.053v56.534l-26.863,-26.863 0,-0.176 -0.177,-0.001zM42.166,8.187h-6.274v16.011h6.274z" />
</vector>

View File

@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="80"
android:viewportHeight="80">
<path
android:fillColor="#FFF"
android:pathData="m6.682,18.618 l5.418,5.418c-2.663,4.673 -4.184,10.086 -4.184,15.858 0,17.676 14.258,31.982 31.934,31.982 5.782,0 11.204,-1.531 15.882,-4.21l5.408,5.408c-6.143,3.939 -13.451,6.223 -21.29,6.223 -21.729,0 -39.404,-17.627 -39.404,-39.404 0,-7.839 2.291,-15.141 6.236,-21.276zM7.246,2.332 L77.461,72.548c1.368,1.368 1.368,3.59 0,4.958 -1.368,1.368 -3.59,1.368 -4.958,0l-70.216,-70.216c-1.368,-1.368 -1.368,-3.59 0,-4.958 1.368,-1.368 3.59,-1.368 4.958,0zM44.592,56.527 L46.705,58.64 46.706,62.287h-6.341l0.001,4.227h-8.455v-2.114h6.34l0.001,-4.227h6.34zM29.826,47.004c0.216,0.074 0.44,0.132 0.671,0.173l4.477,0.99 -1.118,6.342c-0.036,0.204 -0.099,0.397 -0.185,0.575 -0.056,0.3 -0.176,0.594 -0.363,0.861l-6.742,9.628c-0.699,0.999 -2.076,1.241 -3.075,0.542 -0.999,-0.699 -1.242,-2.076 -0.542,-3.075l6.345,-9.062c-0.036,-0.193 -0.047,-0.394 -0.029,-0.599zM39.85,0.49c21.777,0 39.453,17.627 39.453,39.404 0,7.852 -2.298,15.164 -6.257,21.305l-5.423,-5.424c2.679,-4.678 4.21,-10.1 4.21,-15.882 0,-17.676 -14.307,-31.982 -31.983,-31.982 -5.785,0 -11.204,1.533 -15.877,4.214l-5.398,-5.399c6.14,-3.948 13.445,-6.238 21.276,-6.238zM39.684,51.619 L43.129,55.064 42.439,56.964c-0.417,1.146 -1.684,1.736 -2.829,1.319s-1.736,-1.684 -1.319,-2.829zM27.592,39.527 L33.638,45.573 31.109,45.015c-2.401,-0.423 -4.005,-2.713 -3.581,-5.115zM20.359,32.294 L24.775,36.71 24.775,40.127c0,1.219 -0.988,2.208 -2.208,2.208s-2.208,-0.988 -2.208,-2.208zM45.212,33.365 L50.636,33.366c1.219,0 2.208,0.988 2.208,2.208s-0.988,2.208 -2.208,2.208l-1.009,-0.001zM36.783,24.934c0.729,0.358 1.335,0.823 1.788,1.376 0.145,0.14 0.273,0.303 0.379,0.486l0.421,0.729zM36.779,13.672c2.438,0 4.415,1.977 4.415,4.415 0,2.438 -1.977,4.415 -4.415,4.415s-4.415,-1.977 -4.415,-4.415c0,-2.438 1.977,-4.415 4.415,-4.415z"
android:fillType="evenOdd"/>
</vector>

View File

@@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="32dp"
android:viewportWidth="75"
android:viewportHeight="101">
<path
android:fillColor="#FFF"
android:fillType="evenOdd"
android:pathData="m74.07,72.4v4h-12l0,8h-12l0,8h-12l0,8h-16v-4h12l0,-8h12l0,-8h12l0,-8zM18.13,63.48c0.41,0.14 0.83,0.25 1.27,0.33l8.47,1.87 -2.12,12c-0.07,0.39 -0.19,0.75 -0.35,1.09 -0.11,0.57 -0.33,1.12 -0.69,1.63l-12.76,18.22c-1.32,1.89 -3.93,2.35 -5.82,1.03s-2.35,-3.93 -1.03,-5.82l12.01,-17.15c-0.07,-0.37 -0.09,-0.75 -0.05,-1.13zM29.5,21c2.19,0.71 3.97,1.85 5.17,3.32 0.27,0.26 0.52,0.57 0.72,0.92l7.18,12.43 14.94,0c2.31,0 4.18,1.87 4.18,4.18s-1.87,4.18 -4.18,4.18h-17.23c-1.48,0 -2.78,-0.77 -3.52,-1.93 -0.21,-0.22 -0.39,-0.48 -0.55,-0.75l-1.65,-2.86 -2.1,11.92 13.71,4.99c0.37,0.13 0.7,0.31 1.01,0.53 1.75,0.99 2.58,3.12 1.87,5.07l-7.04,19.34c-0.79,2.17 -3.19,3.29 -5.35,2.5 -2.17,-0.79 -3.29,-3.19 -2.5,-5.35l5.64,-15.5 -19.23,-4.25c-4.54,-0.8 -7.58,-5.13 -6.78,-9.68l3.4,-19.3 -8.61,4.97v14.75c0,2.31 -1.87,4.18 -4.18,4.18s-4.18,-1.87 -4.18,-4.18v-17.23c0,-1.91 1.28,-3.52 3.02,-4.02 0.18,-0.15 0.38,-0.29 0.59,-0.42l13.99,-8.08c1.59,-0.92 6.93,-1.27 11.69,0.27zM31.28,0.4c4.61,0 8.36,3.74 8.36,8.36 0,4.61 -3.74,8.36 -8.36,8.36s-8.36,-3.74 -8.36,-8.36c0,-4.61 3.74,-8.36 8.36,-8.36z" />
</vector>

View File

@@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="32dp"
android:viewportWidth="78"
android:viewportHeight="101">
<path
android:fillColor="#FFF"
android:fillType="evenOdd"
android:pathData="m57.54,80.92 l4,4 -9.74,0 0,8h-12l0,8h-16v-4h12l0,-8h12l0,-8zM19.86,64c0.41,0.14 0.83,0.25 1.27,0.33l8.47,1.87 -2.12,12c-0.07,0.39 -0.19,0.75 -0.35,1.09 -0.11,0.57 -0.33,1.12 -0.69,1.63l-12.76,18.22c-1.32,1.89 -3.93,2.35 -5.82,1.03 -1.89,-1.32 -2.35,-3.93 -1.03,-5.82l12.01,-17.15c-0.07,-0.37 -0.09,-0.75 -0.05,-1.13zM6.25,12.77 L76.46,82.99c1.37,1.37 1.37,3.59 0,4.96 -1.37,1.37 -3.59,1.37 -4.96,0l-70.22,-70.22c-1.37,-1.37 -1.37,-3.59 0,-4.96s3.59,-1.37 4.96,0zM41.41,64.78 L47.93,71.3 43.72,82.84c-0.79,2.17 -3.19,3.29 -5.35,2.5 -2.17,-0.79 -3.29,-3.19 -2.5,-5.35zM73.33,72.92 L75.8,72.92 75.8,75.39zM17.25,40.63 L41,64.37 22.28,60.23c-4.54,-0.8 -7.58,-5.13 -6.78,-9.68zM5.8,29.18 L11.92,35.29 10.3,36.23v14.75c0,2.31 -1.87,4.18 -4.18,4.18s-4.18,-1.87 -4.18,-4.18v-17.23c0,-1.91 1.28,-3.52 3.02,-4.02 0.18,-0.15 0.38,-0.29 0.59,-0.42zM31.23,21.51c2.19,0.71 3.97,1.85 5.17,3.32 0.27,0.26 0.52,0.57 0.72,0.92l7.18,12.43 14.94,0c2.31,0 4.18,1.87 4.18,4.18s-1.87,4.18 -4.18,4.18l-12.29,-0 -25.82,-25.82c2.37,-0.46 6.41,-0.41 10.1,0.79zM33.01,0.92c4.61,0 8.36,3.74 8.36,8.36 0,4.61 -3.74,8.36 -8.36,8.36s-8.36,-3.74 -8.36,-8.36c0,-4.61 3.74,-8.36 8.36,-8.36z" />
</vector>

View File

@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="80"
android:viewportHeight="79">
<path
android:fillColor="#FFF"
android:pathData="m7.036,18.185 l5.418,5.418c-2.663,4.673 -4.184,10.086 -4.184,15.858 0,17.676 14.258,31.982 31.934,31.982 5.782,0 11.204,-1.531 15.882,-4.21l5.408,5.408c-6.143,3.939 -13.451,6.223 -21.29,6.223 -21.729,0 -39.404,-17.627 -39.404,-39.404 0,-7.839 2.291,-15.141 6.236,-21.276zM7.599,1.899 L77.815,72.114c1.368,1.368 1.368,3.59 0,4.958 -1.368,1.368 -3.59,1.368 -4.958,0l-70.216,-70.216c-1.368,-1.368 -1.368,-3.59 0,-4.958 1.368,-1.368 3.59,-1.368 4.958,0zM38.708,49.856 L41.991,53.139 41.991,55.196c0.561,-0.107 1.1,-0.253 1.617,-0.439l5.109,5.108c-0.413,0.203 -0.842,0.39 -1.284,0.561 -1.682,0.649 -3.496,1.074 -5.442,1.277v4.378h-3.284v-4.317c-2.675,0.041 -5.24,-0.365 -7.692,-1.216s-4.611,-2.25 -6.476,-4.196l5.534,-5.655c0.973,1.378 2.23,2.432 3.77,3.162 1.54,0.73 3.162,1.176 4.865,1.338zM40.204,0.057c21.777,0 39.453,17.627 39.453,39.404 0,7.852 -2.298,15.164 -6.257,21.305l-5.423,-5.424c2.679,-4.678 4.21,-10.1 4.21,-15.882 0,-17.676 -14.307,-31.982 -31.983,-31.982 -5.785,0 -11.204,1.533 -15.877,4.214l-5.398,-5.399c6.14,-3.948 13.445,-6.238 21.276,-6.238zM41.991,13.239v4.013h0.547c2.068,0 4.186,0.355 6.354,1.064 2.169,0.71 4.023,1.753 5.564,3.132l-5.047,5.655c-0.932,-1.013 -2.047,-1.814 -3.344,-2.402 -1.297,-0.588 -2.655,-0.882 -4.074,-0.882l-0.001,5.537 -3.283,-3.283 0,-2.133c-0.578,0.099 -1.131,0.257 -1.658,0.474l-5.032,-5.03c0.561,-0.317 1.149,-0.602 1.765,-0.855 1.581,-0.649 3.223,-1.054 4.925,-1.216v-4.074z"
android:fillType="evenOdd"/>
</vector>

View File

@@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="39dp"
android:viewportWidth="61"
android:viewportHeight="100">
<path
android:fillColor="#FFF"
android:fillType="evenOdd"
android:pathData="m33.77,7.59h1.04c3.91,0 7.92,0.67 12.03,2.01s7.61,3.32 10.53,5.93l-9.55,10.7c-1.76,-1.92 -3.87,-3.43 -6.33,-4.55 -2.45,-1.11 -5.02,-1.67 -7.71,-1.67v23.01l0.46,0.12c3.22,0.84 6.39,1.8 9.49,2.88 3.11,1.07 5.87,2.47 8.29,4.2 2.42,1.73 4.37,3.89 5.87,6.5 1.5,2.61 2.24,5.87 2.24,9.78 0,3.84 -0.69,7.23 -2.07,10.18 -1.38,2.95 -3.26,5.49 -5.64,7.59s-5.16,3.78 -8.34,5.01c-3.18,1.23 -6.62,2.03 -10.3,2.42v8.29h-6.21v-8.17c-5.06,0.08 -9.92,-0.69 -14.56,-2.3 -4.64,-1.61 -8.73,-4.26 -12.26,-7.94l10.47,-10.7c1.84,2.61 4.22,4.6 7.13,5.98 2.92,1.38 5.98,2.22 9.21,2.53v-24.28l-0.58,-0.12c-3.22,-0.92 -6.29,-1.94 -9.21,-3.05s-5.5,-2.57 -7.77,-4.37c-2.26,-1.8 -4.05,-3.99 -5.35,-6.56s-1.96,-5.77 -1.96,-9.61c0,-3.45 0.69,-6.56 2.07,-9.32s3.22,-5.16 5.52,-7.19c2.3,-2.03 4.95,-3.66 7.94,-4.89 2.99,-1.23 6.1,-1.99 9.32,-2.3v-7.71h6.21zM27.55,20.25c-2.69,0.46 -5.08,1.59 -7.19,3.39 -2.11,1.8 -3.16,4.16 -3.16,7.08 0,1.76 0.29,3.18 0.86,4.26s1.32,1.99 2.24,2.76c0.92,0.77 2.01,1.4 3.28,1.9 1.27,0.5 2.59,1.05 3.97,1.67zM33.77,79.4c1.61,-0.31 3.13,-0.79 4.55,-1.44 1.42,-0.65 2.67,-1.46 3.74,-2.42 1.07,-0.96 1.94,-2.11 2.59,-3.45 0.65,-1.34 0.98,-2.86 0.98,-4.55 0,-1.69 -0.36,-3.11 -1.09,-4.26 -0.73,-1.15 -1.67,-2.11 -2.82,-2.88 -1.15,-0.77 -2.42,-1.42 -3.8,-1.96 -1.38,-0.54 -2.76,-1.04 -4.14,-1.5z" />
</vector>

View File

@@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="30dp"
android:viewportWidth="78"
android:viewportHeight="100">
<path
android:fillColor="#FFF"
android:fillType="evenOdd"
android:pathData="m36.03,58.45 l6.21,6.21 0,14.74c1.61,-0.31 3.13,-0.79 4.55,-1.44 1.42,-0.65 2.67,-1.46 3.74,-2.42 0.46,-0.41 0.88,-0.86 1.26,-1.34l9.61,9.61c-0.17,0.16 -0.34,0.32 -0.52,0.47 -2.38,2.11 -5.16,3.78 -8.34,5.01 -3.18,1.23 -6.62,2.03 -10.3,2.42v8.29h-6.21v-8.17c-5.06,0.08 -9.92,-0.69 -14.56,-2.3 -4.64,-1.61 -8.73,-4.26 -12.26,-7.94l10.47,-10.7c1.84,2.61 4.22,4.6 7.13,5.98 2.92,1.38 5.98,2.22 9.21,2.53zM6.29,11.85 L76.5,82.07c1.37,1.37 1.37,3.59 0,4.96 -1.37,1.37 -3.59,1.37 -4.96,0l-70.22,-70.22c-1.37,-1.37 -1.37,-3.59 0,-4.96s3.59,-1.37 4.96,0zM45.2,43.83c2.37,0.67 4.7,1.4 7,2.2 3.11,1.07 5.87,2.47 8.29,4.2 2.42,1.73 4.37,3.89 5.87,6.5 1.5,2.61 2.24,5.87 2.24,9.78 0,0.24 -0,0.48 -0.01,0.71zM11.26,33.68 L31.33,53.75c-1.74,-0.57 -3.43,-1.16 -5.07,-1.79 -2.92,-1.11 -5.5,-2.57 -7.77,-4.37 -2.26,-1.8 -4.05,-3.99 -5.35,-6.56 -1.04,-2.05 -1.66,-4.5 -1.88,-7.35zM42.25,-0v7.59h1.04c3.91,0 7.92,0.67 12.03,2.01s7.61,3.32 10.53,5.93l-9.55,10.7c-1.76,-1.92 -3.87,-3.43 -6.33,-4.55 -2.45,-1.11 -5.02,-1.67 -7.71,-1.67l-0,20.86 -6.21,-6.21 0,-14.41c-2.69,0.46 -5.08,1.59 -7.19,3.39 -0.72,0.61 -1.32,1.29 -1.79,2.04l-9.56,-9.56c0.41,-0.42 0.84,-0.83 1.28,-1.22 2.3,-2.03 4.95,-3.66 7.94,-4.89 2.99,-1.23 6.1,-1.99 9.32,-2.3v-7.71z" />
</vector>

View File

@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="80"
android:viewportHeight="80">
<path
android:fillColor="#FFF"
android:pathData="m7.036,18.427 l5.418,5.418c-2.663,4.673 -4.184,10.086 -4.184,15.858 0,17.676 14.258,31.982 31.934,31.982 5.782,0 11.204,-1.531 15.882,-4.21l5.408,5.408c-6.143,3.939 -13.451,6.223 -21.29,6.223 -21.729,0 -39.404,-17.627 -39.404,-39.404 0,-7.839 2.291,-15.141 6.236,-21.276zM7.599,2.14 L77.815,72.356c1.368,1.368 1.368,3.59 0,4.958 -1.368,1.368 -3.59,1.368 -4.958,0l-70.216,-70.216c-1.368,-1.368 -1.368,-3.59 0,-4.958 1.368,-1.368 3.59,-1.368 4.958,0zM40.204,0.299c21.777,0 39.453,17.627 39.453,39.404 0,7.852 -2.298,15.164 -6.257,21.305l-5.423,-5.424c2.679,-4.678 4.21,-10.1 4.21,-15.882 0,-17.676 -14.307,-31.982 -31.983,-31.982 -5.785,0 -11.204,1.533 -15.877,4.214l-5.398,-5.399c6.14,-3.948 13.445,-6.238 21.276,-6.238zM26.59,53.556v5.229h-3.638v-5.229zM42.29,53.68 L44.589,55.979 40.902,55.399zM34.309,45.699 L37.661,49.051 35.193,54.048 29.815,45.991zM26.59,41.052v9.326h-3.638v-9.326zM57.374,41.052 L57.373,44.981 53.736,41.344 53.736,41.052zM57.374,28.289v9.326h-3.638v-9.326zM22.952,34.342 L26.224,37.614 22.952,37.615zM41.334,28.942 L51.092,30.48 47.417,35.025zM36.644,20.201 L42.022,28.259 40.734,28.342 35.304,22.912zM57.374,19.882v5.229h-3.638v-5.229z"
android:fillType="evenOdd"/>
</vector>

View File

@@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="27dp"
android:viewportWidth="67"
android:viewportHeight="76">
<path
android:fillColor="#FFF"
android:fillType="evenOdd"
android:pathData="m66.919,16.436v17.979h-7.013v-17.979zM66.919,0.227v10.08h-7.013v-10.08zM7.573,16.436v17.979h-7.013v-17.979zM7.573,0.227v10.08h-7.013v-10.08zM47.565,53.36 L54.649,71.768 35.165,68.699zM32.427,49.35 L24.159,66.096 13.79,50.563zM37.821,35.388 L42.373,43.068 36.475,49.771 28.278,46.232 29.11,37.343zM35.325,17.59 L54.81,20.659 42.41,35.998zM21.959,20.905 L30.156,24.443 29.323,33.332 20.612,35.287 16.061,27.607zM26.955,0.844 L37.323,16.377 18.687,17.59zM7.573,41.04v17.979h-7.013v-17.979zM7.573,65.147v10.08h-7.013v-10.08zM66.919,41.04v17.979h-7.013v-17.979zM66.919,65.147v10.08h-7.013v-10.08z" />
</vector>

View File

@@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="79"
android:viewportHeight="78">
<path
android:fillColor="#FFF"
android:fillType="evenOdd"
android:pathData="m6.771,1.14 l70.216,70.216c1.368,1.368 1.368,3.59 0,4.958 -1.368,1.368 -3.59,1.368 -4.958,0l-70.216,-70.216c-1.368,-1.368 -1.368,-3.59 0,-4.958 1.368,-1.368 3.59,-1.368 4.958,0zM13.388,65.377v10.08h-7.013v-10.08zM48.458,59.677 L60.268,71.487 60.465,71.998 40.98,68.929zM38.242,49.58 L29.974,66.326 19.606,50.793zM13.388,41.27v17.979h-7.013v-17.979zM72.735,41.27v17.979l-0.923,-0.001 -6.09,-6.09v-11.888zM34.191,45.41 L36.116,47.335 34.093,46.462zM41.141,17.819 L60.625,20.888 48.477,35.914 47.87,35.307zM72.735,16.665v17.979h-7.013v-17.979zM6.374,17.593 L13.387,24.606 13.388,34.644h-7.013zM32.77,1.073 L43.139,16.606 30.023,17.46 26.445,13.882zM72.735,0.457v10.08h-7.013v-10.08z" />
</vector>

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:pathData="m280,708 l56,57q6,6 14,6t14,-6q6,-6 6,-14.5t-6,-14.5l-56,-56 57,-57q6,-6 6,-14t-6,-14q-6,-6 -14,-6t-14,6l-57,57 -57,-57q-6,-6 -14,-6t-14,6q-6,6 -6,14t6,14l57,57 -57,57q-6,6 -6,14t6,14q6,6 14,6t14,-6l57,-57ZM280,880q-83,0 -141.5,-58.5T80,680q0,-83 58.5,-141.5T280,480q83,0 141.5,58.5T480,680q0,83 -58.5,141.5T280,880ZM568,584q-12,-13 -25.5,-26.5T516,532q38,-24 61,-64t23,-88q0,-75 -52.5,-127.5T420,200q-75,0 -127.5,52.5T240,380q0,6 0.5,11.5T242,403q-18,2 -39.5,8T164,425q-2,-11 -3,-22t-1,-23q0,-109 75.5,-184.5T420,120q109,0 184.5,75.5T680,380q0,43 -13.5,81.5T629,532l223,224q11,11 11.5,27.5T852,812q-11,11 -28,11t-28,-11L568,584Z"
android:fillColor="@android:color/white"/>
</vector>

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="20dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:pathData="M420,652q-8,0 -14,-5.5t-6,-14.5v-304q0,-9 6,-14.5t14,-5.5q2,0 14,6l145,145q5,5 7,10t2,11q0,6 -2,11t-7,10L434,646q-3,3 -6.5,4.5T420,652Z"
android:fillColor="#1f1f1f"/>
</vector>

Some files were not shown because too many files have changed in this diff Show More