Compare commits

..

1 Commits

Author SHA1 Message Date
x7z4w
3364924816 [strings] Support Weblate for cuisines search categories
Signed-off-by: x7z4w <x7z4w@noreply.codeberg.org>
2025-10-18 19:48:58 +00:00
814 changed files with 8258 additions and 15837 deletions

View File

@@ -1,382 +0,0 @@
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
- copy-coasts
- planet
- wiki
- isolines
- subways
- tiger
- maps
env:
WIKIMEDIA_USERNAME: ${{ secrets.WIKIMEDIA_USERNAME }}
WIKIMEDIA_PASSWORD: ${{ secrets.WIKIMEDIA_PASSWORD }}
S3_KEY_ID: ${{ secrets.S3_KEY_ID }}
S3_SECRET_KEY: ${{ secrets.S3_SECRET_KEY }}
S3_ENDPOINT: ${{ secrets.S3_ENDPOINT }}
S3_BUCKET: ${{ secrets.S3_BUCKET }}
SFTP_USER: ${{ secrets.SFTP_USER }}
SFTP_PASSWORD: ${{ secrets.SFTP_PASSWORD }}
SFTP_HOST: ${{ secrets.SFTP_HOST }}
SFTP_PATH: ${{ secrets.SFTP_PATH }}
DEBIAN_FRONTEND: noninteractive
TZ: Etc/UTC
jobs:
copy-coasts:
if: inputs.jobs == 'copy-coasts' || inputs.jobs == 'all'
name: Copy Previously Generated Coasts
runs-on: mapfilemaker
container:
image: ubuntu:latest
volumes:
- /media/4tbexternal:/media/4tbexternal
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 /media/4tbexternal/osm-maps/*/intermediate_data/WorldCoasts.geom ]; then
cp /media/4tbexternal/osm-maps/*/intermediate_data/WorldCoasts.geom /media/4tbexternal/osm-planet/latest_coasts.geom
cp /media/4tbexternal/osm-maps/*/intermediate_data/WorldCoasts.rawgeom /media/4tbexternal/osm-planet/latest_coasts.rawgeom
fi
update-planet:
if: inputs.jobs == 'planet' || inputs.jobs == 'all'
name: Update Planet
runs-on: mapfilemaker
container:
image: ubuntu:latest
volumes:
- /media/4tbexternal:/media/4tbexternal
concurrency:
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
- name: Install dependencies
shell: bash
run: |
apt-get update -y
apt-get install -y pyosmium osmium-tool python3-venv python3-pip wget2
rm -f /usr/lib/python*/EXTERNALLY-MANAGED
pip3 install "protobuf<4"
- name: Download Planet File if Absent
shell: bash
run: |
if [ ! -d /media/4tbexternal/osm-planet/planet/ ]; then
mkdir -p /media/4tbexternal/osm-planet/planet/
fi
if [ ! -f /media/4tbexternal/osm-planet/planet/planet-latest.osm.pbf ]; then
cd /media/4tbexternal/osm-planet/planet/
wget2 --verbose --progress=bar --continue --debug https://ftpmirror.your.org/pub/openstreetmap/pbf/planet-latest.osm.pbf
fi
- name: Update Planet
shell: bash
run: |
cd /media/4tbexternal/osm-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: /root/OM/osmctools/osmconvert planet-latest.osm.pbf -o=planet.o5m
wiki-update:
if: inputs.jobs == 'wiki' || inputs.jobs == 'all'
name: Update Wikipedia
runs-on: mapfilemaker
container:
image: ubuntu:latest
volumes:
- /media/4tbexternal:/media/4tbexternal
concurrency:
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
- name: Install dependencies
shell: bash
run: |
apt-get update -y
apt-get install -y jq curl wget2 rustc cargo git ca-certificates
- name: Clone wikiparser if necessary
shell: bash
run: |
if [ ! -d /media/4tbexternal/wikiparser ]; then
cd /media/4tbexternal
git clone https://codeberg.org/comaps/wikiparser.git
fi
- name: Check for planet file
shell: bash
run: |
if [ ! -f /media/4tbexternal/osm-planet/planet/planet-latest.osm.pbf ]; then
echo "ERROR: No file at /media/4tbexternal/osm-planet/planet/planet-latest.osm.pbf"
ls -al /media/4tbexternal/
ls -al /media/4tbexternal/osm-planet/
ls -al /media/4tbexternal/osm-planet/planet/
exit 1
fi
- name: Update Wikipedia from Enterprise API
shell: bash
run: |
mkdir -p /media/4tbexternal/osm-planet/wikipedia/dumps
mkdir -p /media/4tbexternal/osm-planet/wikipedia/build
cd /media/4tbexternal/wikiparser
ls -al
echo "Downloading ..."
./download.sh /media/4tbexternal/osm-planet/wikipedia/dumps
echo "Running ..."
./run.sh /media/4tbexternal/osm-planet/wikipedia/build \
/media/4tbexternal/osm-planet/planet/planet-latest.osm.pbf \
/media/4tbexternal/osm-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: ubuntu:latest
volumes:
- /media/4tbexternal:/media/4tbexternal
concurrency:
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
- name: Install dependencies
shell: bash
run: |
apt-get update -qq \
&& apt-get install -y --no-install-recommends \
curl \
osmctools \
rclone \
git \
ca-certificates \
openssh-client \
sshpass \
vim \
wget \
build-essential \
clang \
cmake \
python3 \
python3-pip \
python3.12-venv \
qt6-base-dev \
qt6-positioning-dev \
libc++-dev \
libfreetype-dev \
libglvnd-dev \
libgl1-mesa-dev \
libharfbuzz-dev \
libicu-dev \
libqt6svg6-dev \
libqt6positioning6-plugins \
libqt6positioning6 \
libsqlite3-dev \
libxrandr-dev \
libxinerama-dev \
libxcursor-dev \
libxi-dev \
zlib1g-dev
rm -f /usr/lib/python*/EXTERNALLY-MANAGED
pip3 install "protobuf<4"
- name: Clone main repo if necessary
shell: bash
run: |
if [ ! -d /media/4tbexternal/comaps-init ]; then
apt-get update -qq && apt-get install -y --no-install-recommends git
cd /media/4tbexternal
git clone --recurse-submodules --shallow-submodules -b rebase-generator-pastk-wb251014 --single-branch https://codeberg.org/comaps/comaps.git comaps-init
fi
- name: Update Isolines
shell: bash
run: |
cd /media/4tbexternal/comaps-init/
./tools/unix/build_omim.sh -R topography_generator_tool
rm -rf ../osm-planet/isolines/
mkdir ../osm-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=../osm-planet/isolines/tmp-tiles/ \
--countries_isolines_out_dir=../osm-planet/isolines/ \
--data_dir=./data/ \
--srtm_path=../osm-planet/SRTM-patched-europe/ \
--threads=22
update-subways:
if: inputs.jobs == 'subways' || inputs.jobs == 'all'
name: Update Subways
runs-on: mapfilemaker
container:
image: ubuntu:latest
volumes:
- /media/4tbexternal:/media/4tbexternal
concurrency:
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
- name: Install dependencies
shell: bash
run: |
apt-get update -qq && apt-get install -y --no-install-recommends curl osmctools osmium-tool python3-venv ca-certificates git python3-pip
rm -f /usr/lib/python*/EXTERNALLY-MANAGED
pip3 install "protobuf<4"
- name: Clone subways if necessary
shell: bash
run: |
if [ ! -d /media/4tbexternal/subways ]; then
cd /media/4tbexternal
git clone https://codeberg.org/comaps/subways.git
fi
- name: Clone main repo if necessary
shell: bash
run: |
if [ ! -d /media/4tbexternal/comaps-init ]; then
cd /media/4tbexternal
git clone --recurse-submodules --shallow-submodules -b rebase-generator-pastk-wb251014 --single-branch https://codeberg.org/comaps/comaps.git comaps-init
fi
- name: Update Subways
shell: bash
run: |
cd /media/4tbexternal/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: ubuntu:latest
volumes:
- /media/4tbexternal:/media/4tbexternal
concurrency:
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
- name: Install dependencies
shell: bash
run: |
apt-get update -qq && apt-get install -y --no-install-recommends \
build-essential \
clang \
cmake \
ninja-build \
ca-certificates \
git \
wget2
- name: Clone main repo if necessary
shell: bash
run: |
if [ ! -d /media/4tbexternal/comaps-init ]; then
cd /media/4tbexternal
git clone --recurse-submodules --shallow-submodules -b rebase-generator-pastk-wb251014 --single-branch https://codeberg.org/comaps/comaps.git comaps-init
fi
- name: Build address_parser
shell: bash
run: |
cd /media/4tbexternal/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: |
cd /media/4tbexternal/osm-planet/
wget2 https://nominatim.org/data/tiger-nominatim-preprocessed-latest.csv.tar.gz
tar -xOzf tiger-nominatim-preprocessed-latest.csv.tar.gz | /media/4tbexternal/omim-build-relwithdebinfo/address_parser_tool --output_path=./tiger
generate-maps:
if: inputs.jobs == 'maps' || inputs.jobs == 'all'
name: Generate Maps
runs-on: mapfilemaker
container:
image: ubuntu:latest
volumes:
- /media/4tbexternal:/media/4tbexternal
options: --ulimit nofile=262144:262144
concurrency:
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
- name: Install dependencies
shell: bash
run: |
apt-get update -qq \
&& apt-get install -y --no-install-recommends \
curl \
osmctools \
rclone \
git \
ca-certificates \
openssh-client \
sshpass \
vim \
wget \
build-essential \
clang \
cmake \
ninja-build \
python3 \
python3-pip \
python3.12-venv \
qt6-base-dev \
qt6-positioning-dev \
libc++-dev \
libfreetype-dev \
libglvnd-dev \
libgl1-mesa-dev \
libharfbuzz-dev \
libicu-dev \
libqt6svg6-dev \
libqt6positioning6-plugins \
libqt6positioning6 \
libsqlite3-dev \
libxrandr-dev \
libxinerama-dev \
libxcursor-dev \
libxi-dev \
zlib1g-dev
- name: Clone repo if necessary
shell: bash
run: |
if [ ! -d /media/4tbexternal/comaps-init ]; then
cd /media/4tbexternal
git clone --recurse-submodules --shallow-submodules -b rebase-generator-pastk-wb251014 --single-branch https://codeberg.org/comaps/comaps.git comaps-init
fi
- name: Make output folders if necessary
shell: bash
run: |
if [ ! -d /media/4tbexternal/osm-maps ]; then
mkdir -p /media/4tbexternal/osm-maps
fi
- name: Get SRTM if necessary
shell: bash
run: |
if [ ! -d /media/4tbexternal/osm-planet/SRTM-patched-europe/ ]; then
echo "ERROR: NO SRTM"
exit 1
fi
- name: Symlink paths for repo scripts
shell: bash
run: |
mkdir -p /root/OM
ln -s /media/4tbexternal/comaps-init /root/OM/organicmaps
ln -s /media/4tbexternal/osm-planet /home/planet
ln -s /media/4tbexternal/osm-maps /root/OM/maps_build
- name: Run docker_maps_generator.sh
shell: bash
run: |
cd /root/OM/organicmaps
./tools/unix/docker_maps_generator.sh

3
.gitignore vendored
View File

@@ -38,6 +38,9 @@ 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" 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&color=588157" 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" 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&color=588157" 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

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

View File

@@ -0,0 +1,9 @@
• 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,8 +1,9 @@
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!
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

View File

@@ -1,7 +1,9 @@
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)
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
Check our Codeberg release notes for more changes!

View File

@@ -1,7 +1,8 @@
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)
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)
Más detalles en Codeberg

View File

@@ -1,8 +1,9 @@
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)
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
Plus d'informations sur notre Codeberg

View File

@@ -1,7 +1,9 @@
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!
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!

View File

@@ -1,32 +0,0 @@
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

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

View File

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

View File

@@ -1 +1 @@
version: 2025.11.01-7-FDroid+25110107
version: 2025.03.02-7-FDroid+25030207

View File

@@ -1,36 +0,0 @@
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 @@
Enostavno usmerjanje Odkrij več o svojem potovanju Podprto v skupnosti
Enostavna navigacija Odkrij več o svojem potovanju Podprto v skupnosti

View File

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

View File

@@ -7,9 +7,15 @@ 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_edit,
items.add(new MenuBottomSheetItem(R.string.edit, R.drawable.ic_settings,
() -> 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,10 +466,12 @@ 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, R.drawable.ic_search_fail);
requirePlaceholder().setContent(R.string.search_not_found, R.string.search_not_found_query);
}
else if (isEmpty())
{
requirePlaceholder().setContent(R.string.bookmarks_empty_list_title, R.string.bookmarks_empty_list_message, R.drawable.ic_bookmarks);
requirePlaceholder().setContent(R.string.bookmarks_empty_list_title, R.string.bookmarks_empty_list_message);
}
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_edit, this::onSettingsOptionSelected));
items.add(new MenuBottomSheetItem(R.string.edit, R.drawable.ic_settings, this::onSettingsOptionSelected));
if (!isLastOwnedCategory())
items.add(new MenuBottomSheetItem(R.string.delete_list, R.drawable.ic_delete, this::onDeleteOptionSelected));
return items;

View File

@@ -438,17 +438,21 @@ 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());
}
@@ -458,12 +462,9 @@ public class Holders
String formattedDesc = desc.replace("\n", "<br>");
Spanned spannedDesc = Utils.fromHtml(formattedDesc);
if (!TextUtils.isEmpty(spannedDesc)) {
mDescText.setText(spannedDesc);
}
else {
mDescText.setText(R.string.list_description_empty);
}
mDescText.setText(spannedDesc);
UiUtils.showIf(!TextUtils.isEmpty(spannedDesc), mDescText);
}
}
}

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, R.drawable.ic_search_fail);
placeholder.setContent(R.string.search_not_found, R.string.search_not_found_query);
else
placeholder.setContent(R.string.downloader_no_downloaded_maps_title,
R.string.downloader_no_downloaded_maps_message, R.drawable.ic_download);
R.string.downloader_no_downloaded_maps_message);
}
@Override

View File

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

View File

@@ -1,208 +0,0 @@
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

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

View File

@@ -8,9 +8,10 @@ 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
implements TimetableProvider, HoursMinutesPickerFragment.OnPickListener
{
private SimpleTimetableAdapter mAdapter;
@Nullable
@@ -56,4 +57,10 @@ 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, R.drawable.ic_search_fail);
mResultsPlaceholder.setContent(R.string.search_not_found, R.string.search_not_found_query);
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, R.drawable.ic_search_recent);
mPlaceHolder.setContent(R.string.search_history_title, R.string.search_history_text);
getAdapter().registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
@Override

View File

@@ -3,7 +3,6 @@ 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;
@@ -12,7 +11,6 @@ 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;
@@ -178,10 +176,9 @@ public class PlaceholderView extends LinearLayout
return view.getMeasuredHeight() + params.bottomMargin + params.topMargin;
}
public void setContent(@StringRes int titleRes, @StringRes int subtitleRes, @DrawableRes int iconRes)
public void setContent(@StringRes int titleRes, @StringRes int subtitleRes)
{
mTitle.setText(titleRes);
mSubtitle.setText(subtitleRes);
mImage.setImageDrawable(ContextCompat.getDrawable(getContext(), iconRes));
}
}

View File

@@ -1,6 +1,5 @@
package app.organicmaps.widget.placepage;
import android.app.Dialog;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
@@ -15,7 +14,6 @@ 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;
@@ -105,9 +103,9 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View.
public EditBookmarkFragment() {}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NORMAL, R.style.MwmTheme_FullScreenDialog);
protected int getCustomTheme()
{
return getFullscreenTheme();
}
@Nullable
@@ -183,12 +181,6 @@ 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 MaterialButton mEditBookmark;
private ShapeableImageView mEditBookmark;
// Data
private CoordinatesFormat mCoordsFormat = CoordinatesFormat.LatLonDecimal;
@@ -691,27 +691,16 @@ public class PlacePageView extends Fragment
mTvAddPlace.setOnClickListener(this);
mTvEditPlace.setEnabled(Editor.nativeShouldEnableEditPlace());
mTvAddPlace.setEnabled(Editor.nativeShouldEnableAddPlace());
final int editTextButtonColor =
final int editPlaceButtonColor =
Editor.nativeShouldEnableEditPlace()
? ContextCompat.getColor(
getContext(),
UiUtils.getStyledResourceId(getContext(), com.google.android.material.R.attr.colorSecondary))
: ContextCompat.getColor(getContext(), R.color.button_accent_text_disabled);
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);
mTvEditPlace.setTextColor(editPlaceButtonColor);
mTvAddPlace.setTextColor(editPlaceButtonColor);
mTvEditPlace.setStrokeColor(ColorStateList.valueOf(editPlaceButtonColor));
mTvAddPlace.setStrokeColor(ColorStateList.valueOf(editPlaceButtonColor));
UiUtils.showIf(
UiUtils.isVisible(mEditPlace) || UiUtils.isVisible(mAddPlace),
mEditTopSpace);

View File

@@ -59,6 +59,8 @@ 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.

After

Width:  |  Height:  |  Size: 520 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 620 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 594 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 414 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 402 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 690 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 826 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 814 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1016 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 B

Binary file not shown.

After

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="8dp"/>
<corners android:radius="4dp"/>
</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="8dp"/>
<corners android:radius="4dp"/>
</shape>

View File

@@ -1,10 +0,0 @@
<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

@@ -1,12 +0,0 @@
<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

@@ -1,12 +0,0 @@
<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

@@ -1,10 +0,0 @@
<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

@@ -1,12 +0,0 @@
<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

@@ -1,12 +0,0 @@
<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

@@ -1,10 +0,0 @@
<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

@@ -1,12 +0,0 @@
<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

@@ -1,12 +0,0 @@
<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

@@ -1,10 +0,0 @@
<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

@@ -1,12 +0,0 @@
<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

@@ -1,12 +0,0 @@
<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

@@ -1,10 +0,0 @@
<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

@@ -1,12 +0,0 @@
<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

@@ -1,12 +0,0 @@
<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

@@ -1,10 +0,0 @@
<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

@@ -1,12 +0,0 @@
<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

@@ -1,12 +0,0 @@
<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

@@ -1,9 +0,0 @@
<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>

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