diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000..0542767eff --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +**/snapshots/**/*.png filter=lfs diff=lfs merge=lfs -text diff --git a/.github/workflows/danger.yml b/.github/workflows/danger.yml index 8a892b9b15..5698a696b6 100644 --- a/.github/workflows/danger.yml +++ b/.github/workflows/danger.yml @@ -11,7 +11,7 @@ jobs: - run: | npm install --save-dev @babel/plugin-transform-flow-strip-types - name: Danger - uses: danger/danger-js@11.1.2 + uses: danger/danger-js@11.1.3 with: args: "--dangerfile tools/danger/dangerfile.js" env: diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml index da70d13a86..1692e2e281 100644 --- a/.github/workflows/quality.yml +++ b/.github/workflows/quality.yml @@ -66,7 +66,7 @@ jobs: yarn add danger-plugin-lint-report --dev - name: Danger lint if: always() - uses: danger/danger-js@11.1.2 + uses: danger/danger-js@11.1.3 with: args: "--dangerfile tools/danger/dangerfile-lint.js" env: diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index fb8e3080ae..1816fe3a78 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -8,7 +8,7 @@ on: # Enrich gradle.properties for CI/CD env: GRADLE_OPTS: -Dorg.gradle.jvmargs="-Xmx3072m -Dfile.encoding=UTF-8 -XX:+HeapDumpOnOutOfMemoryError" -Dkotlin.daemon.jvm.options="-Xmx2560m" -Dkotlin.incremental=false - CI_GRADLE_ARG_PROPERTIES: --stacktrace -PpreDexEnable=false --max-workers 2 --no-daemon + CI_GRADLE_ARG_PROPERTIES: --stacktrace -PpreDexEnable=false --max-workers 4 --no-daemon jobs: tests: @@ -24,12 +24,29 @@ jobs: steps: - uses: actions/checkout@v3 with: + lfs: true fetch-depth: 0 - uses: actions/setup-java@v3 with: distribution: 'adopt' java-version: '11' - uses: gradle/gradle-build-action@v2 + with: + cache-read-only: ${{ github.ref != 'refs/heads/develop' }} + gradle-home-cache-cleanup: ${{ github.ref == 'refs/heads/develop' }} + + - name: Run screenshot tests + run: ./gradlew verifyScreenshots $CI_GRADLE_ARG_PROPERTIES + + - name: Archive Screenshot Results on Error + if: failure() + uses: actions/upload-artifact@v3 + with: + name: screenshot-results + path: | + **/out/failures/ + **/build/reports/tests/*UnitTest/ + - uses: actions/setup-python@v4 with: python-version: 3.8 @@ -40,27 +57,6 @@ jobs: disableRateLimiting: true public_baseurl: "http://10.0.2.2:8080/" - - name: AVD cache - uses: actions/cache@v3 - id: avd-cache - with: - path: | - ~/.android/avd/* - ~/.android/adb* - key: avd-${{ matrix.api-level }} - - - name: create AVD and generate snapshot for caching - if: steps.avd-cache.outputs.cache-hit != 'true' - uses: reactivecircus/android-emulator-runner@v2 - with: - api-level: ${{ matrix.api-level }} - arch: x86 - profile: Nexus 5X - force-avd-creation: true # Is set to false in the doc https://github.com/ReactiveCircus/android-emulator-runner - emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none - disable-animations: true - script: echo "Generated AVD snapshot for caching." - - name: Run all the codecoverage tests at once uses: reactivecircus/android-emulator-runner@v2 # continue-on-error: true @@ -68,6 +64,7 @@ jobs: api-level: ${{ matrix.api-level }} arch: x86 profile: Nexus 5X + target: playstore force-avd-creation: false emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none disable-animations: true diff --git a/.github/workflows/validate-lfs.yml b/.github/workflows/validate-lfs.yml new file mode 100644 index 0000000000..203ecb0481 --- /dev/null +++ b/.github/workflows/validate-lfs.yml @@ -0,0 +1,15 @@ +name: Validate Git LFS + +on: [pull_request] + +jobs: + build: + runs-on: ubuntu-latest + name: Validate + steps: + - uses: actions/checkout@v3 + with: + lfs: 'true' + + - run: | + ./tools/validate_lfs.sh diff --git a/.gitignore b/.gitignore index 2cf3826224..068b169d7c 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,4 @@ /package.json /yarn.lock /node_modules +**/out/failures diff --git a/CHANGES.md b/CHANGES.md index 009c2b2af5..d1e4834988 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,59 @@ +Changes in Element v1.5.2 (2022-10-05) +====================================== + +Features ✨ +---------- + - New App Layout is now enabled by default! Go to the Settings > Labs to toggle this ([#7166](https://github.com/vector-im/element-android/issues/7166)) + - Render inline images in the timeline ([#351](https://github.com/vector-im/element-android/issues/351)) + - Add privacy setting to disable personalized learning by the keyboard ([#6633](https://github.com/vector-im/element-android/issues/6633)) + +Bugfixes 🐛 +---------- + - Disable emoji keyboard not applies in reply ([#5029](https://github.com/vector-im/element-android/issues/5029)) + - Fix animated images not autoplaying sometimes if only a thumbnail was fetched from the server ([#6215](https://github.com/vector-im/element-android/issues/6215)) + - Add Warning shield when a user previously verified rotated their cross signing keys ([#6702](https://github.com/vector-im/element-android/issues/6702)) + - Can't verify user when option to send keys to verified devices only is selected ([#6723](https://github.com/vector-im/element-android/issues/6723)) + - Add option to only send to verified devices per room (web parity) ([#6725](https://github.com/vector-im/element-android/issues/6725)) + - Delete pin code key and the key used for biometrics authentication on logout ([#6906](https://github.com/vector-im/element-android/issues/6906)) + - Fix crash on previewing images to upload on Android Pie. ([#7184](https://github.com/vector-im/element-android/issues/7184)) + - Fix app restarts in loop on Android 13 on the first run of the app. ([#7224](https://github.com/vector-im/element-android/issues/7224)) + +In development 🚧 +---------------- + - [Device Management] Learn more bottom sheets ([#7100](https://github.com/vector-im/element-android/issues/7100)) + - [Device management] Verify current session ([#7114](https://github.com/vector-im/element-android/issues/7114)) + - [Device management] Verify another session ([#7143](https://github.com/vector-im/element-android/issues/7143)) + - [Device management] Rename a session ([#7158](https://github.com/vector-im/element-android/issues/7158)) + - [Device Manager] Unverified and inactive sessions list ([#7170](https://github.com/vector-im/element-android/issues/7170)) + - [Device management] Sign out a session ([#7190](https://github.com/vector-im/element-android/issues/7190)) + - [Device Manager] Parse user agents ([#7247](https://github.com/vector-im/element-android/issues/7247)) + - [Voice Broadcast] Add a feature flag with the composer action ([#7258](https://github.com/vector-im/element-android/issues/7258)) + +Improved Documentation 📚 +------------------------ + - Draft onboarding documentation of the project at `./docs/_developer_onboarding.md` ([#7126](https://github.com/vector-im/element-android/issues/7126)) + +SDK API changes ⚠️ +------------------ + - Allow the sync timeout to be configured (mainly useful for testing) ([#7198](https://github.com/vector-im/element-android/issues/7198)) + - Ports SDK instrumentation tests to use suspending functions instead of countdown latches ([#7207](https://github.com/vector-im/element-android/issues/7207)) + - [Device Manager] Extend user agent to include device information ([#7209](https://github.com/vector-im/element-android/issues/7209)) + +Other changes +------------- + - Add support for `/tableflip` command ([#12](https://github.com/vector-im/element-android/issues/12)) + - Decreases the size of rounded corners and increases the maximum width of message bubbles to help avoid unnecessary unused space on screen ([#5712](https://github.com/vector-im/element-android/issues/5712)) + - Adds screenshot testing tooling ([#5798](https://github.com/vector-im/element-android/issues/5798)) + - [AppLayout]: added tracking of new analytics events ([#6508](https://github.com/vector-im/element-android/issues/6508)) + - Target API 12 and compile with Android SDK 32. ([#6929](https://github.com/vector-im/element-android/issues/6929)) + - Add basic integration of Sentry to capture errors and crashes if user has given consent. ([#7076](https://github.com/vector-im/element-android/issues/7076)) + - Add support to `/devtools` command. ([#7126](https://github.com/vector-im/element-android/issues/7126)) + - Fix lint warning, and cleanup the code ([#7159](https://github.com/vector-im/element-android/issues/7159)) + - Mutualize the pending auth handling ([#7193](https://github.com/vector-im/element-android/issues/7193)) + - CI: Prevent modification of translations by developer. ([#7211](https://github.com/vector-im/element-android/issues/7211)) + - Fix typo in strings.xml and make sure this is American English. ([#7287](https://github.com/vector-im/element-android/issues/7287)) + + Changes in Element v1.5.1 (2022-09-28) ====================================== diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 52ccf47e6a..6e3c784dac 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,10 +1,42 @@ -# Contributing code to Matrix +# Contributing to Element Android + + + +* [Contributing code to Matrix](#contributing-code-to-matrix) +* [Android Studio settings](#android-studio-settings) + * [Template](#template) +* [Compilation](#compilation) +* [I want to help translating Element](#i-want-to-help-translating-element) +* [I want to submit a PR to fix an issue](#i-want-to-submit-a-pr-to-fix-an-issue) + * [Kotlin](#kotlin) + * [Changelog](#changelog) + * [Code quality](#code-quality) + * [Internal tool](#internal-tool) + * [ktlint](#ktlint) + * [lint](#lint) + * [Unit tests](#unit-tests) + * [Tests](#tests) + * [Internationalisation](#internationalisation) + * [Adding new string](#adding-new-string) + * [Plurals](#plurals) + * [Editing existing strings](#editing-existing-strings) + * [Removing existing strings](#removing-existing-strings) + * [Renaming string ids](#renaming-string-ids) + * [Reordering strings](#reordering-strings) + * [Accessibility](#accessibility) + * [Layout](#layout) + * [Authors](#authors) +* [Thanks](#thanks) + + + +## Contributing code to Matrix Please read https://github.com/matrix-org/synapse/blob/master/CONTRIBUTING.md Element Android support can be found in this room: [![Element Android Matrix room #element-android:matrix.org](https://img.shields.io/matrix/element-android:matrix.org.svg?label=%23element-android:matrix.org&logo=matrix&server_fqdn=matrix.org)](https://matrix.to/#/#element-android:matrix.org). -# Specific rules for Matrix Android projects +The rest of the document contains specific rules for Matrix Android projects ## Android Studio settings @@ -120,17 +152,21 @@ You should consider adding Unit tests with your PR, and also integration tests ( Translations are handled using an external tool: [Weblate](https://translate.element.io/projects/element-android/) -As a general rule, please never edit or add or remove translations to the project in a Pull Request. It can lead to merge conflict if the translations are also modified in Weblate side. +**As a general rule, please never edit or add or remove translations to the project in a Pull Request**. It can lead to merge conflict if the translations are also modified in Weblate side. Pull Request containing change(s) on the translation files cannot be merged. #### Adding new string -When adding new string resources, please only add new entries in the file `value/strings.xml`. Translations will be added later by the community of translators using Weblate. +When adding new string resources, please only add new entries in the file `values/strings.xml` ([this file](./library/ui-strings/src/main/res/values/strings.xml)). Translations will be added later by the community of translators using Weblate. -The file `value/strings.xml` must only contain American English (U. S. English) values, as this is the default language of the Android operating system. So for instance, please use "color" instead of "colour". Element Android will still use the language set on the system by the user, like any other Android applications which provide translations. The system language can be any other English language variants, or any other languages. Note that this is also possible to override the system language using the Element Android in-app language settings. +The file `values/strings.xml` must only contain American English (U. S. English) values, as this is the default language of the Android operating system. So for instance, please use "color" instead of "colour". Element Android will still use the language set on the system by the user, like any other Android applications which provide translations. The system language can be any other English language variants, or any other languages. Note that this is also possible to override the system language using the Element Android in-app language settings. -New strings can be added anywhere in the file `value/strings.xml`, not necessarily at the end of the file. Generally, it's even better to add the new strings in some dedicated section per feature, and not at the end of the file, to avoid merge conflict between 2 PR adding strings at the end of the same file. +New strings can be added anywhere in the file `values/strings.xml`, not necessarily at the end of the file. Generally, it's even better to add the new strings in some dedicated section per feature, and not at the end of the file, to avoid merge conflict between 2 PR adding strings at the end of the same file. -Do not hesitate to use plurals when appropriate. +##### Plurals + +Please use `plurals` resources when appropriate, and note that some languages have specific rules for `plurals`, so even if the string will always be at the plural form for English, please always create a `plurals` resource. + +Specific plural forms can be found [here](https://unicode-org.github.io/cldr-staging/charts/37/supplemental/language_plural_rules.html). #### Editing existing strings @@ -150,6 +186,23 @@ And add `tools:ignore="UnusedResources"` to the string, to let lint ignore that The string will be removed during the next sync with Weblate. +#### Renaming string ids + +This is possible to rename ids of the String resources, but since translation files cannot be edited, add TODO in the main strings.xml file above the strings you want to rename. + +```xml + +Hello Matrix world! +``` + +The string id(s) will be renamed during the next Weblate sync. + +#### Reordering strings + +To group strings per feature, or for any other reasons, it is possible to reorder string resources, but only in the [main strings.xml file](./library/ui-strings/src/main/res/values/strings.xml). ). We do not mind about ordering in the translation files, and anyway this is forbidden to edit manually the translation files. + +It is also possible to add empty lines between string resources, and to add XML comments. Please note that the XML comment just above a String resource will also appear on Weblate and be visible to the translators. + ### Accessibility Please consider accessibility as an important point. As a minimum requirement, in layout XML files please use attributes such as `android:contentDescription` and `android:importantForAccessibility`, and test with a screen reader if it's working well. You can add new string resources, dedicated to accessibility, in this case, please prefix theirs id with `a11y_`. diff --git a/Gemfile.lock b/Gemfile.lock index 90e846860e..276f4ae66a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,29 +1,30 @@ GEM remote: https://rubygems.org/ specs: - CFPropertyList (3.0.3) + CFPropertyList (3.0.5) + rexml addressable (2.8.0) public_suffix (>= 2.0.2, < 5.0) artifactory (3.0.15) atomos (0.1.3) - aws-eventstream (1.1.1) - aws-partitions (1.479.0) - aws-sdk-core (3.117.0) + aws-eventstream (1.2.0) + aws-partitions (1.619.0) + aws-sdk-core (3.132.0) aws-eventstream (~> 1, >= 1.0.2) - aws-partitions (~> 1, >= 1.239.0) + aws-partitions (~> 1, >= 1.525.0) aws-sigv4 (~> 1.1) - jmespath (~> 1.0) - aws-sdk-kms (1.44.0) - aws-sdk-core (~> 3, >= 3.112.0) + jmespath (~> 1, >= 1.6.1) + aws-sdk-kms (1.58.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.96.1) - aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-s3 (1.114.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sdk-kms (~> 1) - aws-sigv4 (~> 1.1) - aws-sigv4 (1.2.4) + aws-sigv4 (~> 1.4) + aws-sigv4 (1.5.1) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) - claide (1.0.3) + claide (1.1.0) claide-plugins (0.9.2) cork nap @@ -48,22 +49,24 @@ GEM octokit (~> 4.7) terminal-table (>= 1, < 4) declarative (0.0.20) - digest-crc (0.6.3) + digest-crc (0.6.4) rake (>= 12.0.0, < 14.0.0) domain_name (0.5.20190701) unf (>= 0.0.5, < 1.0.0) - dotenv (2.7.6) - emoji_regex (3.2.2) - excon (0.85.0) - faraday (1.5.1) + dotenv (2.8.1) + emoji_regex (3.2.3) + excon (0.92.4) + faraday (1.10.1) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) faraday-excon (~> 1.1) - faraday-httpclient (~> 1.0.1) + faraday-httpclient (~> 1.0) + faraday-multipart (~> 1.0) faraday-net_http (~> 1.0) - faraday-net_http_persistent (~> 1.1) + faraday-net_http_persistent (~> 1.0) faraday-patron (~> 1.0) - multipart-post (>= 1.2, < 3) + faraday-rack (~> 1.0) + faraday-retry (~> 1.0) ruby2_keywords (>= 0.0.4) faraday-cookie_jar (0.0.7) faraday (>= 0.8.0) @@ -71,18 +74,22 @@ GEM faraday-em_http (1.0.0) faraday-em_synchrony (1.0.0) faraday-excon (1.1.0) - faraday-http-cache (2.4.0) + faraday-http-cache (2.4.1) faraday (>= 0.8) faraday-httpclient (1.0.1) + faraday-multipart (1.0.4) + multipart-post (~> 2) faraday-net_http (1.0.1) faraday-net_http_persistent (1.2.0) faraday-patron (1.0.0) - faraday_middleware (1.0.0) + faraday-rack (1.0.0) + faraday-retry (1.0.3) + faraday_middleware (1.2.0) faraday (~> 1.0) - fastimage (2.2.4) - fastlane (2.187.0) + fastimage (2.2.6) + fastlane (2.209.0) CFPropertyList (>= 2.3, < 4.0.0) - addressable (>= 2.3, < 3.0.0) + addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) aws-sdk-s3 (~> 1.0) babosa (>= 1.0.3, < 2.0.0) @@ -97,7 +104,7 @@ GEM faraday_middleware (~> 1.0) fastimage (>= 2.1.0, < 3.0.0) gh_inspector (>= 1.1.2, < 2.0.0) - google-apis-androidpublisher_v3 (~> 0.1) + google-apis-androidpublisher_v3 (~> 0.3) google-apis-playcustomapp_v1 (~> 0.1) google-cloud-storage (~> 1.31) highline (~> 2.0) @@ -106,6 +113,7 @@ GEM mini_magick (>= 4.9.4, < 5.0.0) multipart-post (~> 2.0.0) naturally (~> 2.2) + optparse (~> 0.1.1) plist (>= 3.1.0, < 4.0.0) rubyzip (>= 2.0.0, < 3.0.0) security (= 0.1.3) @@ -121,9 +129,9 @@ GEM gh_inspector (1.1.3) git (1.11.0) rchardet (~> 1.8) - google-apis-androidpublisher_v3 (0.8.0) - google-apis-core (>= 0.4, < 2.a) - google-apis-core (0.4.0) + google-apis-androidpublisher_v3 (0.25.0) + google-apis-core (>= 0.7, < 2.a) + google-apis-core (0.7.0) addressable (~> 2.5, >= 2.5.1) googleauth (>= 0.16.2, < 2.a) httpclient (>= 2.8.1, < 3.a) @@ -132,47 +140,47 @@ GEM retriable (>= 2.0, < 4.a) rexml webrick - google-apis-iamcredentials_v1 (0.6.0) - google-apis-core (>= 0.4, < 2.a) - google-apis-playcustomapp_v1 (0.5.0) - google-apis-core (>= 0.4, < 2.a) - google-apis-storage_v1 (0.6.0) - google-apis-core (>= 0.4, < 2.a) + google-apis-iamcredentials_v1 (0.13.0) + google-apis-core (>= 0.7, < 2.a) + google-apis-playcustomapp_v1 (0.10.0) + google-apis-core (>= 0.7, < 2.a) + google-apis-storage_v1 (0.17.0) + google-apis-core (>= 0.7, < 2.a) google-cloud-core (1.6.0) google-cloud-env (~> 1.0) google-cloud-errors (~> 1.0) - google-cloud-env (1.5.0) - faraday (>= 0.17.3, < 2.0) - google-cloud-errors (1.1.0) - google-cloud-storage (1.34.1) - addressable (~> 2.5) + google-cloud-env (1.6.0) + faraday (>= 0.17.3, < 3.0) + google-cloud-errors (1.2.0) + google-cloud-storage (1.38.0) + addressable (~> 2.8) digest-crc (~> 0.4) google-apis-iamcredentials_v1 (~> 0.1) - google-apis-storage_v1 (~> 0.1) + google-apis-storage_v1 (~> 0.17.0) google-cloud-core (~> 1.6) googleauth (>= 0.16.2, < 2.a) mini_mime (~> 1.0) - googleauth (0.16.2) - faraday (>= 0.17.3, < 2.0) + googleauth (1.2.0) + faraday (>= 0.17.3, < 3.a) jwt (>= 1.4, < 3.0) memoist (~> 0.16) multi_json (~> 1.11) os (>= 0.9, < 2.0) - signet (~> 0.14) + signet (>= 0.16, < 2.a) highline (2.0.3) - http-cookie (1.0.4) + http-cookie (1.0.5) domain_name (~> 0.5) httpclient (2.8.3) - jmespath (1.4.0) - json (2.5.1) - jwt (2.2.3) + jmespath (1.6.1) + json (2.6.2) + jwt (2.4.1) kramdown (2.4.0) rexml kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) memoist (0.16.2) mini_magick (4.11.0) - mini_mime (1.1.0) + mini_mime (1.1.2) multi_json (1.15.0) multipart-post (2.0.0) nanaimo (0.3.0) @@ -183,12 +191,13 @@ GEM faraday (>= 1, < 3) sawyer (~> 0.9) open4 (1.3.4) - os (1.1.1) + optparse (0.1.1) + os (1.1.4) plist (3.6.0) - public_suffix (4.0.6) + public_suffix (4.0.7) rake (13.0.6) rchardet (1.8.0) - representable (3.1.1) + representable (3.2.0) declarative (< 0.1.0) trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) @@ -201,9 +210,9 @@ GEM addressable (>= 2.3.5) faraday (>= 0.17.3, < 3) security (0.1.3) - signet (0.15.0) - addressable (~> 2.3) - faraday (>= 0.17.3, < 2.0) + signet (0.17.0) + addressable (~> 2.8) + faraday (>= 0.17.5, < 3.a) jwt (>= 1.5, < 3.0) multi_json (~> 1.10) simctl (1.6.8) @@ -212,7 +221,7 @@ GEM terminal-notifier (2.0.0) terminal-table (1.8.0) unicode-display_width (~> 1.1, >= 1.1.1) - trailblazer-option (0.1.1) + trailblazer-option (0.1.2) tty-cursor (0.7.1) tty-screen (0.8.1) tty-spinner (0.9.3) @@ -220,11 +229,11 @@ GEM uber (0.1.0) unf (0.1.4) unf_ext - unf_ext (0.0.7.7) - unicode-display_width (1.7.0) + unf_ext (0.0.8.2) + unicode-display_width (1.8.0) webrick (1.7.0) word_wrap (1.0.0) - xcodeproj (1.20.0) + xcodeproj (1.22.0) CFPropertyList (>= 2.3.3, < 4.0) atomos (~> 0.1.3) claide (>= 1.0.2, < 2.0) @@ -239,6 +248,7 @@ GEM PLATFORMS universal-darwin-21 x86_64-darwin-20 + x86_64-linux DEPENDENCIES danger diff --git a/README.md b/README.md index 7acb5aa638..e351b64927 100644 --- a/README.md +++ b/README.md @@ -44,10 +44,12 @@ If you would like to receive releases more quickly (bearing in mind that they ma ## Contributing -Please refer to [CONTRIBUTING.md](https://github.com/vector-im/element-android/blob/develop/CONTRIBUTING.md) if you want to contribute on Matrix Android projects! +Please refer to [CONTRIBUTING.md](./CONTRIBUTING.md) if you want to contribute on Matrix Android projects! Come chat with the community in the dedicated Matrix [room](https://matrix.to/#/#element-android:matrix.org). +Also [this documentation](./docs/_developer_onboarding.md) can hopefully help developers to start working on the project. + ## Triaging issues Issues are triaged by community members and the Android App Team, following the [triage process](https://github.com/vector-im/element-meta/wiki/Triage-process). diff --git a/build.gradle b/build.gradle index 49dc1e7fb4..dd0f9a8d7f 100644 --- a/build.gradle +++ b/build.gradle @@ -25,14 +25,15 @@ buildscript { classpath libs.gradle.kotlinPlugin classpath libs.gradle.hiltPlugin classpath 'com.google.firebase:firebase-appdistribution-gradle:3.0.3' - classpath 'com.google.gms:google-services:4.3.13' + classpath 'com.google.gms:google-services:4.3.14' classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.4.0.2513' classpath 'com.google.android.gms:oss-licenses-plugin:0.10.5' classpath "com.likethesalad.android:stem-plugin:2.2.2" - classpath 'org.owasp:dependency-check-gradle:7.2.0' + classpath 'org.owasp:dependency-check-gradle:7.2.1' classpath "org.jetbrains.dokka:dokka-gradle-plugin:1.7.10" classpath "org.jetbrains.kotlinx:kotlinx-knit:0.4.0" classpath 'com.jakewharton:butterknife-gradle-plugin:10.2.3' + classpath 'app.cash.paparazzi:paparazzi-gradle-plugin:1.0.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } @@ -46,6 +47,8 @@ plugins { // Dependency Analysis id 'com.autonomousapps.dependency-analysis' version "1.13.1" + // Gradle doctor + id "com.osacky.doctor" version "0.8.1" } // https://github.com/jeremylong/DependencyCheck @@ -58,6 +61,9 @@ dependencyCheck { ] } +// Gradle doctor configuration +apply from: './tools/gradle/doctor.gradle' + allprojects { apply plugin: "org.jlleitschuh.gradle.ktlint" apply plugin: "io.gitlab.arturbosch.detekt" @@ -71,6 +77,14 @@ allprojects { groups.mavenCentral.group.each { includeGroup it } } } + // snapshots repository + maven { + url "https://oss.sonatype.org/content/repositories/snapshots" + content { + groups.snapshot.regex.each { includeGroupByRegex it } + groups.snapshot.group.each { includeGroup it } + } + } maven { url 'https://jitpack.io' content { @@ -216,7 +230,7 @@ project(":vector") { } } -project(":library:diff-match-patch") { +project(":library:external:diff-match-patch") { sonarqube { skipProject = true } @@ -287,3 +301,29 @@ dependencyAnalysis { } } } + +tasks.register("recordScreenshots", GradleBuild) { + startParameter.projectProperties.screenshot = "" + tasks = [':vector:recordPaparazziDebug'] +} + +tasks.register("verifyScreenshots", GradleBuild) { + startParameter.projectProperties.screenshot = "" + tasks = [':vector:verifyPaparazziDebug'] +} + +ext.initScreenshotTests = { project -> + def hasScreenshots = project.hasProperty("screenshot") + if (hasScreenshots) { + project.apply plugin: 'app.cash.paparazzi' + } + project.dependencies { testCompileOnly "app.cash.paparazzi:paparazzi:1.0.0" } + project.android.testOptions.unitTests.all { + def screenshotTestCapture = "**/*ScreenshotTest*" + if (hasScreenshots) { + include screenshotTestCapture + } else { + exclude screenshotTestCapture + } + } +} diff --git a/dependencies.gradle b/dependencies.gradle index 8cc4270bed..5052b5ae0f 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -1,36 +1,37 @@ ext.versions = [ 'minSdk' : 21, - 'compileSdk' : 31, - 'targetSdk' : 31, + 'compileSdk' : 32, + 'targetSdk' : 32, 'sourceCompat' : JavaVersion.VERSION_11, 'targetCompat' : JavaVersion.VERSION_11, ] - -// Pinned to 7.1.3 because of https://github.com/vector-im/element-android/issues/6142 -// Please test carefully before upgrading again. -def gradle = "7.1.3" +def gradle = "7.2.2" // Ref: https://kotlinlang.org/releases.html -def kotlin = "1.6.21" +def kotlin = "1.7.20" def kotlinCoroutines = "1.6.4" -def dagger = "2.42" +def dagger = "2.44" def appDistribution = "16.0.0-beta04" def retrofit = "2.9.0" def arrow = "0.8.2" def markwon = "4.6.2" -def moshi = "1.13.0" +def moshi = "1.14.0" def lifecycle = "2.5.1" def flowBinding = "1.2.0" def flipper = "0.164.0" def epoxy = "4.6.2" def mavericks = "2.7.0" -def glide = "4.13.2" +def glide = "4.14.1" def bigImageViewer = "1.8.1" def jjwt = "0.11.5" -def vanniktechEmoji = "0.15.0" +// Temporary version to unblock #6929. Once 0.16.0 is released we should use it, and revert +// the whole commit which set version 0.16.0-SNAPSHOT +def vanniktechEmoji = "0.16.0-SNAPSHOT" -def fragment = "1.5.2" +def sentry = "6.4.1" + +def fragment = "1.5.3" // Testing def mockk = "1.12.3" // We need to use 1.12.3 to have mocking in androidTest until a new version is released: https://github.com/mockk/mockk/issues/819 @@ -52,7 +53,7 @@ ext.libs = [ ], androidx : [ 'activity' : "androidx.activity:activity:1.5.1", - 'appCompat' : "androidx.appcompat:appcompat:1.4.2", + 'appCompat' : "androidx.appcompat:appcompat:1.5.1", 'biometric' : "androidx.biometric:biometric:1.1.0", 'core' : "androidx.core:core-ktx:1.8.0", 'recyclerview' : "androidx.recyclerview:recyclerview:1.2.1", @@ -87,7 +88,7 @@ ext.libs = [ //'appdistributionApi' : "com.google.firebase:firebase-appdistribution-api-ktx:$appDistribution", //'appdistribution' : "com.google.firebase:firebase-appdistribution:$appDistribution", // Phone number https://github.com/google/libphonenumber - 'phonenumber' : "com.googlecode.libphonenumber:libphonenumber:8.12.55" + 'phonenumber' : "com.googlecode.libphonenumber:libphonenumber:8.12.56" ], dagger : [ 'dagger' : "com.google.dagger:dagger:$dagger", @@ -101,7 +102,7 @@ ext.libs = [ 'flipperNetworkPlugin' : "com.facebook.flipper:flipper-network-plugin:$flipper", ], element : [ - 'opusencoder' : "io.element.android:opusencoder:1.0.4", + 'opusencoder' : "io.element.android:opusencoder:1.1.0", ], squareup : [ 'moshi' : "com.squareup.moshi:moshi:$moshi", @@ -167,10 +168,13 @@ ext.libs = [ apache : [ 'commonsImaging' : "org.apache.sanselan:sanselan:0.97-incubator" ], + sentry: [ + 'sentryAndroid' : "io.sentry:sentry-android:$sentry" + ], tests : [ 'kluent' : "org.amshove.kluent:kluent-android:1.68", 'timberJunitRule' : "net.lachlanmckee:timber-junit-rule:1.0.1", - 'junit' : "junit:junit:4.13.2" + 'junit' : "junit:junit:4.13.2", ] ] diff --git a/dependencies_groups.gradle b/dependencies_groups.gradle index 4358f7e0fc..17a713726c 100644 --- a/dependencies_groups.gradle +++ b/dependencies_groups.gradle @@ -39,10 +39,18 @@ ext.groups = [ 'com.google.testing.platform', ] ], + snapshot: [ + regex: [ + ], + group: [ + 'com.vanniktech', + ] + ], mavenCentral: [ regex: [ ], group: [ + 'app.cash.paparazzi', 'ch.qos.logback', 'com.adevinta.android', 'com.airbnb.android', @@ -119,7 +127,7 @@ ext.groups = [ 'com.sun.xml.bind.mvn', 'com.sun.xml.fastinfoset', 'com.thoughtworks.qdox', - 'com.vanniktech', + // 'com.vanniktech', 'commons-cli', 'commons-codec', 'commons-io', @@ -141,14 +149,18 @@ ext.groups = [ 'io.opencensus', 'io.reactivex.rxjava2', 'io.realm', + 'io.sentry', 'it.unimi.dsi', 'jakarta.activation', 'jakarta.xml.bind', + 'javax.activation', 'javax.annotation', 'javax.inject', + 'javax.xml.bind', 'jline', 'jp.wasabeef', 'junit', + 'kxml2', 'me.saket', 'net.bytebuddy', 'net.java', @@ -177,11 +189,13 @@ ext.groups = [ 'org.hamcrest', 'org.jacoco', 'org.java-websocket', + 'org.jcodec', 'org.jetbrains', 'org.jetbrains.dokka', 'org.jetbrains.intellij.deps', 'org.jetbrains.kotlin', 'org.jetbrains.kotlinx', + 'org.jetbrains.trove4j', 'org.json', 'org.jsoup', 'org.junit', @@ -198,7 +212,6 @@ ext.groups = [ 'org.ow2.asm', 'org.ow2.asm', 'org.reactivestreams', - 'org.robolectric', 'org.slf4j', 'org.sonatype.oss', 'org.testng', diff --git a/docs/_developer_onboarding.md b/docs/_developer_onboarding.md new file mode 100644 index 0000000000..2f414063e3 --- /dev/null +++ b/docs/_developer_onboarding.md @@ -0,0 +1,259 @@ +# Developer on boarding + + + +* [Introduction](#introduction) + * [Quick introduction to Matrix](#quick-introduction-to-matrix) + * [Matrix data](#matrix-data) + * [Room](#room) + * [Event](#event) + * [Sync](#sync) + * [Glossary about syncs](#glossary-about-syncs) + * [The Android project](#the-android-project) + * [Matrix SDK](#matrix-sdk) + * [Application](#application) + * [MvRx](#mvrx) + * [Behavior](#behavior) + * [Epoxy](#epoxy) + * [Other frameworks](#other-frameworks) + * [Push](#push) + * [Dependencies management](#dependencies-management) + * [Test](#test) + * [Other points](#other-points) + * [Logging](#logging) + * [Rageshake](#rageshake) + * [Tips](#tips) +* [Happy coding!](#happy-coding) + + + +## Introduction + +This doc is a quick introduction about the project and its architecture. + +It's aim is to help new developers to understand the overall project and where to start developing. + +Other useful documentation: +- all the docs in this folder! +- the [contributing doc](../CONTRIBUTING.md), that you should also read carefully. + +### Quick introduction to Matrix + +Matrix website: [matrix.org](https://matrix.org), [discover page](https://matrix.org/discover). +*Note*: Matrix.org is also hosting a homeserver ([.well-known file](https://matrix.org/.well-known/matrix/client)). +The reference homeserver (this is how Matrix servers are called) implementation is [Synapse](https://github.com/matrix-org/synapse/). But other implementations exist. The Matrix specification is here to ensure that any Matrix client, such as Element Android and its SDK can talk to any Matrix server. + +Have a quick look to the client-server API documentation: [Client-server documentation](https://spec.matrix.org/v1.3/client-server-api/). Other network API exist, the list is here: (https://spec.matrix.org/latest/) + +Matrix is an open source protocol. Change are possible and are tracked using [this GitHub repository](https://github.com/matrix-org/matrix-doc/). Changes to the protocol are called MSC: Matrix Spec Change. These are PullRequest to this project. + +Matrix object are Json data. Unstable prefixes must be used for Json keys when the MSC is not merged (i.e. accepted). + +#### Matrix data + +There are many object and data in the Matrix worlds. Let's focus on the most important and used, `Room` and `Event` + +##### Room + +`Room` is a place which contains ordered `Event`s. They are identified with their `room_id`. Nearly all the data are stored in rooms, and shared using homeserver to all the Room Member. + +*Note*: Spaces are also Rooms with a different `type`. + +##### Event + +`Events` are items of a Room, where data is embedded. + +There are 2 types of Room Event: + +- Regular Events: contain useful content for the user (message, image, etc.), but are not necessarily displayed as this in the timeline (reaction, message edition, call signaling). +- State Events: contain the state of the Room (name, topic, etc.). They have a non null value for the key `state_key`. + +Also all the Room Member details are in State Events: one State Event per member. In this case, the `state_key` is the matrixId (= userId). + +Important Fields of an Event: +- `event_id`: unique across the Matrix universe; +- `room_id`: the room the Event belongs to; +- `type`: describe what the Event contain, especially in the `content` section, and how the SDK should handle this Event; +- `content`: dynamic Event data; depends on the `type`. + +So we have a triple `event_id`, `type`, `state_key` which uniquely defines an Event. + +#### Sync + +The `Sync` is a way for the Matrix client to be up to date regarding the user data hosted by the server. All the Events are coming through the sync response. More details can be found here: [spec.matrix.org/v1.3/client-server-api/#syncing](https://spec.matrix.org/v1.3/client-server-api/#syncing) +When the application is in foreground, this is a looping request. We are using Https requests, which offer the advantage to be compatible with any homeserver. A sync token is used as request parameter, to let the server know what the client knows. +The `SyncThread` is responsible to manage the sync request loop. + +When the application is in background, a Push will trigger a sync request. + +##### Glossary about syncs + +- **initial sync**: a sync request without a token. This is the first request a client perform after login or after a clear cache. The server will include in the response all your rooms with the full state (all the room membership Event will not be present), with the latest messages for each room. We are in the process to replace this by version 3: sliding sync. All data are inserted to the Database (currently [Realm](https://www.mongodb.com/docs/realm/sdk/java/)). +- **incremental sync**: sync request with a token. +- **gappy sync**: sync request where all the new Events are not returned for one or several Rooms. Also called `limited sync`. It can be limited per Room. To get all the missing Events, a Room pagination API has to be called. +- **sync token**: `next_batch` value in the previous sync response. Will be provided as the `since` parameter for the next sync request. + +### The Android project + +The project should compile out of the box. + +The project is split into several modules. The main ones are: +For the app +- `vector-app`: application entry point; +- `vector`: legacy application, but now a library. In the process of being split into several modules; +- `vector-config`: this is where all the configuration of the application should occurs. Should because we are in the process of migrating all the configuration here; +- `library/ui-strings`: this is where all the string resources are stored. Please refer to [contributing doc](../CONTRIBUTING.md) to know how to make change on this module; +- `library/ui-styles`: this is where the Android styles are defined. + +For the SDK +- `matrix-sdk-android`: the main SDK module. The sources are in this project, but are also exported to [its own project](https://github.com/matrix-org/matrix-android-sdk2). All the PRs and issues related to the SDK take place in the Element Android project; +- `matrix-sdk-android-flow`: contains some wrapper to expose `Flow` to the application. + +### Matrix SDK + +SDK exposes `Services` to the client application. `Services` are public interface, and are defined in this parent package: `org.matrix.android.sdk.api`. Default implementation are internal to the SDK, in this parent package: `org.matrix.android.sdk.internal`. Note that you also have to declare the classes as `internal` when adding classes to the `org.matrix.android.sdk.internal` package. + +Interface allows us to replace the implementation for testing purpose. + +A generated documentation of the SDK is available [here](https://matrix-org.github.io/matrix-android-sdk2/). Updated after each release. Please ensure that the documentation (KDoc) of all the SDK Services is up to date, and is clear for a SDK user. +The SDK generated documentation also contains information about the entry points of the SDK. + +[Dagger](https://dagger.dev/) is used to inject all the dependencies to the SDK classes. + +SDK is exposing data as `LiveData`, but we are progressively migrating to `Flow`. Database is the source of truth. + +Example: +- Client send an Event using the `SendService`; +- At the end a `SendEvent` task is used; +- Retrofit API is used to send data to the server; +- Goes to the server, which returns only the `event_id`; +- The `Event` is coming back from the `sync` response with eventually extra added data. + +### Application + +This is the UI part of the project. + +There are two variants of the application: `Gplay` and `Fdroid`. + +The main difference is about using Firebase on `Gplay` variant, to have Push from Google Services. `FDroid` variant cannot contain closed source dependency. + +`Fdroid` is using background polling to lack the missing of Pushed. Now a solution using UnifiedPush has ben added to the project. See refer to [the dedicated documentation](./unifiedpush.md) for more details. + +#### MvRx + +[Maverick](https://airbnb.io/mavericks/#/README) (or MvRx) is an Android MVI framework that helps to develop Reactive application on Android. + +- Activity: holder for Fragment. See the parent [VectorBaseActivity](../vector/src/main/java/im/vector/app/core/platform/VectorBaseActivity.kt); +- Fragment: manage screen of the application. See the parent [VectorBaseFragment](../vector/src/main/java/im/vector/app/core/platform/VectorBaseFragment.kt); +- BottomSheet: see the parent [VectorBaseBottomSheetDialogFragment](../vector/src/main/java/im/vector/app/core/platform/VectorBaseBottomSheetDialogFragment.kt); +- ViewModel: this is where the logic is placed. All our ViewModel has a `handle()` which takes action as parameter. See the parent [VectorViewModel](../vector/src/main/java/im/vector/app/core/platform/VectorViewModel.kt); +- VectorSharedActionViewModel: Specific ViewModel that can be used to communicate between Fragment(s) and the host Activity. See the parent [VectorSharedActionViewModel](../vector/src/main/java/im/vector/app/core/platform/VectorSharedActionViewModel.kt); +- ViewState: this are `data class`, and this represent the state of the View. Has to be copied and set to be updated. Fragment will update the UI regarding the current state (`invalidate()` method). `Async` class from MvRx can be used in the ViewState, especially for asynchronous data loading. Nullability can also be used for optional data. ViewStates have to implement `MavericksState`; +- ViewEvents: useful when the ViewModel asks the View to trigger a specific action: navigation, show dialog, etc. See the parent [VectorViewEvents](../vector/src/main/java/im/vector/app/core/platform/VectorViewEvents.kt); +- ViewAction (`VectorViewModelAction`): useful when the UI (generally the Fragment) asks the ViewModel to do something. See the parent [VectorViewModelAction](../vector/src/main/java/im/vector/app/core/platform/VectorViewModelAction.kt); +- Controller: see the `Epoxy` section just below. + +##### Behavior + +Fragment asks the ViewModel to perform an action (coming from the user, but not necessarily. ViewModel can then talk to the SDK, updates the state once or several times. Fragment update the UI regarding the new state. + +When ViewModel is instantiated, it can subscribe using the SDK Services to get live state of the data. + +`invalidate()` has to be used by default, but it's possible to listen to specific member(s) of the `ViewState` using `onEach`. TODO Add an example. +`awaitState()` method + +#### Epoxy + +[Epoxy](https://github.com/airbnb/epoxy) is an Android library for building complex screens in a RecyclerView. Please read [the introduction](https://github.com/airbnb/epoxy#epoxy). + +- Controller declares items of the RecyclerView. Controller is injected in the Fragment. Controller extends `EpoxyController`, or one of its subclass, especially `TypedEpoxyController`; +- Fragment gives the state to the controller using `setData`; +- `buildModels` will be called by the framework; +- Controller will create ordered Items. + +Epoxy does the diffing, and handle many other thing for us, like handling item type, etc. + +See for instance the controller [AccountDataEpoxyController](../vector/src/main/java/im/vector/app/features/settings/devtools/AccountDataEpoxyController.kt)) for a simple example. + +Warning: do not use twice the same item `id` or it will crash. + +#### Other frameworks + +- Dependency injection is managed by [Dagger](https://dagger.dev/) (SDK) and [Hilt](https://developer.android.com/training/dependency-injection/hilt-android) (App); +- [Retrofit](https://square.github.io/retrofit/) and [OkHttp3](https://square.github.io/okhttp/): network requests; +- [Moshi](https://github.com/square/moshi) is used to parse and serialize Json object; + +### Push + +Please see the dedicated documentation for more details. + +This is the classical scenario: + +- App receives a Push. Note: Push is ignored if app is in foreground; +- App asks the SDK to load Event data (fastlane mode). We have a change to get the data faster and display the notification faster; +- App asks the SDK to perform a sync request. + +### Dependencies management + +All the dependencies are declared in `build.gradle` files. But some versions are declared in [this dedicated file](../dependencies.gradle). + +When adding a new dependency, you will have to update the file [dependencies_groups.gradle](../dependencies_groups.gradle) to allow the dependency to be downloaded from the artifact repository. Sometimes sub-dependencies need to be added too, until the project can compile. + +[Dependabot](https://github.com/dependabot) is set up on the project. This tool will automatically create Pull Request to upgrade our dependencies one by one. +dependencies_group, gradle files, Dependabot, etc. + +### Test + +Please refer to [this dedicated document](./ui-tests.md). + +TODO add link to the dedicated screenshot test documentation + +### Other points + +#### Logging + +**Important warning: ** NEVER log private user data, or use the flag `LOG_PRIVATE_DATA`. Be very careful when logging `data class`, all the content will be output! + +[Timber](https://github.com/JakeWharton/timber) is used to log data to logcat. We do not use directly the `Log` class. If possible please use a tag, as per + +````kotlin +Timber.tag(loggerTag.value).d("my log") +```` + +because automatic tag (= class name) will not be available on the release version. + +Also generally it is recommended to provide the `Throwable` to the Timber log functions. + +Last point, not that `Timber.v` function may have no effect on some devices. Prefer using `Timber.d` and up. + +#### Rageshake + +Rageshake is a feature to send bug report directly from the application. Just shake your phone and you will be prompted to send a bug report. + +Bug report can contain: +- a screenshot of the current application state +- the application logs from up to 15 application starts +- the logcat logs +- the key share history (crypto data) + +The data will be sent to an internal server, which is not publicly accessible. A GitHub issue will also be created to a private GitHub repository. + +Rageshake can be very useful to get logs from a release version of the application. + +### Tips + +- Element Android has a `developer mode` in the `Settings/Advanced settings`. Other useful options are available here; +- Show hidden Events can also help to debug feature. When developer mode is enabled, it is possible to view the source (= the Json content) of any Events; +- Type `/devtools` in a Room composer to access a developer menu. There are some other entry points. Developer mode has to be enabled; +- Hidden debug menu: when developer mode is enabled and on debug build, there are some extra screens that can be accessible using the green wheel. In those screens, it will be possible to toggle some feature flags; +- Using logcat, filtering with `onResume` can help you to understand what screen are currently displayed on your device. Searching for string displayed on the screen can also help to find the running code in the codebase. +- When this is possible, prefer using `sealed interface` instead of `sealed class`; +- When writing temporary code, using the string "DO NOT COMMIT" in a comment can help to avoid committing things by mistake. If committed and pushed, the CI will detect this String and will warn the user about it. + +## Happy coding! + +The team is here to support you, feel free to ask anything to other developers. + +Also please feel to update this documentation, if incomplete/wrong/obsolete/etc. + +**Thanks!** diff --git a/docs/danger.md b/docs/danger.md index afa3555469..34baa62e9e 100644 --- a/docs/danger.md +++ b/docs/danger.md @@ -28,6 +28,7 @@ Here are the checks that Danger does so far: - PR with change on layout should include screenshot in the description - PR which adds png file warn about the usage of vector drawables - non draft PR should have a reviewer +- files containing translations are not modified by developers ### Quality check diff --git a/docs/screenshot_testing.md b/docs/screenshot_testing.md new file mode 100644 index 0000000000..93b91cdf67 --- /dev/null +++ b/docs/screenshot_testing.md @@ -0,0 +1,72 @@ +# Screenshot testing + + + +* [Overview](#overview) +* [Setup](#setup) +* [Recording](#recording) +* [Verifying](#verifying) +* [Contributing](#contributing) +* [Example](#example) + + + +## Overview + +- Screenshot tests are tests which record the content of a rendered screen and verify subsequent runs to check if the screen renders differently. +- Element uses [Paparazzi](https://github.com/cashapp/paparazzi) to render, record and verify android layouts. +- The screenshot verification occurs on every pull request as part of the `tests.yml` workflow. + +## Setup + +- Install Git LFS through your package manager of choice (`brew install git-lfs` | `yay -S git-lfs`). +- Install the Git LFS hooks into the project. + +```bash +# with element-android as the current working directory +git lfs install --local +``` + +- If installed correctly, `git push` and `git pull` will now include LFS content. + +## Recording + +- `./gradlew recordScreenshots` +- Paparazzi will generate images in `${module}/src/test/snapshots`, which will need to be committed to the repository using Git LFS. + +## Verifying + +- `./gradlew verifyScreenshots` +- In the case of failure, Paparazzi will generate images in `${module}/out/failure`. The images will show the expected and actual screenshots along with a delta of the two images. + +## Contributing + +- When creating a test, the file (and class) name names must include `ScreenshotTest`, eg `ItemScreenshotTest`. +- After creating the new test, record and commit the newly rendered screens. +- `./tools/validate_lfs` can be ran to ensure everything is working correctly with Git LFS, the CI also runs this check. + +## Example + +```kotlin +class PaparazziExampleScreenshotTest { + + @get:Rule + val paparazzi = Paparazzi( + deviceConfig = PIXEL_3, + theme = "Theme.Vector.Light", + ) + + @Test + fun `example paparazzi test`() { + // Inflate the layout + val view = paparazzi.inflate(R.layout.item_radio) + + // Bind data to the view + view.findViewById(R.id.actionTitle).text = paparazzi.resources.getString(R.string.room_settings_all_messages) + view.findViewById(R.id.radioIcon).setImageResource(R.drawable.ic_radio_on) + + // Record the bound view + paparazzi.snapshot(view) + } +} +``` diff --git a/docs/unit_testing.md b/docs/unit_testing.md new file mode 100644 index 0000000000..f786c9a160 --- /dev/null +++ b/docs/unit_testing.md @@ -0,0 +1,351 @@ +# Table of Contents + + + +* [Overview](#overview) + * [Best Practices](#best-practices) +* [Project Conventions](#project-conventions) + * [Setup](#setup) + * [Naming](#naming) + * [Format](#format) + * [Assertions](#assertions) + * [Constants](#constants) + * [Mocking](#mocking) + * [Fakes](#fakes) + * [Fixtures](#fixtures) + * [Examples](#examples) + * [Extensions used to streamline the test setup](#extensions-used-to-streamline-the-test-setup) + * [Fakes and Fixtures](#fakes-and-fixtures) + + + +## Overview + +Unit tests are a mechanism to validate our code executes the way we expect. They help to inform the design of our systems by requiring testability and +understanding, they describe the inner workings without relying on inline comments and protect from unexpected regressions. + +However, unit tests are not a magical solution to solve all our problems and come at a cost. Unreliable and hard to maintain tests often end up ignored, deleted +or worse, provide a false sense of security. + +### Best Practices + +Tests can be written in many ways, the main rule is to keep them simple and maintainable. Some ways to help achieve this are... + +- Break out logic into single units (following the Single Responsibility Principle) to reduce test complexity. +- Favour pure functions, avoiding mutable state. +- Prefer dependency injection to static calls to allow for simpler test setup. +- Write concise tests with a single function under test, clearly showing the inputs and expected output. +- Create separate test cases instead of changing parameters and grouping multiple assertions within a single test to help trace back failure causes (with the + exception of parameterised tests). +- Assert against entire models instead of subsets of properties to capture any possible changes within the test scope. +- Avoid invoking logic from production instances other than the class under test to guard from unrelated changes. +- Always inject `Dispatchers` and `Clock` instances and provide fake implementations for tests to avoid non deterministic results. + +## Project Conventions + +#### Setup + +- Test file and class name should be the class under test with the Test suffix, created in a `test` sourceset, with the same package name as the class under + test. +- Dependencies of the class are instantiated inline, junit will recreate the test class for each test run. +- A line break between the dependencies and class under test helps clarify the instance being tested. + +```kotlin + +class MyClassTest { + + private val fakeUppercaser = FakeUppercaser() + + // line break between the class under test and its dependencies + private val myClass = MyClass(fakeUppercaser.instance) +} + +``` + +#### Naming + +- Test names use the `Gherkin` format, `given, when, then` mapping to the input, logic under test and expected result. + - `given` - Uniqueness about the environment or dependencies in which the test case is running. _"given device is android 12 and supports dark mode"_ + - `when` - The action/function under test. _"when reading dark mode status"_ + - `then` - The expected result from the combination of _given_ and _when_. _"then returns dark mode enabled"_ +- Test names are written using kotlin back ticks to enable sentences _ish_. + +```kotlin +@Test +fun `given a lowercase label, when uppercasing, then returns label uppercased` +``` + +When the input is given directly to the _when_, this can also be represented as... + +```kotlin +@Test +fun `when uppercasing a lowercase label, then returns label uppercased` +``` + +Multiple given or returns statements can be used in the name although it could be a sign that the logic being tested does too much. + +--- + +#### Format + +- Test bodies are broken into sections through the use of blank lines where the sections correspond to the test name. +- Sections can span multiple lines. + +```kotlin +// comments are for illustrative purposes +/* given */ val lowercaseLabel = "hello world" + +/* when */ val result = textUppercaser.uppercase(lowercaseLabel) + +/* then */ result shouldBeEqualTo "HELLO WORLD" +``` + +- Functions extracted from test bodies are placed beneath all the unit tests. + +--- + +#### Assertions + +- Assertions against test results are made using [Kluent's](https://github.com/MarkusAmshove/Kluent) _fluent_ api. +- Typically `shouldBeEqualTo`is the main assertion to use for asserting function return values as by project convention we assert against entire objects or + lists. + +```kotlin +val result = listOf("hello", "world") + +// Fail +result shouldBeEqualTo listOf("hello") +``` + +```kotlin +data class Person(val age: Int, val name: String) + +val result = Person(age = 100, name = "Gandalf") + +// Avoid +result.age shouldBeEqualTo 100 + +// Prefer +result shouldBeEqualTo Person(age = 100, "Gandalf") +``` + +- Exception throwing can be asserted against using `assertFailsWith`. +- When asserting reusable exceptions, include the message to distinguish between them. + +```kotlin +assertFailsWith(message = "Details about error") { + // when section of the test + codeUnderTest() +} +``` + +--- + +#### Constants + +- Reusable values are extracted to file level immutable properties or constants. +- These can be parameters or expected results. +- The naming convention is to prefix with `A` or `AN` for better matching with the test name. + +```kotlin +private const val A_LOWERCASE_LABEL = "hello" + +class MyTest { + @Test + fun `when uppercasing a lowercase label, then returns label uppercased`() { + val result = TextUppercaser().uppercase(A_LOWERCASE_LABEL) + ... + } +} +``` + +--- + +#### Mocking + +- In order to provide different behaviour for dependencies within tests our main method is through mocking, using [Mockk](https://mockk.io/). +- We avoid using relaxed mocks in favour of explicitly declaring mock behaviour through the _Fake_ convention. There are exceptions when mocking framework + classes which would require a lot of boilerplate. +- Using `Spy` is discouraged as it inherently requires real instances, which we are avoiding in our tests. There are exceptions such as `VectorFeatures` which + acts like a `Fixture` in release builds. + +--- + +#### Fakes + +- Fakes are reusable instances of classes purely for testing purposes. They provide functions to replace the functions of the interface/class they're faking + with test specific values. +- When faking an interface, the _Fake_ can be written using delegation or by stubbing +- All Fakes currently reside in the same package `${package}.test.fakes` + +```kotlin +// Delegating to a mock +class FakeClock : Clock by mockk() { + fun givenEpoch(epoch: Long) { + every { epochMillis() } returns epoch + } +} + +// Stubbing the interface +class FakeClock(private val epoch: Long) : Clock { + override fun epochMillis() = epoch +} +``` + +It's currently more common for fakes to fake class behaviour, we achieve this by wrapping and exposing a mock instance. + +```kotlin +class FakeCursor { + val instance = mockk() + fun givenEmpty() { + every { instance.count } returns 0 + every { instance.moveToFirst() } returns false + } +} + +val fakeCursor = FakeCursor().apply { givenEmpty() } +``` + +#### Fixtures + +- Fixtures are a reusable wrappers around data models. They provide default values to make creating instances as easy as possible, with the option to override + specific parameters when needed. +- Are namespaced within an `object`. +- Reduces the _find usages_ noise when searching for usages of the origin class construction. +- All Fixtures currently reside in the same package `${package}.test.fixtures`. + +```kotlin +object ContentAttachmentDataFixture { + fun aContentAttachmentData( + type: ContentAttachmentData.Type.TEXT, + mimeType: String? = null + ) = ContentAttachmentData(type, mimeType) +} +``` + +- Fixtures can also be used to manage specific combinations of parameters + +```kotlin +fun aContentAttachmentAudioData() = aContentAttachmentData( + type = ContentAttachmentData.Type.AUDIO, + mimeType = "audio/mp3", +) +``` + +--- + +### Examples + +##### Extensions used to streamline the test setup + +```kotlin +class CircularCacheTest { + + @Test + fun `when putting more than cache size then cache is limited to cache size`() { + val (cache, internalData) = createIntCache(cacheSize = 3) + + cache.putInOrder(1, 1, 1, 1, 1, 1) + + internalData shouldBeEqualTo arrayOf(1, 1, 1) + } +} + +private fun createIntCache(cacheSize: Int): Pair, Array> { + var internalData: Array? = null + val factory: (Int) -> Array = { + Array(it) { null }.also { array -> internalData = array } + } + return CircularCache(cacheSize, factory) to internalData!! +} + +private fun CircularCache.putInOrder(vararg values: Int) { + values.forEach { put(it) } +} +``` + +##### Fakes and Fixtures + +```kotlin +class LateInitUserPropertiesFactoryTest { + + private val fakeActiveSessionDataSource = FakeActiveSessionDataSource() + private val fakeVectorStore = FakeVectorStore() + private val fakeContext = FakeContext() + private val fakeSession = FakeSession().also { + it.givenVectorStore(fakeVectorStore.instance) + } + + private val lateInitUserProperties = LateInitUserPropertiesFactory( + fakeActiveSessionDataSource.instance, + fakeContext.instance + ) + + @Test + fun `given no active session, when creating properties, then returns null`() { + val result = lateInitUserProperties.createUserProperties() + + result shouldBeEqualTo null + } + + @Test + fun `given a teams use case set on an active session, when creating properties, then includes the remapped WorkMessaging selection`() { + fakeVectorStore.givenUseCase(FtueUseCase.TEAMS) + fakeActiveSessionDataSource.setActiveSession(fakeSession) + + val result = lateInitUserProperties.createUserProperties() + + result shouldBeEqualTo UserProperties( + ftueUseCaseSelection = UserProperties.FtueUseCaseSelection.WorkMessaging + ) + } +} + ``` + +##### ViewModel + +- `ViewModels` tend to be one of the most complex areas to unit test due to their position as a coordinator of data flows and bridge between domains. +- As the project uses a slightly tweaked`MvRx`, our API for the `ViewModel` is simplified down to `input - ViewModel.handle(Action)` + and `output Flows - ViewModel.viewEvents & ViewModel.stateFlow`. A `ViewModel` test asserter has been created to further simplify the process. + +```kotlin +class ViewModelTest { + + private var initialState = ViewState.Empty + + @get:Rule + val mvrxTestRule = MvRxTestRule(testDispatcher = UnconfinedTestDispatcher()) + + @Test + fun `when handling MyAction, then emits Loading and Content states`() { + val viewModel = ViewModel(initialState) + val test = viewModel.test() // must be invoked before interacting with the VM + + viewModel.handle(MyAction) + + test + .assertViewStates(initialState, State.Loading, State.Content()) + .assertNoEvents() + .finish() + } +} +``` + +- `ViewModels` often emit multiple states which are copies of the previous state, the `test` extension `assertStatesChanges` allows only the difference to be + supplied. + +```kotlin +data class ViewState(val name: String? = null, val age: Int? = null) +val initialState = ViewState() +val viewModel = ViewModel(initialState) +val test = viewModel.test() + +viewModel.handle(ChangeNameAction("Gandalf")) + +test + .assertStatesChanges( + initialState, + { copy(name = "Gandalf") }, + ) + .finish() +``` diff --git a/fastlane/metadata/android/cs-CZ/changelogs/40104360.txt b/fastlane/metadata/android/cs-CZ/changelogs/40104360.txt new file mode 100644 index 0000000000..fcadf9898c --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/40104360.txt @@ -0,0 +1,3 @@ +Nový vzhled aplikace lze povolit v Experimentálních funkcích. Prosíme, vyzkoušejte ho! +Oprava problémů s chybějícími oznámeními a dlouhou přírůstkovou synchronizací. +Úplný seznam změn: https://github.com/vector-im/element-android/releases diff --git a/fastlane/metadata/android/de-DE/changelogs/40104360.txt b/fastlane/metadata/android/de-DE/changelogs/40104360.txt new file mode 100644 index 0000000000..3c47fa7eb6 --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/40104360.txt @@ -0,0 +1,3 @@ +Das neue App-Layout kann in den experimentellen Einstellungen aktiviert werden. Probier es gerne aus! +Fehler bzgl. ausbleibender Benachrichtigungen und langwierigem inkrementellem Synchronisieren behoben. +Vollständiges Änderungsprotokoll: https://github.com/vector-im/element-android/releases diff --git a/fastlane/metadata/android/de-DE/short_description.txt b/fastlane/metadata/android/de-DE/short_description.txt index d27bd3ef12..de571645ee 100644 --- a/fastlane/metadata/android/de-DE/short_description.txt +++ b/fastlane/metadata/android/de-DE/short_description.txt @@ -1 +1 @@ -Gruppen-Messenger - verschlüsselte Kommunikation, Gruppenchat und Videoanrufe +Gruppen-Messenger – verschlüsselte Kommunikation, Gruppen und Videoanrufe diff --git a/fastlane/metadata/android/de-DE/title.txt b/fastlane/metadata/android/de-DE/title.txt index 6304f37925..edee751d06 100644 --- a/fastlane/metadata/android/de-DE/title.txt +++ b/fastlane/metadata/android/de-DE/title.txt @@ -1 +1 @@ -Element - Sicherer Messenger +Element – Sicher kommunizieren diff --git a/fastlane/metadata/android/en-US/changelogs/40105000.txt b/fastlane/metadata/android/en-US/changelogs/40105000.txt index 1bfa2b3dea..e86519e6e9 100644 --- a/fastlane/metadata/android/en-US/changelogs/40105000.txt +++ b/fastlane/metadata/android/en-US/changelogs/40105000.txt @@ -1,2 +1,2 @@ -Main changes in this version: New App Layout and Deferred DM enabled by default. -Full changelog: https://github.com/vector-im/element-android/releases \ No newline at end of file +Main changes in this version: Deferred DM enabled by default. +Full changelog: https://github.com/vector-im/element-android/releases diff --git a/fastlane/metadata/android/en-US/changelogs/40105020.txt b/fastlane/metadata/android/en-US/changelogs/40105020.txt new file mode 100644 index 0000000000..41795c468c --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/40105020.txt @@ -0,0 +1,2 @@ +Main changes in this version: New app layout enabled by default! +Full changelog: https://github.com/vector-im/element-android/releases diff --git a/fastlane/metadata/android/et/changelogs/40104360.txt b/fastlane/metadata/android/et/changelogs/40104360.txt new file mode 100644 index 0000000000..1c2733683d --- /dev/null +++ b/fastlane/metadata/android/et/changelogs/40104360.txt @@ -0,0 +1,3 @@ +Testide alt saad sisse lülitada uue kujunduse - palun proovi seda! +Parandasime teavitustega seotud vigu ning andmete sünkroniseerimist pika viitega. +Kogu ingliskeelne muudatuste logi: https://github.com/vector-im/element-android/releases diff --git a/fastlane/metadata/android/fa/changelogs/40104360.txt b/fastlane/metadata/android/fa/changelogs/40104360.txt new file mode 100644 index 0000000000..be14e1b9e2 --- /dev/null +++ b/fastlane/metadata/android/fa/changelogs/40104360.txt @@ -0,0 +1,3 @@ +چینش کارهٔ جدید می‌تواند در تنظیمات آزمایشگاه‌ها به کار بیفتند. لطفاً بیازماییدش! +رفع مشکلات مربوط به آگاهی غایب و همگام‌سازی تجمعّی طولانی. +گزارش دگرگونی کامل: https://github.com/vector-im/element-android/releases diff --git a/fastlane/metadata/android/fr-FR/changelogs/40104360.txt b/fastlane/metadata/android/fr-FR/changelogs/40104360.txt new file mode 100644 index 0000000000..80f59952d1 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/40104360.txt @@ -0,0 +1,3 @@ +La nouvelle présentation de l’application est disponibles dans les paramètres expérimentaux. Essayez-là ! +Correction de problèmes sur les notifications manquantes, et la synchronisation incrémentale lente. +Intégralité des changements : https://github.com/vector-im/element-android/releases diff --git a/fastlane/metadata/android/hu-HU/changelogs/40104360.txt b/fastlane/metadata/android/hu-HU/changelogs/40104360.txt new file mode 100644 index 0000000000..a63a8d1a83 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/40104360.txt @@ -0,0 +1,3 @@ +Az új alkalmazás megjelenés a Laborokban bekapcsolható. Próbáld ki! +Hiányzó értesítések és hosszú inkrementális szinkronizáció javítása. +Teljes változásnapló: https://github.com/vector-im/element-android/releases diff --git a/fastlane/metadata/android/id/changelogs/40104360.txt b/fastlane/metadata/android/id/changelogs/40104360.txt new file mode 100644 index 0000000000..be626f6350 --- /dev/null +++ b/fastlane/metadata/android/id/changelogs/40104360.txt @@ -0,0 +1,3 @@ +Tata Letak Aplikasi Baru dapat diaktifkan di pengaturan Uji Coba. Cobalah! +Perbariki masalah tentang notifikasi hilang, dan penyinkronan inkremental panjang. +Catatan perubahan lanjutan: https://github.com/vector-im/element-android/releases diff --git a/fastlane/metadata/android/it-IT/changelogs/40104360.txt b/fastlane/metadata/android/it-IT/changelogs/40104360.txt new file mode 100644 index 0000000000..c6749d3ff7 --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/40104360.txt @@ -0,0 +1,3 @@ +Nuova disposizione dell'app attivabile nelle impostazioni Laboratori. Provala! +Corretti problemi su notifiche mancanti e sincronizzazioni incrementali lunghe. +Cronologia completa: https://github.com/vector-im/element-android/releases diff --git a/fastlane/metadata/android/pt-BR/changelogs/40104360.txt b/fastlane/metadata/android/pt-BR/changelogs/40104360.txt new file mode 100644 index 0000000000..78a879ccb7 --- /dev/null +++ b/fastlane/metadata/android/pt-BR/changelogs/40104360.txt @@ -0,0 +1,3 @@ +Novo Layout de App poder ser habilitado nas configurações de Labs. Por favor dê uma chance! +Consertar problemas sobre notificação faltando, e sinc incremental longo. +Changelog completo: https://github.com/vector-im/element-android/releases diff --git a/fastlane/metadata/android/sk/changelogs/40104360.txt b/fastlane/metadata/android/sk/changelogs/40104360.txt new file mode 100644 index 0000000000..af4154b5cf --- /dev/null +++ b/fastlane/metadata/android/sk/changelogs/40104360.txt @@ -0,0 +1,3 @@ +Nové usporiadanie aplikácie môžete povoliť v nastaveniach laboratórií. Vyskúšajte to! +Oprava problémov týkajúcich sa chýbajúcich oznámení a dlhej inkrementálnej synchronizácie. +Úplný zoznam zmien: https://github.com/vector-im/element-android/releases diff --git a/fastlane/metadata/android/uk/changelogs/40104360.txt b/fastlane/metadata/android/uk/changelogs/40104360.txt new file mode 100644 index 0000000000..a2c9bcc4b5 --- /dev/null +++ b/fastlane/metadata/android/uk/changelogs/40104360.txt @@ -0,0 +1,3 @@ +Новий макет програми можна увімкнути в налаштуваннях лабораторії. Спробуйте! +Виправлено проблеми з відсутністю сповіщень та тривалою інкрементною синхронізацією. +Список усіх змін: https://github.com/vector-im/element-android/releases diff --git a/fastlane/metadata/android/uk/full_description.txt b/fastlane/metadata/android/uk/full_description.txt index c046d8a40a..330ddde4ae 100644 --- a/fastlane/metadata/android/uk/full_description.txt +++ b/fastlane/metadata/android/uk/full_description.txt @@ -5,7 +5,7 @@ Element — це і безпечний месенджер, і застосуно - Повністю зашифровані повідомлення для надання можливості безпечнішого корпоративного спілкування, навіть для віддалених працівників - Децентралізований чат на основі відкритого коду Matrix - Безпечний обмін файлами із зашифрованими даними для керування проєктами -- Відеочати з передачею голосу через IP та показом екрану іншим +- Відеочати з передачею голосу через IP та показом екрана іншим - Проста інтеграція з вашими улюбленими інструментами для онлайн-співпраці, інструментами керування проєктами, послугами VoIP та іншими застосунками обміну повідомленнями для команд Element цілковито відрізняється від інших застосунків обміну повідомленнями та спільної роботи. Він працює на Matrix, відкритій мережі для безпечного обміну повідомленнями та децентралізованого зв'язку. Це дозволяє самостійне розгортання, щоб надати користувачам якнайбільше володіння та контролю над їх даними та повідомленнями. diff --git a/fastlane/metadata/android/zh-CN/full_description.txt b/fastlane/metadata/android/zh-CN/full_description.txt index 9b60098c34..03fdb6e34d 100644 --- a/fastlane/metadata/android/zh-CN/full_description.txt +++ b/fastlane/metadata/android/zh-CN/full_description.txt @@ -30,7 +30,7 @@ Element 透过不同的方式让你掌控一切: 你可以与 Matrix 网络上的任何人聊天,不论他们是使用 Element、其他 Matrix 应用或其他通讯应用。 超级安全 -真正的端到端加密(仅有那些在对话中的可以解密讯息)以及交叉签章装置验证。 +真正的端到端加密(仅有那些在对话中的人可以解密讯息)以及交叉签章装置验证。 完整的通讯与整合 信息传递、语音与视频通话、文件分享、画面分享与超多的整合、机器人与挂件。建构房间、社群、保持联络并完成工作。 diff --git a/fastlane/metadata/android/zh-CN/short_description.txt b/fastlane/metadata/android/zh-CN/short_description.txt index e271e7f9a4..8cfea85b90 100644 --- a/fastlane/metadata/android/zh-CN/short_description.txt +++ b/fastlane/metadata/android/zh-CN/short_description.txt @@ -1 +1 @@ -群组消息应用-加密的消息传递、群组聊天和视频通话 +群组消息应用——加密的消息传递、群组聊天和视频通话 diff --git a/fastlane/metadata/android/zh-TW/changelogs/40104360.txt b/fastlane/metadata/android/zh-TW/changelogs/40104360.txt new file mode 100644 index 0000000000..be36b60840 --- /dev/null +++ b/fastlane/metadata/android/zh-TW/changelogs/40104360.txt @@ -0,0 +1,3 @@ +新的應用程式佈局可在「實驗室」設定中啟用。請試試看! +修復關於遺失通知的問題,以及增量同步需要長時間的問題。 +完整的變更紀錄:https://github.com/vector-im/element-android/releases diff --git a/gradle.properties b/gradle.properties index cf480460cb..7fbe2c0fc0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -16,6 +16,7 @@ org.gradle.caching=true # Android Settings android.enableJetifier=true +android.jetifier.ignorelist=android-base-common,common android.useAndroidX=true #Project Settings diff --git a/library/attachment-viewer/src/main/java/im/vector/lib/attachmentviewer/AttachmentViewerActivity.kt b/library/attachment-viewer/src/main/java/im/vector/lib/attachmentviewer/AttachmentViewerActivity.kt index 764cf8419a..98398760d1 100644 --- a/library/attachment-viewer/src/main/java/im/vector/lib/attachmentviewer/AttachmentViewerActivity.kt +++ b/library/attachment-viewer/src/main/java/im/vector/lib/attachmentviewer/AttachmentViewerActivity.kt @@ -17,7 +17,6 @@ package im.vector.lib.attachmentviewer -import android.annotation.SuppressLint import android.graphics.Color import android.os.Build import android.os.Bundle @@ -136,7 +135,6 @@ abstract class AttachmentViewerActivity : AppCompatActivity(), AttachmentEventLi } } - @Suppress("DEPRECATION") private fun setDecorViewFullScreen() { // This is important for the dispatchTouchEvent, if not we must correct // the touch coordinates @@ -144,22 +142,20 @@ abstract class AttachmentViewerActivity : AppCompatActivity(), AttachmentEventLi // New API instead of SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN and SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION window.setDecorFitsSystemWindows(false) // New API instead of SYSTEM_UI_FLAG_IMMERSIVE - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { - window.decorView.windowInsetsController?.systemBarsBehavior = WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE - } else { - @SuppressLint("WrongConstant") - window.decorView.windowInsetsController?.systemBarsBehavior = WindowInsetsController.BEHAVIOR_SHOW_BARS_BY_SWIPE - } + window.decorView.windowInsetsController?.systemBarsBehavior = WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE // New API instead of FLAG_TRANSLUCENT_STATUS window.statusBarColor = ContextCompat.getColor(this, R.color.half_transparent_status_bar) // new API instead of FLAG_TRANSLUCENT_NAVIGATION window.navigationBarColor = ContextCompat.getColor(this, R.color.half_transparent_status_bar) } else { + @Suppress("DEPRECATION") window.decorView.systemUiVisibility = ( View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_IMMERSIVE) + @Suppress("DEPRECATION") window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS) + @Suppress("DEPRECATION") window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION) } } @@ -344,7 +340,6 @@ abstract class AttachmentViewerActivity : AppCompatActivity(), AttachmentEventLi ?.handleCommand(commands) } - @Suppress("DEPRECATION") private fun hideSystemUI() { systemUiVisibility = false // Enables regular immersive mode. @@ -356,17 +351,13 @@ abstract class AttachmentViewerActivity : AppCompatActivity(), AttachmentEventLi // new API instead of SYSTEM_UI_FLAG_HIDE_NAVIGATION window.decorView.windowInsetsController?.hide(WindowInsets.Type.navigationBars()) // New API instead of SYSTEM_UI_FLAG_IMMERSIVE - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { - window.decorView.windowInsetsController?.systemBarsBehavior = WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE - } else { - @SuppressLint("WrongConstant") - window.decorView.windowInsetsController?.systemBarsBehavior = WindowInsetsController.BEHAVIOR_SHOW_BARS_BY_SWIPE - } + window.decorView.windowInsetsController?.systemBarsBehavior = WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE // New API instead of FLAG_TRANSLUCENT_STATUS window.statusBarColor = ContextCompat.getColor(this, R.color.half_transparent_status_bar) // New API instead of FLAG_TRANSLUCENT_NAVIGATION window.navigationBarColor = ContextCompat.getColor(this, R.color.half_transparent_status_bar) } else { + @Suppress("DEPRECATION") window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_IMMERSIVE // Set the content to appear under the system bars so that the // content doesn't resize when the system bars hide and show. @@ -381,13 +372,13 @@ abstract class AttachmentViewerActivity : AppCompatActivity(), AttachmentEventLi // Shows the system bars by removing all the flags // except for the ones that make the content appear under the system bars. - @Suppress("DEPRECATION") private fun showSystemUI() { systemUiVisibility = true if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { // New API instead of SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN and SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION window.setDecorFitsSystemWindows(false) } else { + @Suppress("DEPRECATION") window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN) diff --git a/library/external/dialpad/build.gradle b/library/external/dialpad/build.gradle new file mode 100644 index 0000000000..fade8ddf30 --- /dev/null +++ b/library/external/dialpad/build.gradle @@ -0,0 +1,30 @@ +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' + +android { + compileSdk versions.compileSdk + + defaultConfig { + minSdk versions.minSdk + targetSdk versions.targetSdk + } + + compileOptions { + sourceCompatibility versions.sourceCompat + targetCompatibility versions.targetCompat + } + + kotlinOptions { + jvmTarget = "11" + } +} + +dependencies { + implementation libs.androidx.appCompat +} + +afterEvaluate { + tasks.findAll { it.name.startsWith("lint") }.each { + it.enabled = false + } +} diff --git a/library/external/dialpad/src/main/AndroidManifest.xml b/library/external/dialpad/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..1d412d0ae5 --- /dev/null +++ b/library/external/dialpad/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/library/external/dialpad/src/main/java/com/android/dialer/animation/AnimUtils.java b/library/external/dialpad/src/main/java/com/android/dialer/animation/AnimUtils.java new file mode 100644 index 0000000000..b6a32c587c --- /dev/null +++ b/library/external/dialpad/src/main/java/com/android/dialer/animation/AnimUtils.java @@ -0,0 +1,26 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialer.animation; + +import android.view.animation.Interpolator; + +import com.android.dialer.compat.PathInterpolatorCompat; + +public class AnimUtils { + public static final Interpolator EASE_OUT_EASE_IN = + PathInterpolatorCompat.create(0.4f, 0, 0.2f, 1); +} diff --git a/library/external/dialpad/src/main/java/com/android/dialer/compat/PathInterpolatorCompat.java b/library/external/dialpad/src/main/java/com/android/dialer/compat/PathInterpolatorCompat.java new file mode 100644 index 0000000000..7139bc4af1 --- /dev/null +++ b/library/external/dialpad/src/main/java/com/android/dialer/compat/PathInterpolatorCompat.java @@ -0,0 +1,120 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialer.compat; + +import android.graphics.Path; +import android.graphics.PathMeasure; +import android.os.Build; +import android.view.animation.Interpolator; +import android.view.animation.PathInterpolator; + +public class PathInterpolatorCompat { + + public static Interpolator create( + float controlX1, float controlY1, float controlX2, float controlY2) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + return new PathInterpolator(controlX1, controlY1, controlX2, controlY2); + } + return new PathInterpolatorBase(controlX1, controlY1, controlX2, controlY2); + } + + private static class PathInterpolatorBase implements Interpolator { + + /** Governs the accuracy of the approximation of the {@link Path}. */ + private static final float PRECISION = 0.002f; + + private final float[] mX; + private final float[] mY; + + public PathInterpolatorBase(Path path) { + final PathMeasure pathMeasure = new PathMeasure(path, false /* forceClosed */); + + final float pathLength = pathMeasure.getLength(); + final int numPoints = (int) (pathLength / PRECISION) + 1; + + mX = new float[numPoints]; + mY = new float[numPoints]; + + final float[] position = new float[2]; + for (int i = 0; i < numPoints; ++i) { + final float distance = (i * pathLength) / (numPoints - 1); + pathMeasure.getPosTan(distance, position, null /* tangent */); + + mX[i] = position[0]; + mY[i] = position[1]; + } + } + + public PathInterpolatorBase(float controlX, float controlY) { + this(createQuad(controlX, controlY)); + } + + public PathInterpolatorBase( + float controlX1, float controlY1, float controlX2, float controlY2) { + this(createCubic(controlX1, controlY1, controlX2, controlY2)); + } + + private static Path createQuad(float controlX, float controlY) { + final Path path = new Path(); + path.moveTo(0.0f, 0.0f); + path.quadTo(controlX, controlY, 1.0f, 1.0f); + return path; + } + + private static Path createCubic( + float controlX1, float controlY1, float controlX2, float controlY2) { + final Path path = new Path(); + path.moveTo(0.0f, 0.0f); + path.cubicTo(controlX1, controlY1, controlX2, controlY2, 1.0f, 1.0f); + return path; + } + + @Override + public float getInterpolation(float t) { + if (t <= 0.0f) { + return 0.0f; + } else if (t >= 1.0f) { + return 1.0f; + } + + // Do a binary search for the correct x to interpolate between. + int startIndex = 0; + int endIndex = mX.length - 1; + while (endIndex - startIndex > 1) { + int midIndex = (startIndex + endIndex) / 2; + if (t < mX[midIndex]) { + endIndex = midIndex; + } else { + startIndex = midIndex; + } + } + + final float xRange = mX[endIndex] - mX[startIndex]; + if (xRange == 0) { + return mY[startIndex]; + } + + final float tInRange = t - mX[startIndex]; + final float fraction = tInRange / xRange; + + final float startY = mY[startIndex]; + final float endY = mY[endIndex]; + + return startY + (fraction * (endY - startY)); + } + } +} diff --git a/library/external/dialpad/src/main/java/com/android/dialer/dialpadview/DialpadKeyButton.java b/library/external/dialpad/src/main/java/com/android/dialer/dialpadview/DialpadKeyButton.java new file mode 100644 index 0000000000..de6d2c6282 --- /dev/null +++ b/library/external/dialpad/src/main/java/com/android/dialer/dialpadview/DialpadKeyButton.java @@ -0,0 +1,231 @@ +/* + * Copyright (C) 2012 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.dialer.dialpadview; + +import android.content.Context; +import android.graphics.RectF; +import android.os.Bundle; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewConfiguration; +import android.view.accessibility.AccessibilityEvent; +import android.view.accessibility.AccessibilityManager; +import android.view.accessibility.AccessibilityNodeInfo; +import android.widget.FrameLayout; + +/** + * Custom class for dialpad buttons. + * + *

When touch exploration mode is enabled for accessibility, this class implements the + * lift-to-type interaction model: + * + *

    + *
  • Hovering over the button will cause it to gain accessibility focus + *
  • Removing the hover pointer while inside the bounds of the button will perform a click action + *
  • If long-click is supported, hovering over the button for a longer period of time will switch + * to the long-click action + *
  • Moving the hover pointer outside of the bounds of the button will restore to the normal click + * action + *
+ */ +public class DialpadKeyButton extends FrameLayout { + + /** Timeout before switching to long-click accessibility mode. */ + private static final int LONG_HOVER_TIMEOUT = ViewConfiguration.getLongPressTimeout() * 2; + + /** Accessibility manager instance used to check touch exploration state. */ + private AccessibilityManager mAccessibilityManager; + + /** Bounds used to filter HOVER_EXIT events. */ + private RectF mHoverBounds = new RectF(); + + /** Whether this view is currently in the long-hover state. */ + private boolean mLongHovered; + + /** Alternate content description for long-hover state. */ + private CharSequence mLongHoverContentDesc; + + /** Backup of standard content description. Used for accessibility. */ + private CharSequence mBackupContentDesc; + + /** Backup of clickable property. Used for accessibility. */ + private boolean mWasClickable; + + /** Backup of long-clickable property. Used for accessibility. */ + private boolean mWasLongClickable; + + /** Runnable used to trigger long-click mode for accessibility. */ + private Runnable mLongHoverRunnable; + + private OnPressedListener mOnPressedListener; + + public DialpadKeyButton(Context context, AttributeSet attrs) { + super(context, attrs); + initForAccessibility(context); + } + + public DialpadKeyButton(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + initForAccessibility(context); + } + + public void setOnPressedListener(OnPressedListener onPressedListener) { + mOnPressedListener = onPressedListener; + } + + private void initForAccessibility(Context context) { + mAccessibilityManager = + (AccessibilityManager) context.getSystemService(Context.ACCESSIBILITY_SERVICE); + } + + public void setLongHoverContentDescription(CharSequence contentDescription) { + mLongHoverContentDesc = contentDescription; + + if (mLongHovered) { + super.setContentDescription(mLongHoverContentDesc); + } + } + + @Override + public void setContentDescription(CharSequence contentDescription) { + if (mLongHovered) { + mBackupContentDesc = contentDescription; + } else { + super.setContentDescription(contentDescription); + } + } + + @Override + public void setPressed(boolean pressed) { + super.setPressed(pressed); + if (mOnPressedListener != null) { + mOnPressedListener.onPressed(this, pressed); + } + } + + @Override + public void onSizeChanged(int w, int h, int oldw, int oldh) { + super.onSizeChanged(w, h, oldw, oldh); + + mHoverBounds.left = getPaddingLeft(); + mHoverBounds.right = w - getPaddingRight(); + mHoverBounds.top = getPaddingTop(); + mHoverBounds.bottom = h - getPaddingBottom(); + } + + @Override + public boolean performAccessibilityAction(int action, Bundle arguments) { + if (action == AccessibilityNodeInfo.ACTION_CLICK) { + simulateClickForAccessibility(); + return true; + } + + return super.performAccessibilityAction(action, arguments); + } + + @Override + public boolean onHoverEvent(MotionEvent event) { + // When touch exploration is turned on, lifting a finger while inside + // the button's hover target bounds should perform a click action. + if (mAccessibilityManager.isEnabled() && mAccessibilityManager.isTouchExplorationEnabled()) { + switch (event.getActionMasked()) { + case MotionEvent.ACTION_HOVER_ENTER: + // Lift-to-type temporarily disables double-tap activation. + mWasClickable = isClickable(); + mWasLongClickable = isLongClickable(); + if (mWasLongClickable && mLongHoverContentDesc != null) { + if (mLongHoverRunnable == null) { + mLongHoverRunnable = + new Runnable() { + @Override + public void run() { + setLongHovered(true); + announceForAccessibility(mLongHoverContentDesc); + } + }; + } + postDelayed(mLongHoverRunnable, LONG_HOVER_TIMEOUT); + } + + setClickable(false); + setLongClickable(false); + break; + case MotionEvent.ACTION_HOVER_EXIT: + if (mHoverBounds.contains(event.getX(), event.getY())) { + if (mLongHovered) { + performLongClick(); + } else { + simulateClickForAccessibility(); + } + } + + cancelLongHover(); + setClickable(mWasClickable); + setLongClickable(mWasLongClickable); + break; + } + } + + return super.onHoverEvent(event); + } + + /** + * When accessibility is on, simulate press and release to preserve the semantic meaning of + * performClick(). Required for Braille support. + */ + private void simulateClickForAccessibility() { + // Checking the press state prevents double activation. + if (isPressed()) { + return; + } + + setPressed(true); + + // Stay consistent with performClick() by sending the event after + // setting the pressed state but before performing the action. + sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED); + + setPressed(false); + } + + private void setLongHovered(boolean enabled) { + if (mLongHovered != enabled) { + mLongHovered = enabled; + + // Switch between normal and alternate description, if available. + if (enabled) { + mBackupContentDesc = getContentDescription(); + super.setContentDescription(mLongHoverContentDesc); + } else { + super.setContentDescription(mBackupContentDesc); + } + } + } + + private void cancelLongHover() { + if (mLongHoverRunnable != null) { + removeCallbacks(mLongHoverRunnable); + } + setLongHovered(false); + } + + public interface OnPressedListener { + + void onPressed(View view, boolean pressed); + } +} diff --git a/library/external/dialpad/src/main/java/com/android/dialer/dialpadview/DialpadTextView.java b/library/external/dialpad/src/main/java/com/android/dialer/dialpadview/DialpadTextView.java new file mode 100644 index 0000000000..5b1b7bb5dc --- /dev/null +++ b/library/external/dialpad/src/main/java/com/android/dialer/dialpadview/DialpadTextView.java @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialer.dialpadview; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.Rect; +import android.util.AttributeSet; +import android.widget.TextView; + +/** + * This is a custom text view intended only for rendering the numerals (and star and pound) on the + * dialpad. TextView has built in top/bottom padding to help account for ascenders/descenders. + * + *

Since vertical space is at a premium on the dialpad, particularly if the font size is scaled + * to a larger default, for the dialpad we use this class to more precisely render characters + * according to the precise amount of space they need. + */ +public class DialpadTextView extends TextView { + + private Rect mTextBounds = new Rect(); + private String mTextStr; + + public DialpadTextView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + /** Draw the text to fit within the height/width which have been specified during measurement. */ + @Override + public void draw(Canvas canvas) { + Paint paint = getPaint(); + + // Without this, the draw does not respect the style's specified text color. + paint.setColor(getCurrentTextColor()); + + // The text bounds values are relative and can be negative,, so rather than specifying a + // standard origin such as 0, 0, we need to use negative of the left/top bounds. + // For example, the bounds may be: Left: 11, Right: 37, Top: -77, Bottom: 0 + canvas.drawText(mTextStr, -mTextBounds.left, -mTextBounds.top, paint); + } + + /** + * Calculate the pixel-accurate bounds of the text when rendered, and use that to specify the + * height and width. + */ + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + mTextStr = getText().toString(); + getPaint().getTextBounds(mTextStr, 0, mTextStr.length(), mTextBounds); + + int width = resolveSize(mTextBounds.width(), widthMeasureSpec); + int height = resolveSize(mTextBounds.height(), heightMeasureSpec); + setMeasuredDimension(width, height); + } +} diff --git a/library/external/dialpad/src/main/java/com/android/dialer/dialpadview/DialpadView.java b/library/external/dialpad/src/main/java/com/android/dialer/dialpadview/DialpadView.java new file mode 100644 index 0000000000..5c6ce46257 --- /dev/null +++ b/library/external/dialpad/src/main/java/com/android/dialer/dialpadview/DialpadView.java @@ -0,0 +1,455 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.dialer.dialpadview; + +import android.animation.AnimatorListenerAdapter; +import android.content.Context; +import android.content.res.Configuration; +import android.content.res.Resources; +import android.graphics.drawable.Drawable; +import android.os.Build; +import android.text.Spannable; +import android.text.TextUtils; +import android.text.style.TtsSpan; +import android.util.AttributeSet; +import android.util.Log; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; +import android.view.ViewPropertyAnimator; +import android.view.accessibility.AccessibilityManager; +import android.widget.EditText; +import android.widget.ImageButton; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.android.dialer.animation.AnimUtils; + +import java.text.DecimalFormat; +import java.text.NumberFormat; +import java.util.Locale; + +/** View that displays a twelve-key phone dialpad. */ +public class DialpadView extends LinearLayout { + + private static final String TAG = DialpadView.class.getSimpleName(); + + private static final double DELAY_MULTIPLIER = 0.66; + private static final double DURATION_MULTIPLIER = 0.8; + // For animation. + private static final int KEY_FRAME_DURATION = 33; + /** {@code True} if the dialpad is in landscape orientation. */ + private final boolean mIsLandscape; + /** {@code True} if the dialpad is showing in a right-to-left locale. */ + private final boolean mIsRtl; + + private final int[] mButtonIds = + new int[] { + R.id.zero, + R.id.one, + R.id.two, + R.id.three, + R.id.four, + R.id.five, + R.id.six, + R.id.seven, + R.id.eight, + R.id.nine, + R.id.star, + R.id.pound + }; + private EditText mDigits; + private ImageButton mDelete; + private View mOverflowMenuButton; + private ViewGroup mRateContainer; + private TextView mIldCountry; + private TextView mIldRate; + private boolean mCanDigitsBeEdited; + private int mTranslateDistance; + + public DialpadView(Context context) { + this(context, null); + } + + public DialpadView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public DialpadView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + + mTranslateDistance = + getResources().getDimensionPixelSize(R.dimen.dialpad_key_button_translate_y); + + mIsLandscape = + getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE; + mIsRtl = Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 && + TextUtils.getLayoutDirectionFromLocale(Locale.getDefault()) == View.LAYOUT_DIRECTION_RTL; + } + + @Override + protected void onFinishInflate() { + setupKeypad(); + mDigits = (EditText) findViewById(R.id.digits); + mDelete = (ImageButton) findViewById(R.id.deleteButton); + mOverflowMenuButton = findViewById(R.id.dialpad_overflow); + mRateContainer = (ViewGroup) findViewById(R.id.rate_container); + mIldCountry = (TextView) mRateContainer.findViewById(R.id.ild_country); + mIldRate = (TextView) mRateContainer.findViewById(R.id.ild_rate); + + AccessibilityManager accessibilityManager = + (AccessibilityManager) getContext().getSystemService(Context.ACCESSIBILITY_SERVICE); + if (accessibilityManager.isEnabled()) { + // The text view must be selected to send accessibility events. + mDigits.setSelected(true); + } + } + + private void setupKeypad() { + final int[] letterIds = + new int[] { + R.string.dialpad_0_letters, + R.string.dialpad_1_letters, + R.string.dialpad_2_letters, + R.string.dialpad_3_letters, + R.string.dialpad_4_letters, + R.string.dialpad_5_letters, + R.string.dialpad_6_letters, + R.string.dialpad_7_letters, + R.string.dialpad_8_letters, + R.string.dialpad_9_letters, + R.string.dialpad_star_letters, + R.string.dialpad_pound_letters + }; + + final Resources resources = getContext().getResources(); + + DialpadKeyButton dialpadKey; + TextView numberView; + TextView lettersView; + + final Locale currentLocale = resources.getConfiguration().locale; + final NumberFormat nf; + // We translate dialpad numbers only for "fa" and not any other locale + // ("ar" anybody ?). + if ("fa".equals(currentLocale.getLanguage())) { + nf = DecimalFormat.getInstance(resources.getConfiguration().locale); + } else { + nf = DecimalFormat.getInstance(Locale.ENGLISH); + } + + for (int i = 0; i < mButtonIds.length; i++) { + dialpadKey = (DialpadKeyButton) findViewById(mButtonIds[i]); + numberView = (TextView) dialpadKey.findViewById(R.id.dialpad_key_number); + lettersView = (TextView) dialpadKey.findViewById(R.id.dialpad_key_letters); + + final String numberString; + final CharSequence numberContentDescription; + if (mButtonIds[i] == R.id.pound) { + numberString = resources.getString(R.string.dialpad_pound_number); + numberContentDescription = numberString; + } else if (mButtonIds[i] == R.id.star) { + numberString = resources.getString(R.string.dialpad_star_number); + numberContentDescription = numberString; + } else { + numberString = nf.format(i); + // The content description is used for Talkback key presses. The number is + // separated by a "," to introduce a slight delay. Convert letters into a verbatim + // span so that they are read as letters instead of as one word. + String letters = resources.getString(letterIds[i]); + Spannable spannable = + Spannable.Factory.getInstance().newSpannable(numberString + "," + letters); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + spannable.setSpan( + (new TtsSpan.VerbatimBuilder(letters)).build(), + numberString.length() + 1, + numberString.length() + 1 + letters.length(), + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + } + numberContentDescription = spannable; + } + + numberView.setText(numberString); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + numberView.setElegantTextHeight(false); + } + dialpadKey.setContentDescription(numberContentDescription); + + if (lettersView != null) { + lettersView.setText(resources.getString(letterIds[i])); + } + } + + final DialpadKeyButton one = (DialpadKeyButton) findViewById(R.id.one); + one.setLongHoverContentDescription(resources.getText(R.string.description_voicemail_button)); + + final DialpadKeyButton zero = (DialpadKeyButton) findViewById(R.id.zero); + zero.setLongHoverContentDescription(resources.getText(R.string.description_image_button_plus)); + } + + private Drawable getDrawableCompat(Context context, int id) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + return context.getDrawable(id); + } else { + return context.getResources().getDrawable(id); + } + } + + public void setShowVoicemailButton(boolean show) { + View view = findViewById(R.id.dialpad_key_voicemail); + if (view != null) { + view.setVisibility(show ? View.VISIBLE : View.INVISIBLE); + } + } + + /** + * Whether or not the digits above the dialer can be edited. + * + * @param canBeEdited If true, the backspace button will be shown and the digits EditText will be + * configured to allow text manipulation. + */ + public void setCanDigitsBeEdited(boolean canBeEdited) { +// View deleteButton = findViewById(R.id.deleteButton); +// deleteButton.setVisibility(canBeEdited ? View.VISIBLE : View.INVISIBLE); +// View overflowMenuButton = findViewById(R.id.dialpad_overflow); +// overflowMenuButton.setVisibility(canBeEdited ? View.VISIBLE : View.GONE); + +// EditText digits = (EditText) findViewById(R.id.digits); +// digits.setClickable(canBeEdited); +// digits.setLongClickable(canBeEdited); +// digits.setFocusableInTouchMode(canBeEdited); +// digits.setCursorVisible(false); + + mCanDigitsBeEdited = canBeEdited; + } + + public void setCallRateInformation(String countryName, String displayRate) { + if (TextUtils.isEmpty(countryName) && TextUtils.isEmpty(displayRate)) { + mRateContainer.setVisibility(View.GONE); + return; + } + mRateContainer.setVisibility(View.VISIBLE); + mIldCountry.setText(countryName); + mIldRate.setText(displayRate); + } + + public boolean canDigitsBeEdited() { + return mCanDigitsBeEdited; + } + + /** + * Always returns true for onHoverEvent callbacks, to fix problems with accessibility due to the + * dialpad overlaying other fragments. + */ + @Override + public boolean onHoverEvent(MotionEvent event) { + return true; + } + + public void animateShow() { + // This is a hack; without this, the setTranslationY is delayed in being applied, and the + // numbers appear at their original position (0) momentarily before animating. + final AnimatorListenerAdapter showListener = new AnimatorListenerAdapter() {}; + + for (int i = 0; i < mButtonIds.length; i++) { + int delay = (int) (getKeyButtonAnimationDelay(mButtonIds[i]) * DELAY_MULTIPLIER); + int duration = (int) (getKeyButtonAnimationDuration(mButtonIds[i]) * DURATION_MULTIPLIER); + final DialpadKeyButton dialpadKey = (DialpadKeyButton) findViewById(mButtonIds[i]); + + ViewPropertyAnimator animator = dialpadKey.animate(); + if (mIsLandscape) { + // Landscape orientation requires translation along the X axis. + // For RTL locales, ensure we translate negative on the X axis. + dialpadKey.setTranslationX((mIsRtl ? -1 : 1) * mTranslateDistance); + animator.translationX(0); + } else { + // Portrait orientation requires translation along the Y axis. + dialpadKey.setTranslationY(mTranslateDistance); + animator.translationY(0); + } + animator + .setInterpolator(AnimUtils.EASE_OUT_EASE_IN) + .setStartDelay(delay) + .setDuration(duration) + .setListener(showListener) + .start(); + } + } + + public EditText getDigits() { + return mDigits; + } + + public ImageButton getDeleteButton() { + return mDelete; + } + + public View getOverflowMenuButton() { + return mOverflowMenuButton; + } + + /** + * Get the animation delay for the buttons, taking into account whether the dialpad is in + * landscape left-to-right, landscape right-to-left, or portrait. + * + * @param buttonId The button ID. + * @return The animation delay. + */ + private int getKeyButtonAnimationDelay(int buttonId) { + if (mIsLandscape) { + if (mIsRtl) { + if (buttonId == R.id.three) { + return KEY_FRAME_DURATION * 1; + } else if (buttonId == R.id.six) { + return KEY_FRAME_DURATION * 2; + } else if (buttonId == R.id.nine) { + return KEY_FRAME_DURATION * 3; + } else if (buttonId == R.id.pound) { + return KEY_FRAME_DURATION * 4; + } else if (buttonId == R.id.two) { + return KEY_FRAME_DURATION * 5; + } else if (buttonId == R.id.five) { + return KEY_FRAME_DURATION * 6; + } else if (buttonId == R.id.eight) { + return KEY_FRAME_DURATION * 7; + } else if (buttonId == R.id.zero) { + return KEY_FRAME_DURATION * 8; + } else if (buttonId == R.id.one) { + return KEY_FRAME_DURATION * 9; + } else if (buttonId == R.id.four) { + return KEY_FRAME_DURATION * 10; + } else if (buttonId == R.id.seven || buttonId == R.id.star) { + return KEY_FRAME_DURATION * 11; + } + } else { + if (buttonId == R.id.one) { + return KEY_FRAME_DURATION * 1; + } else if (buttonId == R.id.four) { + return KEY_FRAME_DURATION * 2; + } else if (buttonId == R.id.seven) { + return KEY_FRAME_DURATION * 3; + } else if (buttonId == R.id.star) { + return KEY_FRAME_DURATION * 4; + } else if (buttonId == R.id.two) { + return KEY_FRAME_DURATION * 5; + } else if (buttonId == R.id.five) { + return KEY_FRAME_DURATION * 6; + } else if (buttonId == R.id.eight) { + return KEY_FRAME_DURATION * 7; + } else if (buttonId == R.id.zero) { + return KEY_FRAME_DURATION * 8; + } else if (buttonId == R.id.three) { + return KEY_FRAME_DURATION * 9; + } else if (buttonId == R.id.six) { + return KEY_FRAME_DURATION * 10; + } else if (buttonId == R.id.nine || buttonId == R.id.pound) { + return KEY_FRAME_DURATION * 11; + } + } + } else { + if (buttonId == R.id.one) { + return KEY_FRAME_DURATION * 1; + } else if (buttonId == R.id.two) { + return KEY_FRAME_DURATION * 2; + } else if (buttonId == R.id.three) { + return KEY_FRAME_DURATION * 3; + } else if (buttonId == R.id.four) { + return KEY_FRAME_DURATION * 4; + } else if (buttonId == R.id.five) { + return KEY_FRAME_DURATION * 5; + } else if (buttonId == R.id.six) { + return KEY_FRAME_DURATION * 6; + } else if (buttonId == R.id.seven) { + return KEY_FRAME_DURATION * 7; + } else if (buttonId == R.id.eight) { + return KEY_FRAME_DURATION * 8; + } else if (buttonId == R.id.nine) { + return KEY_FRAME_DURATION * 9; + } else if (buttonId == R.id.star) { + return KEY_FRAME_DURATION * 10; + } else if (buttonId == R.id.zero || buttonId == R.id.pound) { + return KEY_FRAME_DURATION * 11; + } + } + + Log.wtf(TAG, "Attempted to get animation delay for invalid key button id."); + return 0; + } + + /** + * Get the button animation duration, taking into account whether the dialpad is in landscape + * left-to-right, landscape right-to-left, or portrait. + * + * @param buttonId The button ID. + * @return The animation duration. + */ + private int getKeyButtonAnimationDuration(int buttonId) { + if (mIsLandscape) { + if (mIsRtl) { + if (buttonId == R.id.one + || buttonId == R.id.four + || buttonId == R.id.seven + || buttonId == R.id.star) { + return KEY_FRAME_DURATION * 8; + } else if (buttonId == R.id.two + || buttonId == R.id.five + || buttonId == R.id.eight + || buttonId == R.id.zero) { + return KEY_FRAME_DURATION * 9; + } else if (buttonId == R.id.three + || buttonId == R.id.six + || buttonId == R.id.nine + || buttonId == R.id.pound) { + return KEY_FRAME_DURATION * 10; + } + } else { + if (buttonId == R.id.one + || buttonId == R.id.four + || buttonId == R.id.seven + || buttonId == R.id.star) { + return KEY_FRAME_DURATION * 10; + } else if (buttonId == R.id.two + || buttonId == R.id.five + || buttonId == R.id.eight + || buttonId == R.id.zero) { + return KEY_FRAME_DURATION * 9; + } else if (buttonId == R.id.three + || buttonId == R.id.six + || buttonId == R.id.nine + || buttonId == R.id.pound) { + return KEY_FRAME_DURATION * 8; + } + } + } else { + if (buttonId == R.id.one + || buttonId == R.id.two + || buttonId == R.id.three + || buttonId == R.id.four + || buttonId == R.id.five + || buttonId == R.id.six) { + return KEY_FRAME_DURATION * 10; + } else if (buttonId == R.id.seven || buttonId == R.id.eight || buttonId == R.id.nine) { + return KEY_FRAME_DURATION * 9; + } else if (buttonId == R.id.star || buttonId == R.id.zero || buttonId == R.id.pound) { + return KEY_FRAME_DURATION * 8; + } + } + + Log.wtf(TAG, "Attempted to get animation duration for invalid key button id."); + return 0; + } +} diff --git a/library/external/dialpad/src/main/java/com/android/dialer/dialpadview/DigitsEditText.java b/library/external/dialpad/src/main/java/com/android/dialer/dialpadview/DigitsEditText.java new file mode 100644 index 0000000000..053b301eed --- /dev/null +++ b/library/external/dialpad/src/main/java/com/android/dialer/dialpadview/DigitsEditText.java @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.dialer.dialpadview; + +import android.content.Context; +import android.graphics.Rect; +import android.text.InputType; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.inputmethod.InputMethodManager; + +import com.android.dialer.widget.ResizingTextEditText; + +/** EditText which suppresses IME show up. */ +public class DigitsEditText extends ResizingTextEditText { + private OnTextContextMenuClickListener mOnTextContextMenuClickListener; + + public DigitsEditText(Context context, AttributeSet attrs) { + super(context, attrs); + setInputType(getInputType() | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); + setShowSoftInputOnFocus(false); + } + + @Override + protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { + super.onFocusChanged(focused, direction, previouslyFocusedRect); + final InputMethodManager imm = + ((InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE)); + if (imm != null && imm.isActive(this)) { + imm.hideSoftInputFromWindow(getApplicationWindowToken(), 0); + } + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + final boolean ret = super.onTouchEvent(event); + // Must be done after super.onTouchEvent() + final InputMethodManager imm = + ((InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE)); + if (imm != null && imm.isActive(this)) { + imm.hideSoftInputFromWindow(getApplicationWindowToken(), 0); + } + return ret; + } + + @Override + protected void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter) { + super.onTextChanged(text, start, lengthBefore, lengthAfter); + if (isCursorVisible()) { + setSelection(getText().length()); + } + } + + @Override + public boolean onTextContextMenuItem(int id) { + boolean value = super.onTextContextMenuItem(id); + if (mOnTextContextMenuClickListener != null) { + mOnTextContextMenuClickListener.onTextContextMenuClickListener(id); + } + return value; + } + + public interface OnTextContextMenuClickListener { + void onTextContextMenuClickListener(int id); + } + + public void setOnTextContextMenuClickListener(OnTextContextMenuClickListener listener) { + this.mOnTextContextMenuClickListener = listener; + } +} diff --git a/library/external/dialpad/src/main/java/com/android/dialer/util/ViewUtil.java b/library/external/dialpad/src/main/java/com/android/dialer/util/ViewUtil.java new file mode 100644 index 0000000000..4f6d1dd47c --- /dev/null +++ b/library/external/dialpad/src/main/java/com/android/dialer/util/ViewUtil.java @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2012 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.dialer.util; + +import android.graphics.Paint; +import android.util.TypedValue; +import android.widget.TextView; + +/** Provides static functions to work with views */ +public class ViewUtil { + + private ViewUtil() {} + + public static void resizeText(TextView textView, int originalTextSize, int minTextSize) { + final Paint paint = textView.getPaint(); + final int width = textView.getWidth(); + if (width == 0) { + return; + } + textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, originalTextSize); + float ratio = width / paint.measureText(textView.getText().toString()); + if (ratio <= 1.0f) { + textView.setTextSize( + TypedValue.COMPLEX_UNIT_PX, Math.max(minTextSize, originalTextSize * ratio)); + } + } +} diff --git a/library/external/dialpad/src/main/java/com/android/dialer/widget/ResizingTextEditText.java b/library/external/dialpad/src/main/java/com/android/dialer/widget/ResizingTextEditText.java new file mode 100644 index 0000000000..216175981b --- /dev/null +++ b/library/external/dialpad/src/main/java/com/android/dialer/widget/ResizingTextEditText.java @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.dialer.widget; + +import android.content.Context; +import android.content.res.TypedArray; +import android.util.AttributeSet; +import android.widget.EditText; +import com.android.dialer.dialpadview.R; +import com.android.dialer.util.ViewUtil; + +/** EditText which resizes dynamically with respect to text length. */ +public class ResizingTextEditText extends EditText { + + private final int mOriginalTextSize; + private final int mMinTextSize; + + public ResizingTextEditText(Context context, AttributeSet attrs) { + super(context, attrs); + mOriginalTextSize = (int) getTextSize(); + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ResizingText); + mMinTextSize = + (int) a.getDimension(R.styleable.ResizingText_resizing_text_min_size, mOriginalTextSize); + a.recycle(); + } + + @Override + protected void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter) { + super.onTextChanged(text, start, lengthBefore, lengthAfter); + ViewUtil.resizeText(this, mOriginalTextSize, mMinTextSize); + } + + @Override + protected void onSizeChanged(int w, int h, int oldw, int oldh) { + super.onSizeChanged(w, h, oldw, oldh); + ViewUtil.resizeText(this, mOriginalTextSize, mMinTextSize); + } +} diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_arrow_back_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_arrow_back_white_24.png new file mode 100644 index 0000000000..cd19726776 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_arrow_back_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_arrow_drop_down_white_18.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_arrow_drop_down_white_18.png new file mode 100644 index 0000000000..41541bb0d0 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_arrow_drop_down_white_18.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_backspace_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_backspace_white_24.png new file mode 100644 index 0000000000..136e8b8c1a Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_backspace_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_block_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_block_white_24.png new file mode 100644 index 0000000000..2ccc89d246 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_block_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_bluetooth_audio_grey600_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_bluetooth_audio_grey600_24.png new file mode 100644 index 0000000000..ec2349ca83 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_bluetooth_audio_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_bluetooth_audio_white_36.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_bluetooth_audio_white_36.png new file mode 100644 index 0000000000..398f0a938c Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_bluetooth_audio_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_call_end_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_call_end_white_24.png new file mode 100644 index 0000000000..625b827c44 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_call_end_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_call_end_white_36.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_call_end_white_36.png new file mode 100644 index 0000000000..51456d3d5d Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_call_end_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_call_made_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_call_made_white_24.png new file mode 100644 index 0000000000..ea6a8ab5f2 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_call_made_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_call_merge_white_36.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_call_merge_white_36.png new file mode 100644 index 0000000000..b7aba8072e Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_call_merge_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_call_missed_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_call_missed_white_24.png new file mode 100644 index 0000000000..f188eb9aa5 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_call_missed_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_call_received_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_call_received_white_24.png new file mode 100644 index 0000000000..ca2ae411a8 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_call_received_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_call_white_18.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_call_white_18.png new file mode 100644 index 0000000000..0bdc56be6f Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_call_white_18.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_call_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_call_white_24.png new file mode 100644 index 0000000000..4dc5065155 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_call_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_camera_alt_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_camera_alt_white_24.png new file mode 100644 index 0000000000..497c88ca82 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_camera_alt_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_camera_alt_white_48.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_camera_alt_white_48.png new file mode 100644 index 0000000000..c8e69dcebb Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_camera_alt_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_check_black_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_check_black_24.png new file mode 100644 index 0000000000..e802d90aeb Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_check_black_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_check_circle_googblue_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_check_circle_googblue_24.png new file mode 100644 index 0000000000..52ff857ba8 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_check_circle_googblue_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_close_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_close_white_24.png new file mode 100644 index 0000000000..ceb1a1eebf Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_close_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_content_copy_grey600_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_content_copy_grey600_24.png new file mode 100644 index 0000000000..6acef1745d Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_content_copy_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_delete_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_delete_white_24.png new file mode 100644 index 0000000000..8444f31384 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_delete_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_dialpad_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_dialpad_white_24.png new file mode 100644 index 0000000000..9037f94e84 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_dialpad_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_dialpad_white_36.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_dialpad_white_36.png new file mode 100644 index 0000000000..82710e72a5 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_dialpad_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_edit_grey600_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_edit_grey600_24.png new file mode 100644 index 0000000000..4a27b46968 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_edit_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_forward_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_forward_white_24.png new file mode 100644 index 0000000000..a0711d377e Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_forward_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_fullscreen_exit_white_48.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_fullscreen_exit_white_48.png new file mode 100644 index 0000000000..159bea7fd8 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_fullscreen_exit_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_fullscreen_white_48.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_fullscreen_white_48.png new file mode 100644 index 0000000000..9b8131124d Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_fullscreen_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_grade_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_grade_white_24.png new file mode 100644 index 0000000000..86eecdd4a0 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_grade_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_group_white_36.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_group_white_36.png new file mode 100644 index 0000000000..f98a074ac1 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_group_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_hd_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_hd_white_24.png new file mode 100644 index 0000000000..35bf51a4f1 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_hd_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_headset_grey600_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_headset_grey600_24.png new file mode 100644 index 0000000000..e859c2f31a Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_headset_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_headset_white_36.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_headset_white_36.png new file mode 100644 index 0000000000..f77f24767c Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_headset_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_history_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_history_white_24.png new file mode 100644 index 0000000000..485c826fdf Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_history_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_image_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_image_white_24.png new file mode 100644 index 0000000000..b414cf5b68 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_image_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_info_outline_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_info_outline_white_24.png new file mode 100644 index 0000000000..c7b1113cfe Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_info_outline_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_message_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_message_white_24.png new file mode 100644 index 0000000000..57177b7c6f Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_message_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_mic_off_black_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_mic_off_black_24.png new file mode 100644 index 0000000000..1755dbf3fa Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_mic_off_black_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_mic_off_white_36.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_mic_off_white_36.png new file mode 100644 index 0000000000..203cb8a9ff Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_mic_off_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_more_vert_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_more_vert_white_24.png new file mode 100644 index 0000000000..58e092b8af Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_more_vert_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_network_wifi_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_network_wifi_white_24.png new file mode 100644 index 0000000000..8df91f2367 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_network_wifi_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_pause_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_pause_white_24.png new file mode 100644 index 0000000000..4d2ea05c46 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_pause_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_pause_white_36.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_pause_white_36.png new file mode 100644 index 0000000000..1d024393aa Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_pause_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_people_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_people_white_24.png new file mode 100644 index 0000000000..25e443424e Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_people_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_person_add_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_person_add_white_24.png new file mode 100644 index 0000000000..10ae5a70c4 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_person_add_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_person_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_person_white_24.png new file mode 100644 index 0000000000..56708b0bad Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_person_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_photo_library_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_photo_library_white_24.png new file mode 100644 index 0000000000..c4a2229e94 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_photo_library_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_photo_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_photo_white_24.png new file mode 100644 index 0000000000..b414cf5b68 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_photo_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_photo_white_48.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_photo_white_48.png new file mode 100644 index 0000000000..f9f1defa6d Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_photo_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_play_arrow_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_play_arrow_white_24.png new file mode 100644 index 0000000000..57c9fa5460 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_play_arrow_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_report_white_18.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_report_white_18.png new file mode 100644 index 0000000000..f0bb6f5beb Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_report_white_18.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_report_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_report_white_24.png new file mode 100644 index 0000000000..ff7d95706a Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_report_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_report_white_36.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_report_white_36.png new file mode 100644 index 0000000000..057d9c757c Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_report_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_schedule_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_schedule_white_24.png new file mode 100644 index 0000000000..4b7caa097c Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_schedule_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_search_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_search_white_24.png new file mode 100644 index 0000000000..bbfbc96cbc Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_search_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_send_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_send_white_24.png new file mode 100644 index 0000000000..5d4ad4b020 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_send_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_signal_wifi_4_bar_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_signal_wifi_4_bar_white_24.png new file mode 100644 index 0000000000..5a53192125 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_signal_wifi_4_bar_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_swap_calls_white_36.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_swap_calls_white_36.png new file mode 100644 index 0000000000..8c3a0edaa3 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_swap_calls_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_undo_white_48.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_undo_white_48.png new file mode 100644 index 0000000000..4366bb0827 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_undo_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_videocam_off_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_videocam_off_white_24.png new file mode 100644 index 0000000000..aaf5ac2085 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_videocam_off_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_videocam_off_white_36.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_videocam_off_white_36.png new file mode 100644 index 0000000000..f2e461a9f1 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_videocam_off_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_videocam_white_18.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_videocam_white_18.png new file mode 100644 index 0000000000..abf478adaa Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_videocam_white_18.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_videocam_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_videocam_white_24.png new file mode 100644 index 0000000000..d83e0d50c3 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_videocam_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_videocam_white_36.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_videocam_white_36.png new file mode 100644 index 0000000000..49562a6408 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_videocam_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_voicemail_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_voicemail_white_24.png new file mode 100644 index 0000000000..03a62e15f9 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_voicemail_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_volume_down_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_volume_down_white_24.png new file mode 100644 index 0000000000..e22e92c857 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_volume_down_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_volume_up_grey600_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_volume_up_grey600_24.png new file mode 100644 index 0000000000..49eb8fcc34 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_volume_up_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_volume_up_white_24.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_volume_up_white_24.png new file mode 100644 index 0000000000..57d787163e Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_volume_up_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_volume_up_white_36.png b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_volume_up_white_36.png new file mode 100644 index 0000000000..62d22bec87 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-hdpi-v4/quantum_ic_volume_up_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-ldrtl-hdpi-v17/quantum_ic_arrow_back_white_24.png b/library/external/dialpad/src/main/res/drawable-ldrtl-hdpi-v17/quantum_ic_arrow_back_white_24.png new file mode 100644 index 0000000000..f517557627 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-ldrtl-hdpi-v17/quantum_ic_arrow_back_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-ldrtl-hdpi-v17/quantum_ic_content_copy_grey600_24.png b/library/external/dialpad/src/main/res/drawable-ldrtl-hdpi-v17/quantum_ic_content_copy_grey600_24.png new file mode 100644 index 0000000000..90bf872ac8 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-ldrtl-hdpi-v17/quantum_ic_content_copy_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-ldrtl-hdpi-v17/quantum_ic_send_white_24.png b/library/external/dialpad/src/main/res/drawable-ldrtl-hdpi-v17/quantum_ic_send_white_24.png new file mode 100644 index 0000000000..b8d4ce444b Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-ldrtl-hdpi-v17/quantum_ic_send_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-ldrtl-hdpi-v17/quantum_ic_undo_white_48.png b/library/external/dialpad/src/main/res/drawable-ldrtl-hdpi-v17/quantum_ic_undo_white_48.png new file mode 100644 index 0000000000..6c8174f3af Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-ldrtl-hdpi-v17/quantum_ic_undo_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-ldrtl-mdpi-v17/quantum_ic_arrow_back_white_24.png b/library/external/dialpad/src/main/res/drawable-ldrtl-mdpi-v17/quantum_ic_arrow_back_white_24.png new file mode 100644 index 0000000000..22a1140ae2 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-ldrtl-mdpi-v17/quantum_ic_arrow_back_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-ldrtl-mdpi-v17/quantum_ic_content_copy_grey600_24.png b/library/external/dialpad/src/main/res/drawable-ldrtl-mdpi-v17/quantum_ic_content_copy_grey600_24.png new file mode 100644 index 0000000000..01b869a608 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-ldrtl-mdpi-v17/quantum_ic_content_copy_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-ldrtl-mdpi-v17/quantum_ic_send_white_24.png b/library/external/dialpad/src/main/res/drawable-ldrtl-mdpi-v17/quantum_ic_send_white_24.png new file mode 100644 index 0000000000..7933f42f0a Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-ldrtl-mdpi-v17/quantum_ic_send_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-ldrtl-mdpi-v17/quantum_ic_undo_white_48.png b/library/external/dialpad/src/main/res/drawable-ldrtl-mdpi-v17/quantum_ic_undo_white_48.png new file mode 100644 index 0000000000..b47cef666e Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-ldrtl-mdpi-v17/quantum_ic_undo_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-ldrtl-xhdpi-v17/quantum_ic_arrow_back_white_24.png b/library/external/dialpad/src/main/res/drawable-ldrtl-xhdpi-v17/quantum_ic_arrow_back_white_24.png new file mode 100644 index 0000000000..d858f18e6c Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-ldrtl-xhdpi-v17/quantum_ic_arrow_back_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-ldrtl-xhdpi-v17/quantum_ic_content_copy_grey600_24.png b/library/external/dialpad/src/main/res/drawable-ldrtl-xhdpi-v17/quantum_ic_content_copy_grey600_24.png new file mode 100644 index 0000000000..831b5249cb Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-ldrtl-xhdpi-v17/quantum_ic_content_copy_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-ldrtl-xhdpi-v17/quantum_ic_send_white_24.png b/library/external/dialpad/src/main/res/drawable-ldrtl-xhdpi-v17/quantum_ic_send_white_24.png new file mode 100644 index 0000000000..4735a7d711 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-ldrtl-xhdpi-v17/quantum_ic_send_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-ldrtl-xhdpi-v17/quantum_ic_undo_white_48.png b/library/external/dialpad/src/main/res/drawable-ldrtl-xhdpi-v17/quantum_ic_undo_white_48.png new file mode 100644 index 0000000000..6a984c4f16 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-ldrtl-xhdpi-v17/quantum_ic_undo_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-ldrtl-xxhdpi-v17/quantum_ic_arrow_back_white_24.png b/library/external/dialpad/src/main/res/drawable-ldrtl-xxhdpi-v17/quantum_ic_arrow_back_white_24.png new file mode 100644 index 0000000000..614ad49a3e Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-ldrtl-xxhdpi-v17/quantum_ic_arrow_back_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-ldrtl-xxhdpi-v17/quantum_ic_content_copy_grey600_24.png b/library/external/dialpad/src/main/res/drawable-ldrtl-xxhdpi-v17/quantum_ic_content_copy_grey600_24.png new file mode 100644 index 0000000000..71f3bd6838 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-ldrtl-xxhdpi-v17/quantum_ic_content_copy_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-ldrtl-xxhdpi-v17/quantum_ic_send_white_24.png b/library/external/dialpad/src/main/res/drawable-ldrtl-xxhdpi-v17/quantum_ic_send_white_24.png new file mode 100644 index 0000000000..4a9e2c24aa Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-ldrtl-xxhdpi-v17/quantum_ic_send_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-ldrtl-xxhdpi-v17/quantum_ic_undo_white_48.png b/library/external/dialpad/src/main/res/drawable-ldrtl-xxhdpi-v17/quantum_ic_undo_white_48.png new file mode 100644 index 0000000000..907911055b Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-ldrtl-xxhdpi-v17/quantum_ic_undo_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-ldrtl-xxxhdpi-v17/quantum_ic_arrow_back_white_24.png b/library/external/dialpad/src/main/res/drawable-ldrtl-xxxhdpi-v17/quantum_ic_arrow_back_white_24.png new file mode 100644 index 0000000000..d409b544b7 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-ldrtl-xxxhdpi-v17/quantum_ic_arrow_back_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-ldrtl-xxxhdpi-v17/quantum_ic_content_copy_grey600_24.png b/library/external/dialpad/src/main/res/drawable-ldrtl-xxxhdpi-v17/quantum_ic_content_copy_grey600_24.png new file mode 100644 index 0000000000..3b2aed29b5 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-ldrtl-xxxhdpi-v17/quantum_ic_content_copy_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-ldrtl-xxxhdpi-v17/quantum_ic_send_white_24.png b/library/external/dialpad/src/main/res/drawable-ldrtl-xxxhdpi-v17/quantum_ic_send_white_24.png new file mode 100644 index 0000000000..0167ac8291 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-ldrtl-xxxhdpi-v17/quantum_ic_send_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-ldrtl-xxxhdpi-v17/quantum_ic_undo_white_48.png b/library/external/dialpad/src/main/res/drawable-ldrtl-xxxhdpi-v17/quantum_ic_undo_white_48.png new file mode 100644 index 0000000000..aa7a919430 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-ldrtl-xxxhdpi-v17/quantum_ic_undo_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_arrow_back_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_arrow_back_white_24.png new file mode 100644 index 0000000000..4ef72eec99 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_arrow_back_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_arrow_drop_down_white_18.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_arrow_drop_down_white_18.png new file mode 100644 index 0000000000..7c1fc3d7ca Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_arrow_drop_down_white_18.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_backspace_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_backspace_white_24.png new file mode 100644 index 0000000000..48863dcdd7 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_backspace_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_block_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_block_white_24.png new file mode 100644 index 0000000000..ec1b33f0ea Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_block_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_bluetooth_audio_grey600_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_bluetooth_audio_grey600_24.png new file mode 100644 index 0000000000..de635e034d Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_bluetooth_audio_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_bluetooth_audio_white_36.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_bluetooth_audio_white_36.png new file mode 100644 index 0000000000..046372d0df Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_bluetooth_audio_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_call_end_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_call_end_white_24.png new file mode 100644 index 0000000000..378272ffc1 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_call_end_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_call_end_white_36.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_call_end_white_36.png new file mode 100644 index 0000000000..625b827c44 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_call_end_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_call_made_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_call_made_white_24.png new file mode 100644 index 0000000000..9b3cd43803 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_call_made_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_call_merge_white_36.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_call_merge_white_36.png new file mode 100644 index 0000000000..a2eb54bab1 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_call_merge_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_call_missed_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_call_missed_white_24.png new file mode 100644 index 0000000000..42c360b8a2 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_call_missed_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_call_received_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_call_received_white_24.png new file mode 100644 index 0000000000..fbc1e86e24 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_call_received_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_call_white_18.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_call_white_18.png new file mode 100644 index 0000000000..bd5748575f Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_call_white_18.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_call_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_call_white_24.png new file mode 100644 index 0000000000..77f9de5e3c Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_call_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_camera_alt_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_camera_alt_white_24.png new file mode 100644 index 0000000000..e830522008 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_camera_alt_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_camera_alt_white_48.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_camera_alt_white_48.png new file mode 100644 index 0000000000..be9fb226a5 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_camera_alt_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_check_black_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_check_black_24.png new file mode 100644 index 0000000000..1c14c9c445 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_check_black_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_check_circle_googblue_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_check_circle_googblue_24.png new file mode 100644 index 0000000000..eff5627225 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_check_circle_googblue_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_close_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_close_white_24.png new file mode 100644 index 0000000000..af7f8288da Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_close_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_content_copy_grey600_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_content_copy_grey600_24.png new file mode 100644 index 0000000000..8ac80b083f Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_content_copy_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_delete_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_delete_white_24.png new file mode 100644 index 0000000000..e2268c9bed Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_delete_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_dialpad_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_dialpad_white_24.png new file mode 100644 index 0000000000..6c405f9ba9 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_dialpad_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_dialpad_white_36.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_dialpad_white_36.png new file mode 100644 index 0000000000..9037f94e84 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_dialpad_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_edit_grey600_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_edit_grey600_24.png new file mode 100644 index 0000000000..f003bc9d33 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_edit_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_forward_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_forward_white_24.png new file mode 100644 index 0000000000..65f73299f9 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_forward_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_fullscreen_exit_white_48.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_fullscreen_exit_white_48.png new file mode 100644 index 0000000000..364bad0b84 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_fullscreen_exit_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_fullscreen_white_48.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_fullscreen_white_48.png new file mode 100644 index 0000000000..4423c7ce99 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_fullscreen_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_grade_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_grade_white_24.png new file mode 100644 index 0000000000..d2cbe4c92b Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_grade_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_group_white_36.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_group_white_36.png new file mode 100644 index 0000000000..25e443424e Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_group_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_hd_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_hd_white_24.png new file mode 100644 index 0000000000..30938fe4d4 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_hd_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_headset_grey600_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_headset_grey600_24.png new file mode 100644 index 0000000000..371efd3822 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_headset_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_headset_white_36.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_headset_white_36.png new file mode 100644 index 0000000000..d25d3888e1 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_headset_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_history_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_history_white_24.png new file mode 100644 index 0000000000..d67647c560 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_history_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_image_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_image_white_24.png new file mode 100644 index 0000000000..d474bd577d Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_image_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_info_outline_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_info_outline_white_24.png new file mode 100644 index 0000000000..353e064951 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_info_outline_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_message_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_message_white_24.png new file mode 100644 index 0000000000..3072b75699 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_message_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_mic_off_black_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_mic_off_black_24.png new file mode 100644 index 0000000000..da605a5a19 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_mic_off_black_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_mic_off_white_36.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_mic_off_white_36.png new file mode 100644 index 0000000000..6fccf5d09f Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_mic_off_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_more_vert_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_more_vert_white_24.png new file mode 100644 index 0000000000..5ec0116f05 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_more_vert_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_network_wifi_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_network_wifi_white_24.png new file mode 100644 index 0000000000..1c3e8b9879 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_network_wifi_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_pause_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_pause_white_24.png new file mode 100644 index 0000000000..2272d478c3 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_pause_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_pause_white_36.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_pause_white_36.png new file mode 100644 index 0000000000..4d2ea05c46 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_pause_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_people_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_people_white_24.png new file mode 100644 index 0000000000..3f20e75533 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_people_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_person_add_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_person_add_white_24.png new file mode 100644 index 0000000000..38e0a2882a Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_person_add_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_person_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_person_white_24.png new file mode 100644 index 0000000000..f0b1c725da Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_person_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_photo_library_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_photo_library_white_24.png new file mode 100644 index 0000000000..02ef4cdb00 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_photo_library_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_photo_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_photo_white_24.png new file mode 100644 index 0000000000..d474bd577d Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_photo_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_photo_white_48.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_photo_white_48.png new file mode 100644 index 0000000000..2642b9e09e Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_photo_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_play_arrow_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_play_arrow_white_24.png new file mode 100644 index 0000000000..c61e948bbf Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_play_arrow_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_report_white_18.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_report_white_18.png new file mode 100644 index 0000000000..63ef736834 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_report_white_18.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_report_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_report_white_24.png new file mode 100644 index 0000000000..ac0f3948db Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_report_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_report_white_36.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_report_white_36.png new file mode 100644 index 0000000000..ff7d95706a Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_report_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_schedule_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_schedule_white_24.png new file mode 100644 index 0000000000..f69736faa6 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_schedule_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_search_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_search_white_24.png new file mode 100644 index 0000000000..faefc59c8e Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_search_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_send_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_send_white_24.png new file mode 100644 index 0000000000..b58afb0b49 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_send_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_signal_wifi_4_bar_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_signal_wifi_4_bar_white_24.png new file mode 100644 index 0000000000..dd5a42f55c Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_signal_wifi_4_bar_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_swap_calls_white_36.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_swap_calls_white_36.png new file mode 100644 index 0000000000..9491f2d1af Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_swap_calls_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_undo_white_48.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_undo_white_48.png new file mode 100644 index 0000000000..b67f6a9116 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_undo_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_videocam_off_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_videocam_off_white_24.png new file mode 100644 index 0000000000..d1cca6f0a0 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_videocam_off_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_videocam_off_white_36.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_videocam_off_white_36.png new file mode 100644 index 0000000000..aaf5ac2085 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_videocam_off_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_videocam_white_18.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_videocam_white_18.png new file mode 100644 index 0000000000..1dafd49276 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_videocam_white_18.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_videocam_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_videocam_white_24.png new file mode 100644 index 0000000000..d146209a51 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_videocam_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_videocam_white_36.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_videocam_white_36.png new file mode 100644 index 0000000000..d83e0d50c3 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_videocam_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_voicemail_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_voicemail_white_24.png new file mode 100644 index 0000000000..e5aa7db055 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_voicemail_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_volume_down_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_volume_down_white_24.png new file mode 100644 index 0000000000..10992ed70c Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_volume_down_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_volume_up_grey600_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_volume_up_grey600_24.png new file mode 100644 index 0000000000..d6cea3667a Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_volume_up_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_volume_up_white_24.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_volume_up_white_24.png new file mode 100644 index 0000000000..7cfd4c7b88 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_volume_up_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_volume_up_white_36.png b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_volume_up_white_36.png new file mode 100644 index 0000000000..57d787163e Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-mdpi-v4/quantum_ic_volume_up_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-v21/btn_dialpad_key.xml b/library/external/dialpad/src/main/res/drawable-v21/btn_dialpad_key.xml new file mode 100644 index 0000000000..50614f9bed --- /dev/null +++ b/library/external/dialpad/src/main/res/drawable-v21/btn_dialpad_key.xml @@ -0,0 +1,18 @@ + + + + diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_arrow_back_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_arrow_back_white_24.png new file mode 100644 index 0000000000..832f5a3617 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_arrow_back_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_arrow_drop_down_white_18.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_arrow_drop_down_white_18.png new file mode 100644 index 0000000000..4c6076df77 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_arrow_drop_down_white_18.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_backspace_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_backspace_white_24.png new file mode 100644 index 0000000000..ec5412bd8a Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_backspace_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_block_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_block_white_24.png new file mode 100644 index 0000000000..7aba97b659 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_block_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_bluetooth_audio_grey600_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_bluetooth_audio_grey600_24.png new file mode 100644 index 0000000000..eea1bbf04b Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_bluetooth_audio_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_bluetooth_audio_white_36.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_bluetooth_audio_white_36.png new file mode 100644 index 0000000000..d5022d063e Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_bluetooth_audio_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_call_end_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_call_end_white_24.png new file mode 100644 index 0000000000..a4fe6889d1 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_call_end_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_call_end_white_36.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_call_end_white_36.png new file mode 100644 index 0000000000..e1831d7afd Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_call_end_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_call_made_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_call_made_white_24.png new file mode 100644 index 0000000000..7fe6941051 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_call_made_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_call_merge_white_36.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_call_merge_white_36.png new file mode 100644 index 0000000000..01daecf656 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_call_merge_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_call_missed_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_call_missed_white_24.png new file mode 100644 index 0000000000..dd64489aae Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_call_missed_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_call_received_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_call_received_white_24.png new file mode 100644 index 0000000000..807308d9de Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_call_received_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_call_white_18.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_call_white_18.png new file mode 100644 index 0000000000..4dc5065155 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_call_white_18.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_call_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_call_white_24.png new file mode 100644 index 0000000000..ef45e933a9 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_call_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_camera_alt_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_camera_alt_white_24.png new file mode 100644 index 0000000000..be9fb226a5 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_camera_alt_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_camera_alt_white_48.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_camera_alt_white_48.png new file mode 100644 index 0000000000..777658e955 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_camera_alt_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_check_black_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_check_black_24.png new file mode 100644 index 0000000000..64a4944f75 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_check_black_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_check_circle_googblue_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_check_circle_googblue_24.png new file mode 100644 index 0000000000..e31fcf3507 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_check_circle_googblue_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_close_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_close_white_24.png new file mode 100644 index 0000000000..b7c7ffd0e7 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_close_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_content_copy_grey600_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_content_copy_grey600_24.png new file mode 100644 index 0000000000..ca62598599 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_content_copy_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_delete_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_delete_white_24.png new file mode 100644 index 0000000000..484260a971 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_delete_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_dialpad_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_dialpad_white_24.png new file mode 100644 index 0000000000..0e89f6c74b Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_dialpad_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_dialpad_white_36.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_dialpad_white_36.png new file mode 100644 index 0000000000..175000510d Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_dialpad_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_edit_grey600_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_edit_grey600_24.png new file mode 100644 index 0000000000..b5b3a243c7 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_edit_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_forward_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_forward_white_24.png new file mode 100644 index 0000000000..7a5df52bf0 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_forward_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_fullscreen_exit_white_48.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_fullscreen_exit_white_48.png new file mode 100644 index 0000000000..ef360fe40c Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_fullscreen_exit_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_fullscreen_white_48.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_fullscreen_white_48.png new file mode 100644 index 0000000000..c1dcfb2902 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_fullscreen_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_grade_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_grade_white_24.png new file mode 100644 index 0000000000..d65f39d7cc Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_grade_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_group_white_36.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_group_white_36.png new file mode 100644 index 0000000000..7f0b7e903b Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_group_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_hd_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_hd_white_24.png new file mode 100644 index 0000000000..4c954d86f8 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_hd_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_headset_grey600_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_headset_grey600_24.png new file mode 100644 index 0000000000..f7dbee156b Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_headset_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_headset_white_36.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_headset_white_36.png new file mode 100644 index 0000000000..82db5427b7 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_headset_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_history_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_history_white_24.png new file mode 100644 index 0000000000..3e73b49ee5 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_history_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_image_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_image_white_24.png new file mode 100644 index 0000000000..2642b9e09e Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_image_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_info_outline_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_info_outline_white_24.png new file mode 100644 index 0000000000..c571b2e3e7 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_info_outline_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_message_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_message_white_24.png new file mode 100644 index 0000000000..763767b4f6 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_message_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_mic_off_black_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_mic_off_black_24.png new file mode 100644 index 0000000000..fa741be1c0 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_mic_off_black_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_mic_off_white_36.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_mic_off_white_36.png new file mode 100644 index 0000000000..7a15a9ea9e Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_mic_off_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_more_vert_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_more_vert_white_24.png new file mode 100644 index 0000000000..96e5d4321c Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_more_vert_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_network_wifi_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_network_wifi_white_24.png new file mode 100644 index 0000000000..ca927f3de5 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_network_wifi_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_pause_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_pause_white_24.png new file mode 100644 index 0000000000..f49aed7571 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_pause_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_pause_white_36.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_pause_white_36.png new file mode 100644 index 0000000000..7192ad487e Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_pause_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_people_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_people_white_24.png new file mode 100644 index 0000000000..715b49a3c8 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_people_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_person_add_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_person_add_white_24.png new file mode 100644 index 0000000000..7e7c289d49 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_person_add_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_person_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_person_white_24.png new file mode 100644 index 0000000000..aea15f0be5 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_person_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_photo_library_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_photo_library_white_24.png new file mode 100644 index 0000000000..4bd2898a83 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_photo_library_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_photo_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_photo_white_24.png new file mode 100644 index 0000000000..2642b9e09e Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_photo_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_photo_white_48.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_photo_white_48.png new file mode 100644 index 0000000000..2ffdb55f26 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_photo_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_play_arrow_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_play_arrow_white_24.png new file mode 100644 index 0000000000..a3c80e73da Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_play_arrow_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_report_white_18.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_report_white_18.png new file mode 100644 index 0000000000..dc0c995c17 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_report_white_18.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_report_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_report_white_24.png new file mode 100644 index 0000000000..74fc594aab Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_report_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_report_white_36.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_report_white_36.png new file mode 100644 index 0000000000..26b9172e8f Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_report_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_schedule_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_schedule_white_24.png new file mode 100644 index 0000000000..1749ea2758 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_schedule_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_search_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_search_white_24.png new file mode 100644 index 0000000000..bfc3e39394 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_search_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_send_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_send_white_24.png new file mode 100644 index 0000000000..ef59e77678 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_send_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_signal_wifi_4_bar_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_signal_wifi_4_bar_white_24.png new file mode 100644 index 0000000000..28b5afa9d4 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_signal_wifi_4_bar_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_swap_calls_white_36.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_swap_calls_white_36.png new file mode 100644 index 0000000000..698cd5d756 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_swap_calls_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_undo_white_48.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_undo_white_48.png new file mode 100644 index 0000000000..a5e719cdfb Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_undo_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_videocam_off_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_videocam_off_white_24.png new file mode 100644 index 0000000000..5d540589b4 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_videocam_off_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_videocam_off_white_36.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_videocam_off_white_36.png new file mode 100644 index 0000000000..69565f2c75 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_videocam_off_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_videocam_white_18.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_videocam_white_18.png new file mode 100644 index 0000000000..d83e0d50c3 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_videocam_white_18.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_videocam_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_videocam_white_24.png new file mode 100644 index 0000000000..1b2583d34e Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_videocam_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_videocam_white_36.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_videocam_white_36.png new file mode 100644 index 0000000000..44c28e2f28 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_videocam_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_voicemail_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_voicemail_white_24.png new file mode 100644 index 0000000000..59126d7066 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_voicemail_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_volume_down_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_volume_down_white_24.png new file mode 100644 index 0000000000..2621bc15d3 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_volume_down_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_volume_up_grey600_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_volume_up_grey600_24.png new file mode 100644 index 0000000000..a45093ff79 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_volume_up_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_volume_up_white_24.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_volume_up_white_24.png new file mode 100644 index 0000000000..2ed00343b8 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_volume_up_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_volume_up_white_36.png b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_volume_up_white_36.png new file mode 100644 index 0000000000..2e751a40f5 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xhdpi-v4/quantum_ic_volume_up_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_arrow_back_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_arrow_back_white_24.png new file mode 100644 index 0000000000..32a6d91ce8 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_arrow_back_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_arrow_drop_down_white_18.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_arrow_drop_down_white_18.png new file mode 100644 index 0000000000..2609ae1341 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_arrow_drop_down_white_18.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_backspace_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_backspace_white_24.png new file mode 100644 index 0000000000..f6a90accff Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_backspace_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_block_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_block_white_24.png new file mode 100644 index 0000000000..fddfa54b85 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_block_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_bluetooth_audio_grey600_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_bluetooth_audio_grey600_24.png new file mode 100644 index 0000000000..99f57c12a8 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_bluetooth_audio_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_bluetooth_audio_white_36.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_bluetooth_audio_white_36.png new file mode 100644 index 0000000000..6842da6d0a Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_bluetooth_audio_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_call_end_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_call_end_white_24.png new file mode 100644 index 0000000000..e1831d7afd Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_call_end_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_call_end_white_36.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_call_end_white_36.png new file mode 100644 index 0000000000..13ffc2ad75 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_call_end_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_call_made_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_call_made_white_24.png new file mode 100644 index 0000000000..ae471c9fc5 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_call_made_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_call_merge_white_36.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_call_merge_white_36.png new file mode 100644 index 0000000000..cefef6551b Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_call_merge_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_call_missed_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_call_missed_white_24.png new file mode 100644 index 0000000000..2374dc5a11 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_call_missed_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_call_received_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_call_received_white_24.png new file mode 100644 index 0000000000..58421114fd Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_call_received_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_call_white_18.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_call_white_18.png new file mode 100644 index 0000000000..6f4dcea1f3 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_call_white_18.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_call_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_call_white_24.png new file mode 100644 index 0000000000..90ead2e455 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_call_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_camera_alt_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_camera_alt_white_24.png new file mode 100644 index 0000000000..c8e69dcebb Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_camera_alt_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_camera_alt_white_48.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_camera_alt_white_48.png new file mode 100644 index 0000000000..a4e7aea72d Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_camera_alt_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_check_black_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_check_black_24.png new file mode 100644 index 0000000000..b26a2c05e3 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_check_black_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_check_circle_googblue_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_check_circle_googblue_24.png new file mode 100644 index 0000000000..a8eb2a45ec Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_check_circle_googblue_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_close_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_close_white_24.png new file mode 100644 index 0000000000..6b717e0dda Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_close_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_content_copy_grey600_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_content_copy_grey600_24.png new file mode 100644 index 0000000000..c480ba78fe Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_content_copy_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_delete_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_delete_white_24.png new file mode 100644 index 0000000000..603f28cbd1 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_delete_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_dialpad_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_dialpad_white_24.png new file mode 100644 index 0000000000..175000510d Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_dialpad_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_dialpad_white_36.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_dialpad_white_36.png new file mode 100644 index 0000000000..54ebbafaeb Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_dialpad_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_edit_grey600_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_edit_grey600_24.png new file mode 100644 index 0000000000..f1f9ffce89 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_edit_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_forward_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_forward_white_24.png new file mode 100644 index 0000000000..7bd5b1635b Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_forward_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_fullscreen_exit_white_48.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_fullscreen_exit_white_48.png new file mode 100644 index 0000000000..b7f4133fd9 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_fullscreen_exit_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_fullscreen_white_48.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_fullscreen_white_48.png new file mode 100644 index 0000000000..a0a1b4d4f3 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_fullscreen_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_grade_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_grade_white_24.png new file mode 100644 index 0000000000..aa5879215e Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_grade_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_group_white_36.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_group_white_36.png new file mode 100644 index 0000000000..952e15fa69 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_group_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_hd_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_hd_white_24.png new file mode 100644 index 0000000000..dd08bbbecc Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_hd_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_headset_grey600_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_headset_grey600_24.png new file mode 100644 index 0000000000..de1739bf4f Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_headset_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_headset_white_36.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_headset_white_36.png new file mode 100644 index 0000000000..a0d8b14c04 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_headset_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_history_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_history_white_24.png new file mode 100644 index 0000000000..1358a129cf Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_history_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_image_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_image_white_24.png new file mode 100644 index 0000000000..f9f1defa6d Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_image_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_info_outline_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_info_outline_white_24.png new file mode 100644 index 0000000000..c41a5fcffa Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_info_outline_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_message_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_message_white_24.png new file mode 100644 index 0000000000..0a79824b8f Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_message_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_mic_off_black_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_mic_off_black_24.png new file mode 100644 index 0000000000..084bf3c9f4 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_mic_off_black_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_mic_off_white_36.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_mic_off_white_36.png new file mode 100644 index 0000000000..585d38326c Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_mic_off_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_more_vert_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_more_vert_white_24.png new file mode 100644 index 0000000000..801ad89095 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_more_vert_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_network_wifi_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_network_wifi_white_24.png new file mode 100644 index 0000000000..75469cd852 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_network_wifi_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_pause_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_pause_white_24.png new file mode 100644 index 0000000000..7192ad487e Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_pause_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_pause_white_36.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_pause_white_36.png new file mode 100644 index 0000000000..a03bad27ed Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_pause_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_people_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_people_white_24.png new file mode 100644 index 0000000000..7f0b7e903b Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_people_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_person_add_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_person_add_white_24.png new file mode 100644 index 0000000000..8f744f0391 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_person_add_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_person_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_person_white_24.png new file mode 100644 index 0000000000..184f7418d5 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_person_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_photo_library_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_photo_library_white_24.png new file mode 100644 index 0000000000..497479291e Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_photo_library_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_photo_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_photo_white_24.png new file mode 100644 index 0000000000..f9f1defa6d Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_photo_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_photo_white_48.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_photo_white_48.png new file mode 100644 index 0000000000..3fe5c5ceb6 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_photo_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_play_arrow_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_play_arrow_white_24.png new file mode 100644 index 0000000000..547ef30aac Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_play_arrow_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_report_white_18.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_report_white_18.png new file mode 100644 index 0000000000..919a872e0e Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_report_white_18.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_report_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_report_white_24.png new file mode 100644 index 0000000000..26b9172e8f Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_report_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_report_white_36.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_report_white_36.png new file mode 100644 index 0000000000..2040c36d57 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_report_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_schedule_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_schedule_white_24.png new file mode 100644 index 0000000000..96df1fbac0 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_schedule_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_search_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_search_white_24.png new file mode 100644 index 0000000000..abbb989510 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_search_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_send_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_send_white_24.png new file mode 100644 index 0000000000..0c5256413c Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_send_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_signal_wifi_4_bar_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_signal_wifi_4_bar_white_24.png new file mode 100644 index 0000000000..f4105ec8d1 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_signal_wifi_4_bar_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_swap_calls_white_36.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_swap_calls_white_36.png new file mode 100644 index 0000000000..140da28a8c Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_swap_calls_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_undo_white_48.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_undo_white_48.png new file mode 100644 index 0000000000..8745f69ffc Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_undo_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_videocam_off_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_videocam_off_white_24.png new file mode 100644 index 0000000000..69565f2c75 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_videocam_off_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_videocam_off_white_36.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_videocam_off_white_36.png new file mode 100644 index 0000000000..ff84832956 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_videocam_off_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_videocam_white_18.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_videocam_white_18.png new file mode 100644 index 0000000000..49562a6408 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_videocam_white_18.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_videocam_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_videocam_white_24.png new file mode 100644 index 0000000000..44c28e2f28 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_videocam_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_videocam_white_36.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_videocam_white_36.png new file mode 100644 index 0000000000..839af26f82 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_videocam_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_voicemail_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_voicemail_white_24.png new file mode 100644 index 0000000000..28b8e936a0 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_voicemail_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_volume_down_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_volume_down_white_24.png new file mode 100644 index 0000000000..5eb8b671f2 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_volume_down_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_volume_up_grey600_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_volume_up_grey600_24.png new file mode 100644 index 0000000000..413b386524 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_volume_up_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_volume_up_white_24.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_volume_up_white_24.png new file mode 100644 index 0000000000..2e751a40f5 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_volume_up_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_volume_up_white_36.png b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_volume_up_white_36.png new file mode 100644 index 0000000000..96c1f982fb Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxhdpi-v4/quantum_ic_volume_up_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_arrow_back_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_arrow_back_white_24.png new file mode 100644 index 0000000000..e27034d678 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_arrow_back_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_arrow_drop_down_white_18.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_arrow_drop_down_white_18.png new file mode 100644 index 0000000000..c19c19d2bd Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_arrow_drop_down_white_18.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_backspace_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_backspace_white_24.png new file mode 100644 index 0000000000..88131b9aff Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_backspace_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_block_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_block_white_24.png new file mode 100644 index 0000000000..0378d1bedc Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_block_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_bluetooth_audio_grey600_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_bluetooth_audio_grey600_24.png new file mode 100644 index 0000000000..1595be1697 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_bluetooth_audio_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_bluetooth_audio_white_36.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_bluetooth_audio_white_36.png new file mode 100644 index 0000000000..3fe7c23502 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_bluetooth_audio_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_call_end_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_call_end_white_24.png new file mode 100644 index 0000000000..8801d0ded4 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_call_end_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_call_end_white_36.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_call_end_white_36.png new file mode 100644 index 0000000000..c8099a1a15 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_call_end_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_call_made_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_call_made_white_24.png new file mode 100644 index 0000000000..844ef86a07 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_call_made_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_call_merge_white_36.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_call_merge_white_36.png new file mode 100644 index 0000000000..9419ffbbc9 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_call_merge_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_call_missed_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_call_missed_white_24.png new file mode 100644 index 0000000000..b1321a9aed Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_call_missed_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_call_received_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_call_received_white_24.png new file mode 100644 index 0000000000..417999c85a Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_call_received_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_call_white_18.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_call_white_18.png new file mode 100644 index 0000000000..90ead2e455 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_call_white_18.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_call_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_call_white_24.png new file mode 100644 index 0000000000..b0e020573d Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_call_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_camera_alt_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_camera_alt_white_24.png new file mode 100644 index 0000000000..777658e955 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_camera_alt_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_camera_alt_white_48.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_camera_alt_white_48.png new file mode 100644 index 0000000000..f2fe54bd51 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_camera_alt_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_check_black_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_check_black_24.png new file mode 100644 index 0000000000..2f6d6386de Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_check_black_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_check_circle_googblue_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_check_circle_googblue_24.png new file mode 100644 index 0000000000..7e08f61086 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_check_circle_googblue_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_close_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_close_white_24.png new file mode 100644 index 0000000000..3964192192 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_close_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_content_copy_grey600_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_content_copy_grey600_24.png new file mode 100644 index 0000000000..f0ea085c90 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_content_copy_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_delete_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_delete_white_24.png new file mode 100644 index 0000000000..c582dc2a49 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_delete_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_dialpad_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_dialpad_white_24.png new file mode 100644 index 0000000000..eb4307aeb2 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_dialpad_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_dialpad_white_36.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_dialpad_white_36.png new file mode 100644 index 0000000000..a53aeb1d33 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_dialpad_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_edit_grey600_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_edit_grey600_24.png new file mode 100644 index 0000000000..a61298dbe6 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_edit_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_forward_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_forward_white_24.png new file mode 100644 index 0000000000..428009cfef Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_forward_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_fullscreen_exit_white_48.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_fullscreen_exit_white_48.png new file mode 100644 index 0000000000..b47b3f8bdb Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_fullscreen_exit_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_fullscreen_white_48.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_fullscreen_white_48.png new file mode 100644 index 0000000000..ea9f18ae63 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_fullscreen_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_grade_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_grade_white_24.png new file mode 100644 index 0000000000..7f38d09639 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_grade_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_group_white_36.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_group_white_36.png new file mode 100644 index 0000000000..dacf299327 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_group_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_hd_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_hd_white_24.png new file mode 100644 index 0000000000..3f87b882ee Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_hd_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_headset_grey600_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_headset_grey600_24.png new file mode 100644 index 0000000000..e968fa7d12 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_headset_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_headset_white_36.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_headset_white_36.png new file mode 100644 index 0000000000..89b9910476 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_headset_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_history_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_history_white_24.png new file mode 100644 index 0000000000..5b99ef6550 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_history_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_image_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_image_white_24.png new file mode 100644 index 0000000000..2ffdb55f26 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_image_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_info_outline_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_info_outline_white_24.png new file mode 100644 index 0000000000..3a82cab3b4 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_info_outline_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_message_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_message_white_24.png new file mode 100644 index 0000000000..fa7c17ac45 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_message_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_mic_off_black_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_mic_off_black_24.png new file mode 100644 index 0000000000..90d0606a45 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_mic_off_black_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_mic_off_white_36.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_mic_off_white_36.png new file mode 100644 index 0000000000..b0a10fbf67 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_mic_off_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_more_vert_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_more_vert_white_24.png new file mode 100644 index 0000000000..7a97f4cb70 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_more_vert_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_network_wifi_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_network_wifi_white_24.png new file mode 100644 index 0000000000..eb284e3838 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_network_wifi_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_pause_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_pause_white_24.png new file mode 100644 index 0000000000..660ac65858 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_pause_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_pause_white_36.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_pause_white_36.png new file mode 100644 index 0000000000..3ea7e03e5d Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_pause_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_people_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_people_white_24.png new file mode 100644 index 0000000000..f52bd1ae59 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_people_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_person_add_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_person_add_white_24.png new file mode 100644 index 0000000000..2fa2cca80c Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_person_add_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_person_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_person_white_24.png new file mode 100644 index 0000000000..33d40d8b62 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_person_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_photo_library_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_photo_library_white_24.png new file mode 100644 index 0000000000..8627f42767 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_photo_library_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_photo_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_photo_white_24.png new file mode 100644 index 0000000000..2ffdb55f26 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_photo_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_photo_white_48.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_photo_white_48.png new file mode 100644 index 0000000000..7d5091ded8 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_photo_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_play_arrow_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_play_arrow_white_24.png new file mode 100644 index 0000000000..be5c062b5f Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_play_arrow_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_report_white_18.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_report_white_18.png new file mode 100644 index 0000000000..aed7668042 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_report_white_18.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_report_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_report_white_24.png new file mode 100644 index 0000000000..023a56e76a Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_report_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_report_white_36.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_report_white_36.png new file mode 100644 index 0000000000..1912789d2f Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_report_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_schedule_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_schedule_white_24.png new file mode 100644 index 0000000000..19390a8bd2 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_schedule_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_search_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_search_white_24.png new file mode 100644 index 0000000000..dd5adfc7f9 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_search_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_send_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_send_white_24.png new file mode 100644 index 0000000000..9dfa888c15 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_send_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_signal_wifi_4_bar_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_signal_wifi_4_bar_white_24.png new file mode 100644 index 0000000000..58a4f9c945 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_signal_wifi_4_bar_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_swap_calls_white_36.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_swap_calls_white_36.png new file mode 100644 index 0000000000..f8470b5dc0 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_swap_calls_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_undo_white_48.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_undo_white_48.png new file mode 100644 index 0000000000..6d703c6ae2 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_undo_white_48.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_videocam_off_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_videocam_off_white_24.png new file mode 100644 index 0000000000..bf37b57f9c Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_videocam_off_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_videocam_off_white_36.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_videocam_off_white_36.png new file mode 100644 index 0000000000..7a915c30db Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_videocam_off_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_videocam_white_18.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_videocam_white_18.png new file mode 100644 index 0000000000..44c28e2f28 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_videocam_white_18.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_videocam_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_videocam_white_24.png new file mode 100644 index 0000000000..ed20c07062 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_videocam_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_videocam_white_36.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_videocam_white_36.png new file mode 100644 index 0000000000..eff5923da4 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_videocam_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_voicemail_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_voicemail_white_24.png new file mode 100644 index 0000000000..820ff5066b Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_voicemail_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_volume_down_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_volume_down_white_24.png new file mode 100644 index 0000000000..4ab55abbd1 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_volume_down_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_volume_up_grey600_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_volume_up_grey600_24.png new file mode 100644 index 0000000000..429dc02df0 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_volume_up_grey600_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_volume_up_white_24.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_volume_up_white_24.png new file mode 100644 index 0000000000..82972b4e59 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_volume_up_white_24.png differ diff --git a/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_volume_up_white_36.png b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_volume_up_white_36.png new file mode 100644 index 0000000000..fd633b6cb4 Binary files /dev/null and b/library/external/dialpad/src/main/res/drawable-xxxhdpi-v4/quantum_ic_volume_up_white_36.png differ diff --git a/library/external/dialpad/src/main/res/drawable/btn_dialpad_key.xml b/library/external/dialpad/src/main/res/drawable/btn_dialpad_key.xml new file mode 100644 index 0000000000..10099df046 --- /dev/null +++ b/library/external/dialpad/src/main/res/drawable/btn_dialpad_key.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + diff --git a/library/external/dialpad/src/main/res/layout/dialpad.xml b/library/external/dialpad/src/main/res/layout/dialpad.xml new file mode 100644 index 0000000000..ec8450c7b5 --- /dev/null +++ b/library/external/dialpad/src/main/res/layout/dialpad.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/library/external/dialpad/src/main/res/layout/dialpad_fragment.xml b/library/external/dialpad/src/main/res/layout/dialpad_fragment.xml new file mode 100644 index 0000000000..4e9a5f330c --- /dev/null +++ b/library/external/dialpad/src/main/res/layout/dialpad_fragment.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + diff --git a/library/external/dialpad/src/main/res/layout/dialpad_key.xml b/library/external/dialpad/src/main/res/layout/dialpad_key.xml new file mode 100644 index 0000000000..77e4fc53a6 --- /dev/null +++ b/library/external/dialpad/src/main/res/layout/dialpad_key.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + diff --git a/library/external/dialpad/src/main/res/layout/dialpad_key_one.xml b/library/external/dialpad/src/main/res/layout/dialpad_key_one.xml new file mode 100644 index 0000000000..2ef0baa1de --- /dev/null +++ b/library/external/dialpad/src/main/res/layout/dialpad_key_one.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + diff --git a/library/external/dialpad/src/main/res/layout/dialpad_key_pound.xml b/library/external/dialpad/src/main/res/layout/dialpad_key_pound.xml new file mode 100644 index 0000000000..d37a6aa788 --- /dev/null +++ b/library/external/dialpad/src/main/res/layout/dialpad_key_pound.xml @@ -0,0 +1,26 @@ + + + + + + + diff --git a/library/external/dialpad/src/main/res/layout/dialpad_key_star.xml b/library/external/dialpad/src/main/res/layout/dialpad_key_star.xml new file mode 100644 index 0000000000..d288475d01 --- /dev/null +++ b/library/external/dialpad/src/main/res/layout/dialpad_key_star.xml @@ -0,0 +1,26 @@ + + + + + + + diff --git a/library/external/dialpad/src/main/res/layout/dialpad_key_zero.xml b/library/external/dialpad/src/main/res/layout/dialpad_key_zero.xml new file mode 100644 index 0000000000..943ae48dd2 --- /dev/null +++ b/library/external/dialpad/src/main/res/layout/dialpad_key_zero.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + diff --git a/library/external/dialpad/src/main/res/layout/dialpad_view.xml b/library/external/dialpad/src/main/res/layout/dialpad_view.xml new file mode 100644 index 0000000000..fb14ad0989 --- /dev/null +++ b/library/external/dialpad/src/main/res/layout/dialpad_view.xml @@ -0,0 +1,24 @@ + + + + + + diff --git a/library/external/dialpad/src/main/res/layout/dialpad_view_unthemed.xml b/library/external/dialpad/src/main/res/layout/dialpad_view_unthemed.xml new file mode 100644 index 0000000000..1b7b78f907 --- /dev/null +++ b/library/external/dialpad/src/main/res/layout/dialpad_view_unthemed.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/library/external/dialpad/src/main/res/values-af/values-af.xml b/library/external/dialpad/src/main/res/values-af/values-af.xml new file mode 100644 index 0000000000..6a93515ac0 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-af/values-af.xml @@ -0,0 +1,8 @@ + + + "backspace" + "Gaan terug" + "Meer opsies" + "plus" + "stemboodskap" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-am/values-am.xml b/library/external/dialpad/src/main/res/values-am/values-am.xml new file mode 100644 index 0000000000..08955ffeec --- /dev/null +++ b/library/external/dialpad/src/main/res/values-am/values-am.xml @@ -0,0 +1,8 @@ + + + "የኋሊት ደምሳሽ" + "ወደኋላ ያስሱ" + "ተጨማሪ አማራጮች" + "የመደመር ምልክት" + "የድምፅ መልዕክት" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-ar/values-ar.xml b/library/external/dialpad/src/main/res/values-ar/values-ar.xml new file mode 100644 index 0000000000..e791d1e5f2 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-ar/values-ar.xml @@ -0,0 +1,8 @@ + + + "مسافة للخلف" + "الرجوع" + "مزيد من الخيارات" + "علامة الجمع" + "بريد صوتي" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-az/values-az.xml b/library/external/dialpad/src/main/res/values-az/values-az.xml new file mode 100644 index 0000000000..152fdea46e --- /dev/null +++ b/library/external/dialpad/src/main/res/values-az/values-az.xml @@ -0,0 +1,8 @@ + + + "geri düyməsi" + "Geri naviqasiya edin" + "Daha çox seçim" + "plus" + "səsli məktub" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-b+sr+Latn/values-b+sr+Latn.xml b/library/external/dialpad/src/main/res/values-b+sr+Latn/values-b+sr+Latn.xml new file mode 100644 index 0000000000..4925383c9c --- /dev/null +++ b/library/external/dialpad/src/main/res/values-b+sr+Latn/values-b+sr+Latn.xml @@ -0,0 +1,8 @@ + + + "backspace" + "Idite nazad" + "Još opcija" + "plus" + "govorna pošta" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-be/values-be.xml b/library/external/dialpad/src/main/res/values-be/values-be.xml new file mode 100644 index 0000000000..3b795ba0f6 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-be/values-be.xml @@ -0,0 +1,8 @@ + + + "backspace" + "Перайсці назад" + "Дадатковыя параметры" + "плюс" + "галасавая пошта" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-bg/values-bg.xml b/library/external/dialpad/src/main/res/values-bg/values-bg.xml new file mode 100644 index 0000000000..aa464b870b --- /dev/null +++ b/library/external/dialpad/src/main/res/values-bg/values-bg.xml @@ -0,0 +1,8 @@ + + + "backspace" + "Преминаване назад" + "Още опции" + "плюс" + "гласова поща" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-bn/values-bn.xml b/library/external/dialpad/src/main/res/values-bn/values-bn.xml new file mode 100644 index 0000000000..78efb7eb12 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-bn/values-bn.xml @@ -0,0 +1,8 @@ + + + "ব্যাক-স্পেস" + "পিছনে যান" + "আরো বিকল্প" + "যোগ চিহ্ন" + "ভয়েসমেল" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-bs/values-bs.xml b/library/external/dialpad/src/main/res/values-bs/values-bs.xml new file mode 100644 index 0000000000..6782138188 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-bs/values-bs.xml @@ -0,0 +1,8 @@ + + + "tipka za brisanje" + "Vrati se nazad" + "Više opcija" + "plus" + "govorna pošta" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-ca/values-ca.xml b/library/external/dialpad/src/main/res/values-ca/values-ca.xml new file mode 100644 index 0000000000..b4c70bdc49 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-ca/values-ca.xml @@ -0,0 +1,8 @@ + + + "retrocés" + "Torna enrere" + "Més opcions" + "més" + "missatge de veu" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-cs/values-cs.xml b/library/external/dialpad/src/main/res/values-cs/values-cs.xml new file mode 100644 index 0000000000..b9f770215c --- /dev/null +++ b/library/external/dialpad/src/main/res/values-cs/values-cs.xml @@ -0,0 +1,8 @@ + + + "Backspace" + "Přejít zpět" + "Více možností" + "plus" + "hlasová zpráva" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-da/values-da.xml b/library/external/dialpad/src/main/res/values-da/values-da.xml new file mode 100644 index 0000000000..b842e27303 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-da/values-da.xml @@ -0,0 +1,8 @@ + + + "tilbagetast" + "Naviger tilbage" + "Flere valgmuligheder" + "plus" + "telefonsvarer" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-de/values-de.xml b/library/external/dialpad/src/main/res/values-de/values-de.xml new file mode 100644 index 0000000000..7d3f7b9a77 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-de/values-de.xml @@ -0,0 +1,8 @@ + + + "Rücktaste" + "Zurück" + "Mehr Optionen" + "Plus" + "Mailboxnachricht" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-el/values-el.xml b/library/external/dialpad/src/main/res/values-el/values-el.xml new file mode 100644 index 0000000000..1998e9e464 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-el/values-el.xml @@ -0,0 +1,8 @@ + + + "backspace" + "Μετάβαση πίσω" + "Περισσότερες επιλογές" + "συν" + "αυτόματος τηλεφωνητής" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-en-rAU/values-en-rAU.xml b/library/external/dialpad/src/main/res/values-en-rAU/values-en-rAU.xml new file mode 100644 index 0000000000..5281387a9d --- /dev/null +++ b/library/external/dialpad/src/main/res/values-en-rAU/values-en-rAU.xml @@ -0,0 +1,8 @@ + + + "backspace" + "Navigate back" + "More options" + "plus" + "voicemail" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-en-rGB/values-en-rGB.xml b/library/external/dialpad/src/main/res/values-en-rGB/values-en-rGB.xml new file mode 100644 index 0000000000..5281387a9d --- /dev/null +++ b/library/external/dialpad/src/main/res/values-en-rGB/values-en-rGB.xml @@ -0,0 +1,8 @@ + + + "backspace" + "Navigate back" + "More options" + "plus" + "voicemail" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-en-rIN/values-en-rIN.xml b/library/external/dialpad/src/main/res/values-en-rIN/values-en-rIN.xml new file mode 100644 index 0000000000..5281387a9d --- /dev/null +++ b/library/external/dialpad/src/main/res/values-en-rIN/values-en-rIN.xml @@ -0,0 +1,8 @@ + + + "backspace" + "Navigate back" + "More options" + "plus" + "voicemail" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-es-rUS/values-es-rUS.xml b/library/external/dialpad/src/main/res/values-es-rUS/values-es-rUS.xml new file mode 100644 index 0000000000..0eda697d16 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-es-rUS/values-es-rUS.xml @@ -0,0 +1,8 @@ + + + "retroceso" + "Volver" + "Más opciones" + "más" + "buzón de voz" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-es/values-es.xml b/library/external/dialpad/src/main/res/values-es/values-es.xml new file mode 100644 index 0000000000..3386a4e7e9 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-es/values-es.xml @@ -0,0 +1,8 @@ + + + "retroceso" + "Volver" + "Más opciones" + "más" + "mensaje de voz" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-et/values-et.xml b/library/external/dialpad/src/main/res/values-et/values-et.xml new file mode 100644 index 0000000000..05499ef49f --- /dev/null +++ b/library/external/dialpad/src/main/res/values-et/values-et.xml @@ -0,0 +1,8 @@ + + + "tagasilüke" + "Tagasi navigeerimine" + "Rohkem valikuid" + "pluss" + "kõnepostisõnum" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-eu/values-eu.xml b/library/external/dialpad/src/main/res/values-eu/values-eu.xml new file mode 100644 index 0000000000..788a168eb6 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-eu/values-eu.xml @@ -0,0 +1,8 @@ + + + "atzera tekla" + "Egin atzera" + "Aukera gehiago" + "gehi" + "erantzungailua" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-fa/values-fa.xml b/library/external/dialpad/src/main/res/values-fa/values-fa.xml new file mode 100644 index 0000000000..e28807f063 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-fa/values-fa.xml @@ -0,0 +1,8 @@ + + + "برگشت به عقب" + "پیمایش به عقب" + "گزینه‌های بیشتر" + "به‌علاوه" + "پست صوتی" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-fi/values-fi.xml b/library/external/dialpad/src/main/res/values-fi/values-fi.xml new file mode 100644 index 0000000000..30ec4d5c8c --- /dev/null +++ b/library/external/dialpad/src/main/res/values-fi/values-fi.xml @@ -0,0 +1,8 @@ + + + "askelpalautin" + "Siirry takaisin" + "Lisää vaihtoehtoja" + "plus" + "ääniviesti" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-fr-rCA/values-fr-rCA.xml b/library/external/dialpad/src/main/res/values-fr-rCA/values-fr-rCA.xml new file mode 100644 index 0000000000..e2dc9e4527 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-fr-rCA/values-fr-rCA.xml @@ -0,0 +1,8 @@ + + + "retour arrière" + "Naviguer vers l\'arrière" + "Plus d\'options" + "plus" + "messagerie vocale" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-fr/values-fr.xml b/library/external/dialpad/src/main/res/values-fr/values-fr.xml new file mode 100644 index 0000000000..265b089baf --- /dev/null +++ b/library/external/dialpad/src/main/res/values-fr/values-fr.xml @@ -0,0 +1,8 @@ + + + "retour arrière" + "Revenir en arrière" + "Plus d\'options" + "plus" + "message vocal" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-gl/values-gl.xml b/library/external/dialpad/src/main/res/values-gl/values-gl.xml new file mode 100644 index 0000000000..932feba9df --- /dev/null +++ b/library/external/dialpad/src/main/res/values-gl/values-gl.xml @@ -0,0 +1,8 @@ + + + "retroceso" + "Volver á vista anterior" + "Máis opcións" + "máis" + "correo de voz" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-gu/values-gu.xml b/library/external/dialpad/src/main/res/values-gu/values-gu.xml new file mode 100644 index 0000000000..78997a8be6 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-gu/values-gu.xml @@ -0,0 +1,8 @@ + + + "backspace" + "પાછળ નૅવિગેટ કરો" + "વધુ વિકલ્પો" + "પ્લસ" + "વૉઇસમેઇલ" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-hi/values-hi.xml b/library/external/dialpad/src/main/res/values-hi/values-hi.xml new file mode 100644 index 0000000000..cc10b134ee --- /dev/null +++ b/library/external/dialpad/src/main/res/values-hi/values-hi.xml @@ -0,0 +1,8 @@ + + + "backspace" + "वापस नेविगेट करें" + "अधिक विकल्प" + "धन का चिह्न" + "वॉइसमेल" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-hr/values-hr.xml b/library/external/dialpad/src/main/res/values-hr/values-hr.xml new file mode 100644 index 0000000000..19f1922c5f --- /dev/null +++ b/library/external/dialpad/src/main/res/values-hr/values-hr.xml @@ -0,0 +1,8 @@ + + + "povratna tipka" + "Kretanje natrag" + "Više opcija" + "plus" + "govorna pošta" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-hu/values-hu.xml b/library/external/dialpad/src/main/res/values-hu/values-hu.xml new file mode 100644 index 0000000000..4aa7a3943d --- /dev/null +++ b/library/external/dialpad/src/main/res/values-hu/values-hu.xml @@ -0,0 +1,8 @@ + + + "Backspace" + "Vissza" + "További beállítások" + "plusz" + "hangposta" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-hy/values-hy.xml b/library/external/dialpad/src/main/res/values-hy/values-hy.xml new file mode 100644 index 0000000000..0c13c0e156 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-hy/values-hy.xml @@ -0,0 +1,8 @@ + + + "հետշարժ" + "Հետ գնալ" + "Այլ ընտրանքներ" + "գումարում" + "ձայնային փոստ" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-in/values-in.xml b/library/external/dialpad/src/main/res/values-in/values-in.xml new file mode 100644 index 0000000000..9384f9c220 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-in/values-in.xml @@ -0,0 +1,8 @@ + + + "backspace" + "Tombol kembali" + "Opsi lainnya" + "tambah" + "pesan suara" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-is/values-is.xml b/library/external/dialpad/src/main/res/values-is/values-is.xml new file mode 100644 index 0000000000..bbf02c8e91 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-is/values-is.xml @@ -0,0 +1,8 @@ + + + "bakklykill" + "Fara til baka" + "Fleiri valkostir" + "plús" + "talhólfsskilaboð" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-it/values-it.xml b/library/external/dialpad/src/main/res/values-it/values-it.xml new file mode 100644 index 0000000000..563975ce15 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-it/values-it.xml @@ -0,0 +1,8 @@ + + + "backspace" + "Torna indietro" + "Altre opzioni" + "più" + "messaggio vocale" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-iw/values-iw.xml b/library/external/dialpad/src/main/res/values-iw/values-iw.xml new file mode 100644 index 0000000000..34493a8ac6 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-iw/values-iw.xml @@ -0,0 +1,8 @@ + + + "Backspace" + "ניווט חזרה" + "אפשרויות נוספות" + "פלוס" + "דואר קולי" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-ja/values-ja.xml b/library/external/dialpad/src/main/res/values-ja/values-ja.xml new file mode 100644 index 0000000000..b8c17100c2 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-ja/values-ja.xml @@ -0,0 +1,8 @@ + + + "Backspace" + "戻る" + "その他のオプション" + "足す" + "ボイスメール" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-ka/values-ka.xml b/library/external/dialpad/src/main/res/values-ka/values-ka.xml new file mode 100644 index 0000000000..2613d048a4 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-ka/values-ka.xml @@ -0,0 +1,8 @@ + + + "უკუშლა" + "უკან დაბრუნება" + "სხვა პარამეტრები" + "პლუსი" + "ხმოვანი ფოსტა" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-kk/values-kk.xml b/library/external/dialpad/src/main/res/values-kk/values-kk.xml new file mode 100644 index 0000000000..65015a6e66 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-kk/values-kk.xml @@ -0,0 +1,8 @@ + + + "Backspace пернесі" + "Артқа қайту" + "Басқа опциялар" + "қосу" + "дауыстық пошта" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-km/values-km.xml b/library/external/dialpad/src/main/res/values-km/values-km.xml new file mode 100644 index 0000000000..bb4754c842 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-km/values-km.xml @@ -0,0 +1,8 @@ + + + "លុប​ថយក្រោយ" + "រក​មើលថយ​ក្រោយ​វិញ" + "ជម្រើស​បន្ថែម" + "plus" + "សារ​ជា​សំឡេង" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-kn/values-kn.xml b/library/external/dialpad/src/main/res/values-kn/values-kn.xml new file mode 100644 index 0000000000..e49a0633bc --- /dev/null +++ b/library/external/dialpad/src/main/res/values-kn/values-kn.xml @@ -0,0 +1,8 @@ + + + "backspace" + "ಹಿಂದಕ್ಕೆ ನ್ಯಾವಿಗೇಟ್ ಮಾಡು" + "ಇನ್ನಷ್ಟು ಆಯ್ಕೆಗಳು" + "ಸಂಕಲನ" + "ಧ್ವನಿಮೇಲ್" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-ko/values-ko.xml b/library/external/dialpad/src/main/res/values-ko/values-ko.xml new file mode 100644 index 0000000000..f9ebed349a --- /dev/null +++ b/library/external/dialpad/src/main/res/values-ko/values-ko.xml @@ -0,0 +1,8 @@ + + + "백스페이스" + "뒤로 이동" + "옵션 더보기" + "더하기" + "음성사서함" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-ky/values-ky.xml b/library/external/dialpad/src/main/res/values-ky/values-ky.xml new file mode 100644 index 0000000000..a894cd7cf2 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-ky/values-ky.xml @@ -0,0 +1,8 @@ + + + "артка карай өчүрүү" + "Артка кайтуу" + "Көбүрөөк мүмкүнчүлүктөр" + "кошуу" + "үн почтасы" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-land/values-land.xml b/library/external/dialpad/src/main/res/values-land/values-land.xml new file mode 100644 index 0000000000..364bf95f05 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-land/values-land.xml @@ -0,0 +1,25 @@ + + + 65dp + 5dp + 20sp + 3dp + 35dp + 0dp + + + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-lo/values-lo.xml b/library/external/dialpad/src/main/res/values-lo/values-lo.xml new file mode 100644 index 0000000000..e73d68cc95 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-lo/values-lo.xml @@ -0,0 +1,8 @@ + + + "ປຸ່ມ backspace" + "ນຳທາງກັບຄືນ" + "ໂຕເລືອກເພີ່ມເຕີມ" + "ບວກ" + "ຂໍ້ຄວາມສຽງ" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-lt/values-lt.xml b/library/external/dialpad/src/main/res/values-lt/values-lt.xml new file mode 100644 index 0000000000..858ca29dc9 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-lt/values-lt.xml @@ -0,0 +1,8 @@ + + + "naikinimo klavišas" + "Eiti atgal" + "Daugiau parinkčių" + "sudėties ženklas" + "balso pašto pranešimas" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-lv/values-lv.xml b/library/external/dialpad/src/main/res/values-lv/values-lv.xml new file mode 100644 index 0000000000..70a59dc3b5 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-lv/values-lv.xml @@ -0,0 +1,8 @@ + + + "atpakaļatkāpe" + "Pāriet atpakaļ" + "Vairāk opciju" + "pluszīme" + "balss pasts" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-mk/values-mk.xml b/library/external/dialpad/src/main/res/values-mk/values-mk.xml new file mode 100644 index 0000000000..0f958f19a0 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-mk/values-mk.xml @@ -0,0 +1,8 @@ + + + "избриши" + "Оди назад" + "Повеќе опции" + "плус" + "говорна пошта" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-ml/values-ml.xml b/library/external/dialpad/src/main/res/values-ml/values-ml.xml new file mode 100644 index 0000000000..43dbec3911 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-ml/values-ml.xml @@ -0,0 +1,8 @@ + + + "ബാക്ക്‌സ്‌പെയ്‌സ്" + "തിരികെ പോകുക" + "കൂടുതൽ‍ ഓപ്‌ഷനുകള്‍" + "പ്ലസ്" + "വോയ്‌സ്‌മെയിൽ" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-mn/values-mn.xml b/library/external/dialpad/src/main/res/values-mn/values-mn.xml new file mode 100644 index 0000000000..86e965baf5 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-mn/values-mn.xml @@ -0,0 +1,8 @@ + + + "ухраах" + "Буцах" + "Нэмэлт сонголтууд" + "нэмэх" + "дуут шуудан" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-mr/values-mr.xml b/library/external/dialpad/src/main/res/values-mr/values-mr.xml new file mode 100644 index 0000000000..385a98df01 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-mr/values-mr.xml @@ -0,0 +1,8 @@ + + + "backspace" + "मागे नेव्हिगेट करा" + "अधिक पर्याय" + "अधिक" + "व्हॉइसमेल" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-ms/values-ms.xml b/library/external/dialpad/src/main/res/values-ms/values-ms.xml new file mode 100644 index 0000000000..a41274606d --- /dev/null +++ b/library/external/dialpad/src/main/res/values-ms/values-ms.xml @@ -0,0 +1,8 @@ + + + "undur ruang" + "Navigasi kembali" + "Lagi pilihan" + "tambah" + "mel suara" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-my/values-my.xml b/library/external/dialpad/src/main/res/values-my/values-my.xml new file mode 100644 index 0000000000..7e1ff4231c --- /dev/null +++ b/library/external/dialpad/src/main/res/values-my/values-my.xml @@ -0,0 +1,8 @@ + + + "နောက်ပြန်ဖျက်ခလုတ်" + "အနောက်သို့ ပြန်သွားပါ" + "ပိုမိုရွေးချယ်စရာများ" + "အပေါင်း လက္ခဏာ" + "အသံမေးလ်" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-nb/values-nb.xml b/library/external/dialpad/src/main/res/values-nb/values-nb.xml new file mode 100644 index 0000000000..cd08c3b339 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-nb/values-nb.xml @@ -0,0 +1,8 @@ + + + "tilbaketast" + "Gå tilbake" + "Flere alternativer" + "pluss" + "talepost" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-ne/values-ne.xml b/library/external/dialpad/src/main/res/values-ne/values-ne.xml new file mode 100644 index 0000000000..28ec947b80 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-ne/values-ne.xml @@ -0,0 +1,8 @@ + + + "ब्याकस्पेस" + "पछाडि नेभिगेट गर्नुहोस्" + "थप विकल्पहरू" + "जोड" + "भ्वाइसमेल" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-nl/values-nl.xml b/library/external/dialpad/src/main/res/values-nl/values-nl.xml new file mode 100644 index 0000000000..6e3badad9d --- /dev/null +++ b/library/external/dialpad/src/main/res/values-nl/values-nl.xml @@ -0,0 +1,8 @@ + + + "backspace" + "Terug navigeren" + "Meer opties" + "plus" + "voicemail" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-no/values-no.xml b/library/external/dialpad/src/main/res/values-no/values-no.xml new file mode 100644 index 0000000000..cd08c3b339 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-no/values-no.xml @@ -0,0 +1,8 @@ + + + "tilbaketast" + "Gå tilbake" + "Flere alternativer" + "pluss" + "talepost" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-pa/values-pa.xml b/library/external/dialpad/src/main/res/values-pa/values-pa.xml new file mode 100644 index 0000000000..add9e7a3bd --- /dev/null +++ b/library/external/dialpad/src/main/res/values-pa/values-pa.xml @@ -0,0 +1,8 @@ + + + "ਬੈਕਸਪੇਸ" + "ਪਿੱਛੇ ਆਵਾਗੌਣ ਕਰੋ" + "ਹੋਰ ਚੋਣਾਂ" + "ਪਲਸ" + "ਵੌਇਸਮੇਲ" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-pl/values-pl.xml b/library/external/dialpad/src/main/res/values-pl/values-pl.xml new file mode 100644 index 0000000000..94c00bb06a --- /dev/null +++ b/library/external/dialpad/src/main/res/values-pl/values-pl.xml @@ -0,0 +1,8 @@ + + + "usuń" + "Wstecz" + "Więcej opcji" + "plus" + "poczta głosowa" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-pt-rBR/values-pt-rBR.xml b/library/external/dialpad/src/main/res/values-pt-rBR/values-pt-rBR.xml new file mode 100644 index 0000000000..49ae0d6428 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-pt-rBR/values-pt-rBR.xml @@ -0,0 +1,8 @@ + + + "voltar" + "Voltar" + "Mais opções" + "mais" + "correio de voz" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-pt-rPT/values-pt-rPT.xml b/library/external/dialpad/src/main/res/values-pt-rPT/values-pt-rPT.xml new file mode 100644 index 0000000000..5d42ca8b61 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-pt-rPT/values-pt-rPT.xml @@ -0,0 +1,8 @@ + + + "retrocesso" + "Navegar para trás" + "Mais opções" + "mais" + "mensagem de correio de voz" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-pt/values-pt.xml b/library/external/dialpad/src/main/res/values-pt/values-pt.xml new file mode 100644 index 0000000000..49ae0d6428 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-pt/values-pt.xml @@ -0,0 +1,8 @@ + + + "voltar" + "Voltar" + "Mais opções" + "mais" + "correio de voz" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-ro/values-ro.xml b/library/external/dialpad/src/main/res/values-ro/values-ro.xml new file mode 100644 index 0000000000..34f7e9fe03 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-ro/values-ro.xml @@ -0,0 +1,8 @@ + + + "tasta backspace" + "Navigați înapoi" + "Mai multe opțiuni" + "plus" + "mesaj vocal" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-ru/values-ru.xml b/library/external/dialpad/src/main/res/values-ru/values-ru.xml new file mode 100644 index 0000000000..261fdf0ee6 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-ru/values-ru.xml @@ -0,0 +1,8 @@ + + + "клавиша Backspace" + "Вернуться" + "Ещё" + "плюс" + "голосовая почта" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-si/values-si.xml b/library/external/dialpad/src/main/res/values-si/values-si.xml new file mode 100644 index 0000000000..09a999100f --- /dev/null +++ b/library/external/dialpad/src/main/res/values-si/values-si.xml @@ -0,0 +1,8 @@ + + + "backspace බොත්තම" + "ආපසු සංචාලනය කරන්න" + "තවත් විකල්ප" + "ධන" + "හඬ තැපෑල" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-sk/values-sk.xml b/library/external/dialpad/src/main/res/values-sk/values-sk.xml new file mode 100644 index 0000000000..6b8990a941 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-sk/values-sk.xml @@ -0,0 +1,8 @@ + + + "spätné mazanie" + "Prejsť späť" + "Ďalšie možnosti" + "plus" + "hlasová správa" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-sl/values-sl.xml b/library/external/dialpad/src/main/res/values-sl/values-sl.xml new file mode 100644 index 0000000000..2abde10f12 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-sl/values-sl.xml @@ -0,0 +1,8 @@ + + + "vračalka" + "Pomik nazaj" + "Več možnosti" + "plus" + "sporočilo v odzivniku" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-sq/values-sq.xml b/library/external/dialpad/src/main/res/values-sq/values-sq.xml new file mode 100644 index 0000000000..22400298fb --- /dev/null +++ b/library/external/dialpad/src/main/res/values-sq/values-sq.xml @@ -0,0 +1,8 @@ + + + "kthim prapa" + "Kthehu prapa" + "Opsione të tjera" + "plus" + "postë zanore" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-sr/values-sr.xml b/library/external/dialpad/src/main/res/values-sr/values-sr.xml new file mode 100644 index 0000000000..6f1beb2900 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-sr/values-sr.xml @@ -0,0 +1,8 @@ + + + "backspace" + "Идите назад" + "Још опција" + "плус" + "говорна пошта" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-sv/values-sv.xml b/library/external/dialpad/src/main/res/values-sv/values-sv.xml new file mode 100644 index 0000000000..25de9491a7 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-sv/values-sv.xml @@ -0,0 +1,8 @@ + + + "backsteg" + "Tillbaka" + "Fler alternativ" + "plus" + "röstbrevlåda" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-sw/values-sw.xml b/library/external/dialpad/src/main/res/values-sw/values-sw.xml new file mode 100644 index 0000000000..e4273eca9a --- /dev/null +++ b/library/external/dialpad/src/main/res/values-sw/values-sw.xml @@ -0,0 +1,8 @@ + + + "nafasi ya nyuma" + "Rudi nyuma" + "Chaguo zaidi" + "jumlisha" + "ujumbe wa sauti" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-ta/values-ta.xml b/library/external/dialpad/src/main/res/values-ta/values-ta.xml new file mode 100644 index 0000000000..1412f6ae92 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-ta/values-ta.xml @@ -0,0 +1,8 @@ + + + "பேக்ஸ்பேஸ்" + "பின் செல்லும்" + "மேலும் விருப்பங்கள்" + "பிளஸ்" + "குரலஞ்சல்" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-te/values-te.xml b/library/external/dialpad/src/main/res/values-te/values-te.xml new file mode 100644 index 0000000000..ad60e2fd31 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-te/values-te.xml @@ -0,0 +1,8 @@ + + + "బ్యాక్‌స్పేస్" + "వెనుకకు నావిగేట్ చేస్తుంది" + "మరిన్ని ఎంపికలు" + "కూడిక" + "వాయిస్ మెయిల్" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-th/values-th.xml b/library/external/dialpad/src/main/res/values-th/values-th.xml new file mode 100644 index 0000000000..a9240af28a --- /dev/null +++ b/library/external/dialpad/src/main/res/values-th/values-th.xml @@ -0,0 +1,8 @@ + + + "ลบถอยหลัง" + "ย้อนกลับ" + "ตัวเลือกเพิ่มเติม" + "บวก" + "ข้อความเสียง" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-tl/values-tl.xml b/library/external/dialpad/src/main/res/values-tl/values-tl.xml new file mode 100644 index 0000000000..f5ec293cc3 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-tl/values-tl.xml @@ -0,0 +1,8 @@ + + + "backspace" + "Nagna-navigate pabalik" + "Higit pang mga pagpipilian" + "plus" + "voicemail" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-tr/values-tr.xml b/library/external/dialpad/src/main/res/values-tr/values-tr.xml new file mode 100644 index 0000000000..6006ed5857 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-tr/values-tr.xml @@ -0,0 +1,8 @@ + + + "geri tuşu" + "Geri dön" + "Diğer seçenekler" + "artı" + "sesli mesaj" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-uk/values-uk.xml b/library/external/dialpad/src/main/res/values-uk/values-uk.xml new file mode 100644 index 0000000000..0d235facdf --- /dev/null +++ b/library/external/dialpad/src/main/res/values-uk/values-uk.xml @@ -0,0 +1,8 @@ + + + "видалення символів перед курсором" + "Назад" + "Інші варіанти" + "плюс" + "голосова пошта" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-ur/values-ur.xml b/library/external/dialpad/src/main/res/values-ur/values-ur.xml new file mode 100644 index 0000000000..721322d66d --- /dev/null +++ b/library/external/dialpad/src/main/res/values-ur/values-ur.xml @@ -0,0 +1,8 @@ + + + "بیک اسپیس" + "پیچھے کو نیویگیٹ کریں" + "مزید اختیارات" + "جمع" + "صوتی میل" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-uz/values-uz.xml b/library/external/dialpad/src/main/res/values-uz/values-uz.xml new file mode 100644 index 0000000000..74e39230ef --- /dev/null +++ b/library/external/dialpad/src/main/res/values-uz/values-uz.xml @@ -0,0 +1,8 @@ + + + "orqaga" + "Orqaga qaytish" + "Boshqa parametrlar" + "qo‘shuv belgisi" + "ovozli pochta" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-vi/values-vi.xml b/library/external/dialpad/src/main/res/values-vi/values-vi.xml new file mode 100644 index 0000000000..cc83289497 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-vi/values-vi.xml @@ -0,0 +1,8 @@ + + + "phím lùi" + "Điều hướng trở lại" + "Tùy chọn khác" + "cộng" + "thư thoại" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-zh-rCN/values-zh-rCN.xml b/library/external/dialpad/src/main/res/values-zh-rCN/values-zh-rCN.xml new file mode 100644 index 0000000000..95bc2d1160 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-zh-rCN/values-zh-rCN.xml @@ -0,0 +1,8 @@ + + + "删除" + "返回" + "更多选项" + "加号" + "语音邮件" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-zh-rHK/values-zh-rHK.xml b/library/external/dialpad/src/main/res/values-zh-rHK/values-zh-rHK.xml new file mode 100644 index 0000000000..6631ffe940 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-zh-rHK/values-zh-rHK.xml @@ -0,0 +1,8 @@ + + + "退格鍵" + "返回" + "更多選項" + "加號" + "留言" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-zh-rTW/values-zh-rTW.xml b/library/external/dialpad/src/main/res/values-zh-rTW/values-zh-rTW.xml new file mode 100644 index 0000000000..bb486569a0 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-zh-rTW/values-zh-rTW.xml @@ -0,0 +1,8 @@ + + + "Backspace 鍵" + "返回" + "更多選項" + "加號" + "語音留言" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values-zu/values-zu.xml b/library/external/dialpad/src/main/res/values-zu/values-zu.xml new file mode 100644 index 0000000000..023f3aec62 --- /dev/null +++ b/library/external/dialpad/src/main/res/values-zu/values-zu.xml @@ -0,0 +1,8 @@ + + + "i-backspace" + "Zulazula uye emuva" + "Izinketho eziningi" + "hlanganisa" + "ivoyisimeyili" + \ No newline at end of file diff --git a/library/external/dialpad/src/main/res/values/values.xml b/library/external/dialpad/src/main/res/values/values.xml new file mode 100644 index 0000000000..71d9b27cef --- /dev/null +++ b/library/external/dialpad/src/main/res/values/values.xml @@ -0,0 +1,121 @@ + + + + #fcfcfc + #ececec + #333 + #89000000 + #10000000 + #737373 + #dadada + #919191 + + 80dp + 2dp + 3dp + 60dp + 8dp + 10dp + 16dp + 24sp + 34sp + 5dp + 100dp + 64dp + 12sp + 3dp + 36sp + 18sp + 23sp + 36sp + 8dp + 14dp + 8dp + 13dp + 2dp + 1dp + 10dp + 400 + 400 + backspace + Navigate back + More options + plus + voicemail + + + + ABC + DEF + GHI + JKL + MNO + PQRS + TUV + WXYZ + + # + + * + + + + + + + + + \ No newline at end of file diff --git a/library/diff-match-patch/.gitignore b/library/external/diff-match-patch/.gitignore similarity index 100% rename from library/diff-match-patch/.gitignore rename to library/external/diff-match-patch/.gitignore diff --git a/library/diff-match-patch/build.gradle b/library/external/diff-match-patch/build.gradle similarity index 100% rename from library/diff-match-patch/build.gradle rename to library/external/diff-match-patch/build.gradle diff --git a/library/diff-match-patch/src/main/java/name/fraser/neil/plaintext/diff_match_patch.java b/library/external/diff-match-patch/src/main/java/name/fraser/neil/plaintext/diff_match_patch.java similarity index 100% rename from library/diff-match-patch/src/main/java/name/fraser/neil/plaintext/diff_match_patch.java rename to library/external/diff-match-patch/src/main/java/name/fraser/neil/plaintext/diff_match_patch.java diff --git a/library/jsonviewer/.gitignore b/library/external/jsonviewer/.gitignore similarity index 100% rename from library/jsonviewer/.gitignore rename to library/external/jsonviewer/.gitignore diff --git a/library/jsonviewer/build.gradle b/library/external/jsonviewer/build.gradle similarity index 97% rename from library/jsonviewer/build.gradle rename to library/external/jsonviewer/build.gradle index fcad3f1087..4e8dc99654 100644 --- a/library/jsonviewer/build.gradle +++ b/library/external/jsonviewer/build.gradle @@ -62,7 +62,7 @@ dependencies { implementation libs.jetbrains.coroutinesCore implementation libs.jetbrains.coroutinesAndroid - testImplementation 'org.json:json:20220320' + testImplementation 'org.json:json:20220924' testImplementation libs.tests.junit androidTestImplementation libs.androidx.junit androidTestImplementation libs.androidx.espressoCore diff --git a/library/jsonviewer/src/main/AndroidManifest.xml b/library/external/jsonviewer/src/main/AndroidManifest.xml similarity index 100% rename from library/jsonviewer/src/main/AndroidManifest.xml rename to library/external/jsonviewer/src/main/AndroidManifest.xml diff --git a/library/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/JSonViewerDialog.kt b/library/external/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/JSonViewerDialog.kt similarity index 100% rename from library/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/JSonViewerDialog.kt rename to library/external/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/JSonViewerDialog.kt diff --git a/library/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/JSonViewerEpoxyController.kt b/library/external/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/JSonViewerEpoxyController.kt similarity index 100% rename from library/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/JSonViewerEpoxyController.kt rename to library/external/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/JSonViewerEpoxyController.kt diff --git a/library/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/JSonViewerFragment.kt b/library/external/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/JSonViewerFragment.kt similarity index 100% rename from library/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/JSonViewerFragment.kt rename to library/external/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/JSonViewerFragment.kt diff --git a/library/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/JSonViewerModel.kt b/library/external/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/JSonViewerModel.kt similarity index 100% rename from library/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/JSonViewerModel.kt rename to library/external/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/JSonViewerModel.kt diff --git a/library/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/JSonViewerStyleProvider.kt b/library/external/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/JSonViewerStyleProvider.kt similarity index 100% rename from library/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/JSonViewerStyleProvider.kt rename to library/external/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/JSonViewerStyleProvider.kt diff --git a/library/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/JSonViewerViewModel.kt b/library/external/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/JSonViewerViewModel.kt similarity index 100% rename from library/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/JSonViewerViewModel.kt rename to library/external/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/JSonViewerViewModel.kt diff --git a/library/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/Utils.kt b/library/external/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/Utils.kt similarity index 100% rename from library/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/Utils.kt rename to library/external/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/Utils.kt diff --git a/library/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/ValueItem.kt b/library/external/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/ValueItem.kt similarity index 100% rename from library/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/ValueItem.kt rename to library/external/jsonviewer/src/main/java/org/billcarsonfr/jsonviewer/ValueItem.kt diff --git a/library/jsonviewer/src/main/res/layout/fragment_dialog_jv.xml b/library/external/jsonviewer/src/main/res/layout/fragment_dialog_jv.xml similarity index 100% rename from library/jsonviewer/src/main/res/layout/fragment_dialog_jv.xml rename to library/external/jsonviewer/src/main/res/layout/fragment_dialog_jv.xml diff --git a/library/jsonviewer/src/main/res/layout/fragment_jv_recycler_view.xml b/library/external/jsonviewer/src/main/res/layout/fragment_jv_recycler_view.xml similarity index 100% rename from library/jsonviewer/src/main/res/layout/fragment_jv_recycler_view.xml rename to library/external/jsonviewer/src/main/res/layout/fragment_jv_recycler_view.xml diff --git a/library/jsonviewer/src/main/res/layout/fragment_jv_recycler_view_wrap.xml b/library/external/jsonviewer/src/main/res/layout/fragment_jv_recycler_view_wrap.xml similarity index 100% rename from library/jsonviewer/src/main/res/layout/fragment_jv_recycler_view_wrap.xml rename to library/external/jsonviewer/src/main/res/layout/fragment_jv_recycler_view_wrap.xml diff --git a/library/jsonviewer/src/main/res/layout/item_jv_base_value.xml b/library/external/jsonviewer/src/main/res/layout/item_jv_base_value.xml similarity index 100% rename from library/jsonviewer/src/main/res/layout/item_jv_base_value.xml rename to library/external/jsonviewer/src/main/res/layout/item_jv_base_value.xml diff --git a/library/jsonviewer/src/main/res/values/colors.xml b/library/external/jsonviewer/src/main/res/values/colors.xml similarity index 100% rename from library/jsonviewer/src/main/res/values/colors.xml rename to library/external/jsonviewer/src/main/res/values/colors.xml diff --git a/library/jsonviewer/src/main/res/values/strings.xml b/library/external/jsonviewer/src/main/res/values/strings.xml similarity index 100% rename from library/jsonviewer/src/main/res/values/strings.xml rename to library/external/jsonviewer/src/main/res/values/strings.xml diff --git a/library/jsonviewer/src/test/java/org/billcarsonfr/jsonviewer/ModelParseTest.kt b/library/external/jsonviewer/src/test/java/org/billcarsonfr/jsonviewer/ModelParseTest.kt similarity index 100% rename from library/jsonviewer/src/test/java/org/billcarsonfr/jsonviewer/ModelParseTest.kt rename to library/external/jsonviewer/src/test/java/org/billcarsonfr/jsonviewer/ModelParseTest.kt diff --git a/library/multipicker/src/main/java/im/vector/lib/multipicker/utils/ImageUtils.kt b/library/multipicker/src/main/java/im/vector/lib/multipicker/utils/ImageUtils.kt index a3d69ae8cf..705223c55e 100644 --- a/library/multipicker/src/main/java/im/vector/lib/multipicker/utils/ImageUtils.kt +++ b/library/multipicker/src/main/java/im/vector/lib/multipicker/utils/ImageUtils.kt @@ -30,7 +30,15 @@ object ImageUtils { fun getBitmap(context: Context, uri: Uri): Bitmap? { return try { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { - ImageDecoder.decodeBitmap(ImageDecoder.createSource(context.contentResolver, uri)) + val source = ImageDecoder.createSource(context.contentResolver, uri) + val listener = ImageDecoder.OnHeaderDecodedListener { decoder, _, _ -> + if (Build.VERSION.SDK_INT == Build.VERSION_CODES.P) { + // Allocating hardware bitmap may cause a crash on framework versions prior to Android Q + decoder.allocator = ImageDecoder.ALLOCATOR_SOFTWARE + } + } + + ImageDecoder.decodeBitmap(source, listener) } else { context.contentResolver.openInputStream(uri)?.use { inputStream -> BitmapFactory.decodeStream(inputStream) diff --git a/library/ui-strings/src/main/res/values-ca/strings.xml b/library/ui-strings/src/main/res/values-ca/strings.xml index 863fa13fbb..25c490807e 100644 --- a/library/ui-strings/src/main/res/values-ca/strings.xml +++ b/library/ui-strings/src/main/res/values-ca/strings.xml @@ -2674,4 +2674,40 @@ Aquesta sessió està llesta per a missatges segurs. La teva sessió actual està llesta per a missatges segurs. Verifica la teva sessió actual obtenir missatges segurs millorats. + Crea missatge directe només al primer missatge + Activa missatges directes programats + Verifica o tanca aquesta sessió per estar més segur. + Per estar més segur, tanca qualsevol sessió que no reconeguis o ja no utilitzis. + No s\'han trobat sessions inactives. + No s\'han trobat sessions no verificades. + No s\'han trobat sessions verificades. + Detalls de sessió + Esborra filtre + Última activitat + Nom de la sessió + Informació d\'aplicació, dispositiu i activitat. + Adreça IP + + Pensa en tancar sessió de les sessions antigues (%1$d dia o més) que ja no utilitzis. + Pensa en tancar sessió de les sessions antigues (%1$d dies o més) que ja no utilitzis. + + Inactiu + No verificat + Verificat + Filtra + + Inactiu durant %1$d dia o més + Inactiu durant %1$d dies o més + + Inactiu + No verificat + Verificat + Totes les sessions + Filtre + Última activitat %1$s + Dispositiu + Sessió + Sessió actual + Element simplificat amb pestanyes opcionals + Activa la nova visualització \ No newline at end of file diff --git a/library/ui-strings/src/main/res/values-cs/strings.xml b/library/ui-strings/src/main/res/values-cs/strings.xml index 79f8311159..1983036271 100644 --- a/library/ui-strings/src/main/res/values-cs/strings.xml +++ b/library/ui-strings/src/main/res/values-cs/strings.xml @@ -2720,4 +2720,48 @@ Sbalit podprostory %s Rozbalit podprostory %s Změnit prostor - + IP adresa + Poslední aktivita + Název relace + Informace o aplikacích, zařízeních a aktivitách. + Podrobnosti o relaci + Vyčistit filtr + Nebyly nalezeny žádné neaktivní relace. + Nebyly nalezeny žádné neověřené relace. + Nebyly nalezeny žádné ověřené relace. + + Zvažte odhlášení ze starých relací (%1$d den nebo více), které již nepoužíváte. + Zvažte odhlášení ze starých relací (%1$d dny nebo více), které již nepoužíváte. + Zvažte odhlášení ze starých relací (%1$d dnů nebo více), které již nepoužíváte. + + Neaktivní + Ověřte své relace pro vylepšené bezpečné zasílání zpráv nebo se odhlaste z těch, které již nepoznáváte nebo nepoužíváte. + Neověřeno + Pro nejlepší zabezpečení se odhlaste z každé relace, kterou již nepoznáváte nebo nepoužíváte. + Ověřeno + Filtr + + Neaktivní po dobu %1$d dne nebo déle + Neaktivní po dobu %1$d dnů nebo déle + Neaktivní po dobu %1$d dnů nebo déle + + Neaktivní + Není připraveno na bezpečné zasílání zpráv + Neověřeno + Připraveno na bezpečné zasílání zpráv + Ověřeno + Všechny relace + Filtr + Poslední aktivita %1$s + Zařízení + Relace + Aktuální relace + Pro nejlepší zabezpečení a spolehlivost tuto relaci ověřte nebo se z ní odhlaste. + Ověřte svou aktuální relaci pro vylepšené bezpečené zasílání zpráv. + Tato relace je připravena pro bezpečné zasílání zpráv. + Vaše aktuální relace je připravena pro bezpečné zasílání zpráv. + Vytvořit přímou zprávu pouze při první zprávě + Povolit odložené přímé zprávy + Zjednodušený Element s volitelnými kartami + Povolit nový vzhled + \ No newline at end of file diff --git a/library/ui-strings/src/main/res/values-de/strings.xml b/library/ui-strings/src/main/res/values-de/strings.xml index e01fc898a3..27f46160bc 100644 --- a/library/ui-strings/src/main/res/values-de/strings.xml +++ b/library/ui-strings/src/main/res/values-de/strings.xml @@ -103,7 +103,7 @@ Du hast das Bild des Raumes geändert Du hast den Raumnamen zu %1$s geändert Du hast einen Videoanruf gestartet. - Du hast einen Audioanruf gestartet. + Du hast einen Sprachanruf gestartet. Du hast den Anruf angenommen. Du hast den Anruf beendet. Du hast den zukünftigen Nachrichtenverlauf für %1$s sichtbar gemacht @@ -269,7 +269,7 @@ Problem melden Bitte beschreibe das Problem. Was hast du genau gemacht\? Was sollte passieren\? Was ist tatsächlich passiert\? Problembeschreibung - Um Probleme diagnostizieren zu können, werden Protokolle des Clients zusammen mit dem Fehlerbericht übermittelt. Dieser Fehlerbericht wird, wie die Protokolle und das Bildschirmfoto, nicht öffentlich sichtbar sein. Wenn du nur den oben eingegebenen Text senden möchtest, die nachfolgenden Haken entsprechend entfernen: + Um Probleme diagnostizieren zu können, werden Protokolle der Anwendung zusammen mit dem Fehlerbericht übermittelt. Dieser Fehlerbericht wird, wie die Protokolle und das Bildschirmfoto, nicht öffentlich sichtbar sein. Wenn du nur den oben eingegebenen Text senden möchtest, die nachfolgenden Haken entsprechend entfernen: Du scheinst dein Telefon frustriert zu schütteln. Möchtest du das Fenster zum Senden eines Fehlerberichts öffnen\? Dein Fehlerbericht wurde erfolgreich übermittelt Der Fehlerbericht konnte nicht übermittelt werden (%s) @@ -278,7 +278,7 @@ Raum betreten Benutzername Abmelden - Heimserver-Adresse + Heim-Server-Adresse Suchen Sprachanruf starten Videoanruf starten @@ -308,7 +308,7 @@ Die Gegenseite hat den Anruf nicht angenommen. Information ${app_name} benötigt die Berechtigung, auf dein Mikrofon zugreifen zu können, um (Sprach-)Anrufe tätigen zu können. - ${app_name} benötigt die Berechtigung, auf Kamera und Mikrofon zu zugreifen, um Video-Anrufe durchzuführen. + ${app_name} benötigt die Berechtigung, auf Kamera und Mikrofon zuzugreifen, um Videoanrufe durchzuführen. \n \nBitte erlaube den Zugriff im nächsten Dialog, um den Anruf durchzuführen. Ja @@ -351,12 +351,12 @@ Anzeigename E-Mail-Adresse hinzufügen Telefonnummer hinzufügen - Appinfo in den Systemeinstellungen öffnen. - App-Info + Anwendungsinformationen in den Systemeinstellungen anzeigen. + Anwendungsinformationen Benachrichtigungen für diesen Account Benachrichtigungen für diese Sitzung Direktnachrichten - Gruppenchats + Gruppenunterhaltungen Einladungen Anrufe Nachrichten von Bots @@ -366,7 +366,7 @@ Version OLM-Version Nutzungsbedingungen - Nutzungshinweise von Drittanbietern + Drittanbieter-Lizenzen Urheberrechtserklärung Datenschutzerklärung Cache leeren @@ -390,8 +390,8 @@ %1$s @ %2$s Authentifizierung Angemeldet als - Heimserver - Identitätsserver + Heim-Server + Identitäts-Server Bitte prüfe deinen E-Mail-Posteingang und klicke auf den in der E-Mail enthaltenen Link. Klicke anschließend auf Fortsetzen. Diese E-Mail-Adresse wird bereits verwendet. Diese Telefonnummer wird bereits verwendet. @@ -403,8 +403,8 @@ Alle Nachrichten von %s anzeigen\? Wähle ein Land Thema - Lesbarkeit des Chatverlaufs - Wer kann den Chatverlauf lesen? + Lesbarkeit des Verlaufs + Wer kann den Verlauf lesen\? Alle Nur Mitglieder Nur Mitglieder (ab Einladung) @@ -412,8 +412,8 @@ Verbannte Benutzer Erweitert Interne ID dieses Raumes - Experimentelle Einstellungen - Dies sind experimentelle Funktionen, die in unerwarteter Weise Fehler verursachen können. Mit Vorsicht zu verwenden. + Labor + Dies sind experimentelle Funktionen, die in unerwarteter Weise Fehler verursachen können. Verwende sie mit Vorsicht. Als Hauptadresse setzen Als Hauptadresse aufheben Entschlüsselungsfehler @@ -447,7 +447,7 @@ Starte beim Systemstart Medien-Cache leeren Medien behalten - Für alle Nachrichten Zeitstempel anzeigen + Zeitstempel für alle Nachrichten 3 Tage 1 Woche 1 Monat @@ -500,7 +500,7 @@ Sicher, dass du einen Videoanruf starten möchtest\? Die Verbannung einer Person entfernt sie aus diesem Raum und hindert sie am erneuten Beitritt. Alle Nachrichten - URL-Vorschau im Chat + URL-Vorschau Vibriere beim Erwähnen eines Nutzers Erstellen Startseite @@ -551,9 +551,9 @@ Um %1$s weiter zu verwenden, musst die Geschäftsbedingungen begutachten und ihnen zustimmen. Jetzt prüfen Konto deaktivieren - Dies wird dein Konto permanent unbenutzbar machen. Du wirst dich nicht anmelden können und keiner wird denselben Nutzernamen erneut registrieren können. Du verlässt automatisch alle Räume, in denen du bist, und deine Kontoangaben werden vom Identitätsserver gelöscht. Diese Aktion ist unumkehrbar. + Dies wird dein Konto permanent unbenutzbar machen. Du wirst dich nicht anmelden können und keiner wird denselben Nutzernamen erneut registrieren können. Du verlässt automatisch alle Räume, in denen du bist, und deine Kontoangaben werden vom Identitäts-Server gelöscht. Diese Aktion ist unumkehrbar. \n -\nDie Deaktivierung deines Konto wird standardmäßig keine deiner gesendeten Nachrichten löschen. Wenn du möchtest, dass auch deine Nachrichten gelöscht werden, wähle zusätzlich die Option unten. +\nDie Deaktivierung deines Kontos wird standardmäßig keine deiner gesendeten Nachrichten löschen. Wenn du möchtest, dass auch deine Nachrichten gelöscht werden, wähle zusätzlich die Option unten. \n \nDie Sichtbarkeit deiner Nachrichten ist ähnlich wie bei E-Mails: Wenn deine Nachrichten gelöscht werden, bedeutet dies, dass von dir verschickte Nachrichten nicht mit neuen oder unregistrierten Nutzer geteilt werden. Aber registrierte Nutzer, die bereits Zugang zu diesen Nachrichten haben, behalten weiterhin Zugriff auf ihre Kopie. Bitte alle Nachrichten, die ich gesendet habe, löschen, wenn mein Konto deaktiviert wird (Warnung: Unterhaltungen werden für zukünftige Nutzer unvollständig erscheinen) @@ -605,7 +605,7 @@ %1$s: %2$s +%d Aus Unterhaltung entfernen - Linkvorschau im Chat aktivieren, falls dein Homeserver diese Funktion unterstützt. + Link-Vorschau im Chat aktivieren, falls dein Heim-Server diese Funktion unterstützt. Schreibbenachrichtigungen senden Lasse andere Benutzer wissen, dass du tippst. Markdown-Formatierung @@ -614,7 +614,7 @@ Klicke auf die Lesebestätigungen für eine detailliertere Liste. Einladungen, Entfernungen und Verbannungen bleiben sichtbar. Passwort - Starte die System-Kamera anstelle der angepassten Kamera. + Starte die Kamera des Systems anstelle der selbstdefinierten. Das Kommando \"%s\" braucht mehr Parameter oder einige Parameter sind inkorrekt. Markdown wurde aktiviert. Markdown wurde deaktiviert. @@ -729,10 +729,10 @@ Wiederherstellungsschlüssel aus Passphrase generieren. Dies kann mehrere Sekunden brauchen. Du verlierst möglicherweise den Zugang zu deinen Nachrichten, wenn du dich abmeldest oder das Gerät verlierst. Rufe Backup-Version ab… - Nutze deine Wiederherstellungspassphrase, um deinen verschlüsselten Chatverlauf lesen zu können + Nutze deine Wiederherstellungs-Passphrase, um deinen verschlüsselten Nachrichtenverlauf lesen zu können nutze deinen Wiederherstellungsschlüssel Wenn du deine Wiederherstellungspassphrase nicht weist, kannst du %s. - Nutze deinen Wiederherstellungsschlüssel, um deinen verschlüsselten Chatverlauf lesen zu können + Nutze deinen Wiederherstellungsschlüssel, um deinen verschlüsselten Nachrichtenverlauf lesen zu können Hast du deinen Wiederherstellungsschlüssel verloren\? Du kannst einen neuen in den Einstellungen einrichten. Sicherung konnte mit dieser Passphrase nicht entschlüsselt werden. Bitte stelle sicher, dass du die korrekte Wiederherstellungspassphrase eingegeben hast. Gib deinen Wiederherstellungsschlüssel ein @@ -757,7 +757,7 @@ Die Sicherung hat eine ungültige Signatur von der verifizierten Sitzung %s Die Sicherung hat eine ungültige Signatur von der nicht verifizierten Sitzung %s Um die Schlüsselsicherung für diese Sitzung zu verwenden, stelle sie jetzt mit deiner Passphrase oder deinem Wiederherstellungsschlüssel wieder her. - Deine gesicherten Schlüssel vom Server löschen\? Du wirst deinen Wiederherstellungsschlüssel nicht mehr nutzen können, um deinen verschlüsselten Chatverlauf zu lesen. + Deine gesicherten Schlüssel vom Server löschen\? Du wirst deinen Wiederherstellungsschlüssel nicht mehr nutzen können, um deinen verschlüsselten Nachrichtenverlauf zu lesen. Beim Abmelden gehen deine verschlüsselten Nachrichten verloren Schlüssel-Sicherung wird durchgeführt. Wenn du dich jetzt abmeldest, gehen deine verschlüsselten Nachrichten verloren. Schlüsselsicherung sollte bei allen Sitzungen aktiviert sein, um den Verlust verschlüsselter Nachrichten zu verhindern. @@ -889,7 +889,7 @@ Sonstige Hinweise Dritter Du siehst diesen Raum bereits! Allgemein - Einstellungen + Optionen Sicherheit und Privatsphäre Push-Regeln Keine Push-Regeln definiert @@ -934,7 +934,7 @@ Keine Hintergrundsynchronisation Auffindbarkeit Um fortzufahren, musst du die Nutzungsbedingungen akzeptieren. - Du verwendest keinen Identitätsserver + Du verwendest keinen Identitäts-Server Du versuchst anscheinend, eine Verbindung zu einem anderen Homeserver herzustellen. Möchtest du dich abmelden\? Push-Key: App-Anzeigename: @@ -942,13 +942,13 @@ Nutzungsbedingungen Für andere auffindbar sein Verwende Bots, Bridges, Widgets und Sticker-Pakete - Identitätsserver - Verbindung zum Identitätsserver trennen - Identitätsserver konfigurieren - Identitätsserver ändern + Identitäts-Server + Verbindung zum Identitäts-Server trennen + Identitäts-Server konfigurieren + Identitäts-Server ändern Auffindbare E-Mail-Adressen Erkennungsoptionen werden angezeigt, sobald du eine E-Mail hinzugefügt hast. - Gib einen neuen Identitätsserver ein + Gib eine Identitäts-Server-Adresse ein Konnte keine Verbindung zum Homeserver herstellen Dies ist keine Adresse eines Matrixservers Kann Homeserver nicht unter dieser URL erreichen. Bitte überprüfen @@ -986,15 +986,15 @@ Sitzungsname: Format: Du nutzt aktuell %1$s um vorhandene Kontakte zu finden und um von dir bekannten Kontakten gefunden zu werden. - Du benutzt aktuell keinen Identitätsserver. Um zu entdecken und um von dir bekannten Kontakten entdeckt zu werden, richte unten einen ein. + Aktuell nutzt du keinen Identitäts-Server. Richte einen ein, um andere zu finden und selbst auffindbar zu sein. Auffindbare Telefonnummern - Bitte gib die Adresse des Identitätsservers ein - Identitätsserver hat keine Nutzungsbedingungen - Der Identitätsserver den du ausgewählt hast, hat keine Nutzungsbedingungen. Fahre nur fort, wenn du dem Besitzer des Dienstes vertraust + Bitte gib die Adresse des Identitäts-Servers ein + Identitäts-Server hat keine Nutzungsbedingungen + Der Identitäts-Server, den du ausgewählt hast, hat keine Nutzungsbedingungen. Fahre nur fort, wenn du den Betreibenden des Dienstes vertraust Eine Textnachricht wurde an %s gesendet. Bitte gib den Verifizierungscode ein, den sie enthält. Aktiviere ausführliche Logs. - Ausführliche Logs werden der Entwicklung der App dadurch helfen, dass mehr Informationen übertragen werden, wenn du einen Fehlerbericht sendest. Auch wenn dies aktiviert ist, werden keine Nachrichteninhalte oder andere privaten Daten aufgezeichnet. - Bitte erneut versuchen, nachdem du die Nutzungsbedingungen deines Heimservers akzeptiert hast. + Ausführliche Protokolle werden bei der Entwicklung der App helfen. Auch wenn dies aktiviert ist, werden keine Nachrichteninhalte oder andere privaten Daten aufgezeichnet. + Bitte erneut versuchen, nachdem du die Nutzungsbedingungen deines Heim-Servers akzeptiert hast. Bei Benutzung könnten Cookies gesetzt werden und es könnten Daten mit %s geteilt werden: Bei Benutzung könnten Daten mit %s geteilt werden: Optionen zum Finden werden erscheinen, sobald du eine Telefonnummer hinzugefügt hast. @@ -1004,7 +1004,7 @@ Navigationsmenü öffnen Raumerstellungsmenü öffnen Schließe das Raumerstellungsmenü… - Starte einen neuen Privatchat + Erstelle eine neue Direktnachricht Erstelle einen neuen Raum Schließe Key-Backup-Einblendung Zum Ende springen @@ -1052,7 +1052,7 @@ Halte auf einem Raum um mehr Optionen anzuzeigen %1$s hat den Raum für jeden, der den Link hat, öffentlich gemacht. Ungelesene Nachrichten - Privat oder in Gruppen mit Leuten chatten + Schreibe privat oder in Gruppen Halte Gespräche mittels Verschlüsselung privat Los geht\'s Wähle einen Server @@ -1063,9 +1063,9 @@ Andere Benutzerdefinierte und erweiterte Einstellungen Fortfahren - Eine Trennung von deinem Identitätsserver würde bedeuten, dass du weder von anderen Nutzern gefunden werden, noch diese per E-Mail oder Telefonnummer einladen kannst. - Du teilst deine E-Mail-Adressen oder Telefonnummern momentan auf dem Identitätsserver %1$s. Du wirst dich erneut mit %2$s verbinden müssen, um mit dem Teilen aufzuhören. - Stimme den Nutzungsbedingungen des Identitätsservers (%s) zu, um zu erlauben per E-Mail oder Telefonnummer gefunden zu werden. + Eine Trennung von deinem Identitäts-Server würde bedeuten, dass du weder von anderen gefunden werden, noch diese per E-Mail oder Telefonnummer einladen kannst. + Du teilst deine E-Mail-Adressen oder Telefonnummern momentan auf dem Identitäts-Server %1$s. Du wirst dich erneut mit %2$s verbinden müssen, um mit dem Teilen aufzuhören. + Stimme den Nutzungsbedingungen des Identitäts-Servers (%s) zu, um per E-Mail-Adresse oder Telefonnummer auffindbar zu sein zu können. Zu teilende Daten nicht verarbeitbar Erweitere und individualisiere dein Benutzererlebnis Mit %1$s verbinden @@ -1081,13 +1081,13 @@ Es tut uns leid. Dieser Server akzeptiert keine neuen Benutzerkonten. Die Anwendung kann kein neues Benutzerkonto auf diesem Server erstellen. \n -\nMöchtest du dich über eine Web-Anwendung anmelden\? +\nMöchtest du dich mit einer Web-Anwendung anmelden\? Diese E-Mail-Adresse ist mit keinem Benutzerkonto verknüpft. Passwort auf %1$s zurücksetzen E-Mail Neues Passwort Achtung! - Eine Änderung deines Passworts wird alle Ende-zu-Ende-Schlüssel zurücksetzen. Dein verschlüsselter Chatverlauf wird dadurch unlesbar. Richte die Schlüsselsicherung ein oder exportiere deine Raumschlüssel aus einer anderen Sitzung, bevor du dein Passwort zurücksetzt. + Eine Änderung deines Passworts wird alle Ende-zu-Ende-Schlüssel zurücksetzen. Dein verschlüsselter Verlauf wird dadurch unlesbar. Richte die Schlüsselsicherung ein oder exportiere deine Raumschlüssel aus einer anderen Sitzung, bevor du dein Passwort zurücksetzt. Fortfahren Diese E-Mail-Adresse ist mit keinem Benutzerkonto verknüpft Prüfe deinen Posteingang @@ -1126,9 +1126,9 @@ Es ist deine Konversation. Mache sie dir zu eigen. Premium-Hosting für Organisationen Gib die Adresse des Modular Element oder Servers ein, den du verwenden möchtest - Die Anwendung kann sich nicht bei diesem Homeserver anmelden. Der Homeserver unterstützt die folgenden Anmeldemöglichkeiten: %1$s. + Die Anwendung kann sich nicht bei diesem Heim-Server anmelden. Der Heim-Server unterstützt die folgenden Anmeldemöglichkeiten: %1$s. \n -\nMöchtest du dich mit einem Webclient anmelden\? +\nMöchtest du dich mit einer Web-Anwendung anmelden\? Dir wird eine Bestätigungsmail gesendet, um dein neues Passwort zu bestätigen. Weiter Du wurdest von allen Sitzungen abgemeldet und erhältst keine Push-Benachrichtigungen mehr. Um Benachrichtigungen wieder zu aktivieren, melde dich auf jedem Gerät erneut an. @@ -1272,21 +1272,21 @@ Vergleiche den Code mit dem Code auf dem Bildschirm deines Gegenübers. Nachrichten mit diesem Gegenüber sind Ende-zu-Ende-verschlüsselt und können nicht von Dritten gelesen werden. Deine neue Sitzung ist jetzt verifiziert. Sie hat Zugriff auf deine verschlüsselten Nachrichten, und andere Benutzer sehen sie als vertrauenswürdig an. - Cross-Signing - Cross-Signing ist aktiviert -\nPrivate Schlüssel auf dem Gerät. - Cross-Signing ist aktiviert + Quersignierung + Quersignierung ist aktiviert, +\nprivate Schlüssel auf dem Gerät. + Quersignierung ist aktiviert, \nSchlüssel sind vertrauenswürdig. \nPrivate Schlüssel sind nicht bekannt - Cross-Signing ist aktiviert + Quersignierung ist aktiviert, \nSchlüssel sind nicht vertrauenswürdig - Cross-Signing ist nicht aktiviert + Quersignierung ist nicht aktiviert Aktive Sitzungen Alle Sitzungen anzeigen Sitzungen verwalten Diese Sitzung abmelden Keine kryptografischen Informationen verfügbar - Diese Sitzung ist für sichere Nachrichtenübertragung vertrauenswürdig, da du sie überprüft hast: + Diese Sitzung ist für sichere Kommunikation vertrauenswürdig, da du sie überprüft hast: Verifiziere diese Sitzung, um sie als vertrauenswürdig zu markieren, und gewähren ihr Zugriff auf verschlüsselte Nachrichten. Wenn du dich nicht bei dieser Sitzung angemeldet hast, ist dein Konto möglicherweise gefährdet: Eine aktive Sitzung @@ -1301,10 +1301,10 @@ Sitzungen Vertraut Nicht vertraut - Diese Sitzung ist für sichere Nachrichtenübertragung vertrauenswürdig, weil %1$s (%2$s) sie verifiziert hat: + Diese Sitzung ist für sichere Kommunikation vertrauenswürdig, weil %1$s (%2$s) sie verifiziert hat: %1$s (%2$s) hat sich in einer neuen Sitzung angemeldet: Bis dieser Benutzer dieser Sitzung vertraut, werden an und von ihm gesendete Nachrichten mit Warnungen gekennzeichnet. Alternativ kannst du dies manuell überprüfen. - Initialisiere Cross-Signing + Quersignierung initialisieren Schlüssel zurücksetzen QR-Code Fast geschafft! Zeigt %s ein Häkchen\? @@ -1373,7 +1373,7 @@ Import der Schlüssel fehlgeschlagen Benachrichtigungskonfiguration Nachrichten mit \"@room\" - Verschlüsselte Gruppenchats + Verschlüsselte Gruppenunterhaltungen Sendet eine Nachricht als einfachen Text, ohne sie als Markdown zu interpretieren Inkorrekter Benutzername und/oder Passwort. Das eingegebene Passwort beginnt oder endet mit Leerzeichen, bitte kontrolliere es. Nachrichtenschlüssel @@ -1381,7 +1381,7 @@ Druck es aus und speichere es an einem sicheren Ort Kopier es in deinen persönlichen Cloud-Speicher Verschlüsselung ist nicht aktiviert - Raumupgrades + Raumaktualisierung Verschlüsselung aktiviert Nachrichten in diesem Raum sind Ende-zu-Ende-verschlüsselt. Erfahre mehr und verifiziere Benutzer in deren Profil. Die Verschlüsselung in diesem Raum wird nicht unterstützt @@ -1392,7 +1392,7 @@ Fast geschafft! Warte auf Bestätigung… Verschlüsselte Direktnachrichten Nachricht… - Verifiziere dich und andere, um eure Chats zu schützen + Verifiziere dich und andere, um eure Unterhaltungen zu schützen Gib zum Fortfahren deinen %s ein Datei benutzen Dies ist kein gültiger Wiederherstellungsschlüssel @@ -1412,12 +1412,12 @@ Bildschirmfotos der Anwendung verhindern Das Aktivieren dieser Einstellung setzt FLAG_SECURE in allen Aktivitäten. Starte die Anwendung neu, damit die Änderung wirksam wird. Neues Benutzerpasswort festlegen… - Nutze die neueste Version von ${app_name} auf deinen anderen Geräten, ${app_name} Web, ${app_name} Desktop, ${app_name} iOS, ${app_name} für Android oder einen anderen cross-signing-fähigen Matrix-Client + Nutze die neueste Version von ${app_name} auf deinen anderen Geräten, ${app_name} Web, ${app_name} Desktop, ${app_name} iOS, ${app_name} für Android oder eine andere Matrix-Anwendung, die Quersignierung unterstützt ${app_name} Web \n${app_name} Desktop ${app_name} iOS \n${app_name} Android - oder einen anderen cross-signing-fähigen Matrix Client + oder eine andere Matrix-Anwendung, die Quersignierung unterstützt Nutze die neueste Version von ${app_name} auf deinen anderen Geräten: Erzwingt das Verwerfen der aktuell ausgehende Gruppensitzung in einem verschlüsseltem Raum Wird nur in verschlüsselten Räumen unterstützt @@ -1461,7 +1461,7 @@ Ablehnen Erfolg Echtzeitverbindung konnte nicht hergestellt werden. -\nBitte den Administrator deines Heimservers, einen TURN-Server zu konfigurieren, damit Anrufe zuverlässig funktionieren. +\nBitte den Administrator deines Heim-Servers, einen TURN-Server zu konfigurieren, damit Anrufe zuverlässig funktionieren. Audiogerät auswählen Telefon Lautsprecher @@ -1555,22 +1555,22 @@ Andere verfügbare Sprachen Lade verfügbare Sprachen… Öffne AGBs von %s - Trenne Verbindung zu Identitätsserver %s\? - Dieser Identitätsserver ist veraltet. ${app_name} unterstützt nur API V2. + Verbindung zu Identitäts-Server %s trennen\? + Dieser Identitäts-Server ist veraltet. ${app_name} unterstützt nur API V2. Diese Operation ist nicht möglich. Der Homeserver ist veraltet. - Bitte konfiguriere zuerst einen Identitätsserver. - Bitte akzeptiere zuerst die AGB des Identitätsservers in den Einstellungen. + Bitte konfiguriere zuerst einen Identitäts-Server. + Bitte akzeptiere zuerst die AGB des Identitäts-Servers in den Einstellungen. Deiner Privatsphäre wegen unterstützt ${app_name} nur das Senden gehashter E-Mail-Adressen und Telefonnummern. Die Assoziierung ist fehlgeschlagen. Für diese Kennung gibt es aktuell keine Zuordnung. - Dein Homeserver (%1$s) schlägt %2$s als Identitätsserver vor + Dein Heim-Server (%1$s) schlägt %2$s als Identitäts-Server vor Benutze %1$s - Alternativ kannst du die URL eines beliebigen anderen Identitätsservers angeben - Gib die URL von einem Identitätsserver ein - Bestätigen - Lege Rolle fest + Alternativ kannst du die URL eines beliebigen anderen Identitäts-Servers angeben + Gib die Adresse eines Identitäts-Servers ein + Absenden + Rolle festlegen Rolle - Öffne Chat + Unterhaltung öffnen Stelle Mikrophon stumm Aktiviere Mikrophon Stoppe Kamera @@ -1704,7 +1704,7 @@ Alle Wiederherstellungsoptionen vergessen oder verloren\? Alles zurücksetzen Du bist beigetreten. %s ist beigetreten. - Nachrichten in diesem Raum sind Ende-zu-Ende-verschlüsselt. + Nachrichten in dieser Unterhaltung sind Ende-zu-Ende-verschlüsselt. Verlassen Einstellungen Nachrichten hier sind Ende-zu-Ende-verschlüsselt. @@ -1744,10 +1744,10 @@ Direktnachricht Verlauf der Anfragen von Schlüsselfreigaben senden Keine weiteren Ergebnisse - Beginne ein Gespräch + Beginne eine Unterhaltung Autorisieren Meine Zustimmung widerrufen - Du hast zugestimmt E-Mails und Telefonnummern an diesen Identitätsserver zu senden, um von anderen Nutzern entdeckt zu werden. + Du hast zugestimmt, E-Mail-Adressen und Telefonnummern an diesen Identitäts-Server zu übermitteln, um für andere auffindbar zu sein. E-Mails und Telefonnummern senden Vorschläge Bekannte Personen @@ -1774,7 +1774,7 @@ Suche nach Kontakten auf Matrix Raumbild einrichten Einverständnis wurde nicht abgegeben. - Teile diesen Code mit Leuten, damit sie ihn scannen und mit dir chatten können. + Teile diesen Code, damit andere ihn einlesen und mit dir schreiben können. Meinen Code teilen Mein Code Scanne einen QR-Code @@ -1794,7 +1794,7 @@ Manche Zeichen sind nicht zulässig Bitte gib eine Raumadresse an Diese Adresse ist bereits vergeben - Aktivieren, wenn der Raum nur von Mitgliedern deines Heimservers zur internen Kommunikation verwendet wird. Das kann später nicht mehr geändert werden. + Aktivieren, wenn der Raum nur von Mitgliedern deines Heim-Servers zur internen Kommunikation verwendet wird. Das kann später nicht mehr geändert werden. Begrenze Zugang zu diesem Raum (für immer!) auf Mitglieder von %s %1$d von %2$d Keine Vorschau für diesen Raum verfügbar. Willst du direkt beitreten\? @@ -1849,7 +1849,7 @@ Knopf zum Nachrichteneditor hinzufügen, der die Emoji-Tastatur öffnet Emoji-Tastatur anzeigen Nutze /confetti oder sende Nachrichten mit ❄️ oder 🎉 - Chateffekte + Effekte im Verlauf Thema ändern Raum aktualisieren Rollen, die zum Ändern verschiedener Teile des Raums erforderlich sind, auswählen @@ -1859,7 +1859,7 @@ Authentifizierung fehlgeschlagen Deine Anmeldeinformationen müssen für ${app_name} eingegeben werden, um diese Aktion auszuführen. Erneute Authentifizierung erforderlich - Cross-Signing konnte nicht eingerichtet werden + Quersignierung konnte nicht eingerichtet werden Nicht autorisierte, fehlende gültige Authentifizierungsdaten Nutzer Beim Weiterleiten des Anrufs ist ein Fehler aufgetreten @@ -1917,7 +1917,7 @@ %d Einträge Die Obergrenze ist nicht bekannt. - Dein Homeserver akzeptiert Anhänge (wie Dateien, Medien, etc.) mit einer Größe bis zu %s. + Dein Heim-Server akzeptiert Anhänge (wie Dateien, Medien, etc.) mit einer Größe bis zu %s. Datei-Upload-Obergrenze des Servers Serverversion Servername @@ -1960,7 +1960,7 @@ Diese werden in der Lage sein, %s zu durchsuchen Diese werden kein Teil von %s sein Tritt meinem Space %1$s %2$s bei - Mit Spaces kannst du Personen und Räume gruppieren. + Spaces sind eine neue Möglichkeit, Räume und Personen zu gruppieren. Räume oder Spaces hinzufügen Vorübergehend überspringen Über welche Themen möchtest du dich in %s unterhalten\? @@ -1994,8 +1994,8 @@ Dein öffentlicher Space Betrete einen Space mit der angegebenen ID Beschreibung - Erzeuge Space… - Irgendetwas + Erzeuge Space … + Ohne Thema Allgemein Einen Space erstellen Nur für mich @@ -2051,7 +2051,7 @@ Privater Space Öffentlicher Space Unbekannte Person - Feedback geben + Rückmeldung geben Fehler beim Senden vom Feedback (%s) Dein Feedback wurde erfolgreich versandt. Danke! Mich bei Fragen kontaktieren @@ -2086,7 +2086,7 @@ Sprachnachricht pausieren Sprachnachricht abspielen Sprachnachricht aufnehmen - Dieser Raum verwendet die Raumversion %s, die von diesem Heimserver als instabil markiert ist. + Dieser Raum verwendet die Raumversion %s, die von diesem Heim-Server als instabil markiert ist. Du benötigst die Berechtigung, um einen Raum upzugraden Übergeordneten Space automatisch updaten Benutzer automatisch einladen @@ -2105,14 +2105,14 @@ Sprachnachricht Lege fest, wer diesen Raum finden und betreten kann. Klicke, um die Spaces zu bearbeiten - Spaces auswählen + Spaces wählen Mitglieder von %s können Räume finden, betrachten und betreten. Privat (Zutritt nur mit Einladung) Raumupgrades Nachrichten von Bots Raumeinladungen - Verschlüsselten Gruppenchats - Gruppenchats + Verschlüsselte Gruppennachrichten + Gruppennachrichten Verschlüsselten Direktnachrichten Direktnachrichten Mein Benutzername @@ -2129,7 +2129,7 @@ Verpasster Sprachanruf %d verpasste Sprachanrufe - Heimserver API URL + Heim-Server API URL Um Sprachnachrichten zu senden, erlaube bitte Zugriff aufs Mikrofon. Um fortzufahren, erlaube bitte in den Systemeinstellungen Zugriff auf die Kamera. Für diese Aktion fehlen einige Berechtigungen, bitte erlaube diese in den Systemeinstellungen. @@ -2243,8 +2243,8 @@ Auffindungseinstellungen öffnen Sitzung abgemeldet! Raum verlassen! - Heimserver auswählen - Es konnte kein Heimserver mit der Adresse %s gefunden werden. Bitte überprüfe die Adresse oder wähle den Heimserver manuell. + Heim-Server auswählen + Es konnte kein Heim-Server mit der Adresse %s gefunden werden. Bitte überprüfe die Adresse oder wähle den Heim-Server manuell. Untergeordneten Space hinzufügen. Bist du dir wirklich sicher, dass du diese Informationen senden willst\? E-Mail-Adressen und Telefonnummern an %s senden @@ -2259,16 +2259,16 @@ \n%s kannst du alle unsere Bedingungen lesen. Stelle sicher, dass die richtigen Personen Zugriff auf %s haben. Du kannst jederzeit weitere Personen einladen. Wer ist Mitglied deines Teams\? - Der Identitätsserver gibt keine Bedingungen an - Bedingungen des Identitätsservers ausblenden - Bedingungen des Identitätsservers anzeigen + Der Identitäts-Server gibt keine Bedingungen an + Richtlinie des Identitäts-Servers ausblenden + Bedingungen des Identitäts-Servers anzeigen Systemeinstellungen Versionen Erhalte Hilfe bei der Bedienung von ${app_name} Hilfe und Unterstützung Hilfe Rechtliches - Entscheide, welche Spaces Zugriff auf den Raum haben sollen. Die Mitglieder der Spaces können diesen Räumen beitreten. + Entscheide, welche Spaces Zugriff auf den Raum haben sollen. Die Mitglieder der Spaces können diesen Räumen betreten. hier Hilf mit, ${app_name} zu verbessern Aktivieren @@ -2296,15 +2296,15 @@ Auffindbarkeit (%s) Per E-Mail einladen, finde deine Kontakte und mehr… Schließe die Konfiguration des Auffindbarkeitsdienstes ab. - Du verwendest derzeit keinen Identitätsserver. Um Teammitglieder einzuladen und für sie auffindbar zu sein, müssen du einen solchen Server konfigurieren. - Ich habe schon ein Konto - Sichere Nachrichtenübertragung. - Besitze deine Konversationen. - Um bestehende Kontakte ermitteln zu können, müsst du Kontaktinformationen (E-Mails und Telefonnummern) an Ihren Identitätsserver senden. Wir verschlüsseln deine Daten vor dem Senden, um den Datenschutz zu gewährleisten. - Deine Kontakte sind privat. Um in deinen Kontakten Benutzer erkennen zu können, benötigen wir deine Erlaubnis, Kontaktinformationen an deinen Identitätsserver zu senden. + Du verwendest derzeit keinen Identitäts-Server. Um Team-Mitglieder einzuladen und für sie auffindbar zu sein, konfiguriere zunächst einen. + Ich habe bereits ein Konto + Sichere Kommunikation. + Besitze deine Unterhaltungen. + Um bestehende Kontakte ermitteln zu können, musst du Kontaktinformationen (E-Mail-Adressen und Telefonnummern) an deinen Identitäts-Server übermitteln. Wir verschlüsseln deine Daten vor der Übermittlung, um den Datenschutz gewährleisten zu können. + Deine Kontakte sind privat. Um unter deinen Kontakten Matrix-Nutzer finden zu können, benötigen wir deine Erlaubnis, Kontaktinformationen an deinen Identitäts-Server zu übermitteln. Dieser Server stellt keine Richtlinie bereit. - Deine Identitätsserver-Richtlinie - Deine Heimserver Richtlinie + Richtlinie deines Identitäts-Servers + Richtlinie deines Heim-Servers ${app_name} Richtlinie Abstimmung erstellen Kontakte öffnen @@ -2340,10 +2340,10 @@ Umfrage bearbeiten Keine Stimmen abgegeben Konto erstellen - Nachrichtenaustausch für dein Team. + Kommunikation für dein Team. Ende-zu-Ende-verschlüsselt und ohne Telefonnummer nutzbar. Keine Werbung oder Datenerfassung. - Wähle wo deine Gespräche liegen, für Kontrolle und Unabhängigkeit. Verbunden mit Matrix. - Sichere und unabhängige Kommunikation, die für die gleiche Vertraulichkeit sorgt, wie ein Gespräch von Angesicht zu Angesicht in deinem eigenen Zuhause. + Wähle, wo deine Unterhaltungen gespeichert werden, um Kontrolle und Unabhängigkeit zu erhalten. Verbunden via Matrix. + Sichere und unabhängige Kommunikation, die für eine Vertraulichkeit sorgt, wie ein Gespräch von Angesicht zu Angesicht in deinen eigenen vier Wänden. Standort Die Verschlüsselung ist fehlerhaft konfiguriert Bitte kontaktiere einen Admin, um die Verschlüsselung zurückzusetzen. @@ -2363,10 +2363,10 @@ Communities Teams Wir helfen dir, in Verbindung zu kommen - Mit wem wirst du am meisten chatten\? + Mit wem wirst du am meisten schreiben\? Link zu Thread kopieren Threads anzeigen - Nachrichtenblasen anzeigen + Nachrichtenblasen Laden der Karte fehlgeschlagen Karte Hinweis: App wird neugestartet @@ -2401,7 +2401,7 @@ Beenden Live-Standort aktiviert Standort teilen - Standort teilen + Diesen Standort teilen Meinen Standort teilen Meinen Standort teilen Live-Standort teilen @@ -2409,19 +2409,19 @@ Threads nähern sich der Beta 🎉 Deaktivieren BETA - Feedback geben + Rückmeldung geben BETA - Threads Beta + Threads-Beta Threads Beta Bildschirm teilen - Ausprobieren + Probiere es aus Live bis %1$s Wähle Deine Benachrichtigungsmethode Vorläufige Implementierung: Standorte bleiben im Nachrichtenverlauf von Räumen erhalten Profil-Tag: h Standortfreigabe aktivieren - Bitte beachten: Dies ist eine Testfunktion mit einer vorübergehenden Implementierung. Das bedeutet, dass Du Deinen Standortverlauf nicht löschen kannst und dass fortgeschrittene Nutzer Deinen Standortverlauf auch dann noch sehen können, wenn Du Deinen Live-Standort nicht mehr mit diesem Raum teilst. + Bitte beachte: Dies ist eine experimentelle Funktion, die eine temporäre Implementierung nutzt. Das bedeutet, dass du deinen Standortverlauf nicht löschen kannst und erfahrene Nutzer ihn sehen können, selbst wenn du deinen Live-Standort nicht mehr mit diesem Raum teilst. Live-Standortfreigabe Aktuelles Gateway: %s Gateway @@ -2464,7 +2464,7 @@ %1$d Minuten %2$d Sekunden %1$s, %2$s, %3$s Die neuesten Profilinformationen (Avatar und Anzeigename) für alle Nachrichten anzeigen. - Aktuelle Benutzerinformationen anzeigen + Aktuelle Profilinformationen Sieht gut aus! einen Anzeigenamen wählen Zurück zum Home-Screen @@ -2480,11 +2480,11 @@ Präsenz Animierte Bilder in der Zeitleiste abspielen, sobald sie sichtbar sind Animierte Bilder automatisch abspielen - Das Endpunkt-Token konnte nicht auf dem Heimserver registriert werden: + Das Endpunkt-Token konnte nicht auf dem Heim-Server registriert werden: \n%1$s - Endpunkt erfolgreich beim Heimserver registriert. + Endpunkt erfolgreich beim Heim-Server registriert. Endpunkt-Registrierung - Dein Heimserver unterstützt derzeit keine Threads, daher kann diese Funktion evtl. nicht richtig funktionieren. Einige Nachrichten mit Threads sind möglicherweise nicht zuverlässig verfügbar. %sMöchtest Du Threads trotzdem aktivieren\? + Dein Heim-Server unterstützt derzeit keine Threads, daher könnte diese Funktion evtl. nicht richtig funktionieren. Einige Nachrichten mit Threads sind möglicherweise nicht zuverlässig verfügbar. %sMöchtest Du Threads trotzdem aktivieren\? Threads helfen dabei, Unterhaltungen beim Thema zu halten und leichter zu verfolgen. %sDie Aktivierung von Threads aktualisiert die App. Dies kann bei einigen Konten länger dauern. Wir nähern uns der Veröffentlichung einer öffentlichen Beta für Threads. \n @@ -2506,7 +2506,7 @@ Beschäftigt Die biometrische Authentifizierung konnte nicht aktiviert werden. Die biometrische Authentifizierung wurde deaktiviert, weil kürzlich eine neue biometrische Authentifizierungsmethode hinzugefügt wurde. Du kannst sie in den Einstellungen wieder aktivieren. - Der Heimserver akzeptiert keine Benutzernamen, die nur aus Ziffern bestehen. + Der Heim-Server akzeptiert keine Benutzernamen, die nur aus Ziffern bestehen. teilten ihren Live-Standort Schritt überspringen Speichern und fortfahren @@ -2521,13 +2521,13 @@ Profil personalisieren ${app_name} ist auch für den Arbeitsplatz geeignet. Die sichersten Organisationen der Welt vertrauen darauf. Threads sind noch in Arbeit, und es stehen neue, aufregende Funktionen an, wie z. B. verbesserte Benachrichtigungen. Wir würden uns sehr über Dein Feedback freuen! - Nachrichten in diesem Chat werden Ende-zu-Ende-verschlüsselt. + Nachrichten in dieser Unterhaltung werden Ende-zu-Ende-verschlüsselt. Bist du ein Mensch\? Bitte lies dir %ss Bedingungen und Richtlinien durch Server-Richtlinien Folge den Anweisungen, die an %s gesendet wurden E-Mail bestätigen - Ergebnisse sind nach Beenden der Abstimmung sichtbar + Ergebnisse werden nach Abschluss der Abstimmung sichtbar sein Prüfe deine E-Mails. Passwort zurücksetzen Gib mindestens 8 Zeichen ein. @@ -2550,12 +2550,12 @@ %d Nachricht gelöscht %d Nachrichten gelöscht - Keine Element Call-Berechtigungsabfragen - Bestätige automatisch Element Call-Widgets und erlaube Kamera- und Mikrofonzugriff + Keine Element-Call-Berechtigungsabfragen + Bestätige automatisch Element-Call-Widgets und erlaube Kamera- und Mikrofonzugriff Los ändern oder - Das Zuhause deiner Gespräche + Der Ort, an dem deine Gespräche stattfinden Das zukünftige Zuhause für deine Gespräche Systemstandard nutzen Automatisch festlegen @@ -2565,9 +2565,9 @@ E-Mail nicht bestätigt, prüfe deinen Posteingang Willkommen zurück! Passwort vergessen - Benutzername / E-Mail / Telefon + Nutzername / E-Mail-Adresse / Telefonnummer Erstelle dein Konto - Serveradresse + Server-URL Wie lautet die Adresse deines Servers\? Das wird eine Art Zuhause für deine Daten Wie lautet die Adresse deines Servers\? Muss 8 oder mehr Zeichen umfassen @@ -2585,7 +2585,7 @@ Raum erstellen Ungelesene Personen - Schreibe deine erste Nachricht, um %s zur Konversation einzuladen + Schreibe deine erste Nachricht, um %s zur Unterhaltung einzuladen Alle Sitzungen anzeigen (V2, in Arbeit) Für bestmögliche Sicherheit verifiziere deine Sitzungen und melde dich von allen ab, die du nicht erkennst oder nutzt. Andere Sitzungen @@ -2595,7 +2595,7 @@ Favoriten Alle Karte laden nicht möglich -\nDieser Heimserver könnte für die Kartendarstellung nicht konfiguriert sein. +\nDieser Heim-Server könnte für die Kartendarstellung nicht konfiguriert sein. Einstellungen öffnen Dieser QR-Code ist fehlerhaft. Bitte versuche es mit einer anderen Methode. Du wirst deinen verschlüsselten Nachrichtenverlauf nicht abrufen können. Um neu zu beginnen, setze deine Sicherung und Verifizierungsschlüssel zurück. @@ -2619,24 +2619,94 @@ Entschuldigung, dieser Raum wurde nicht gefunden. \nBitte versuche es später erneut.%s Einladungen - Nicht verifiziert · Letzte Aktivität %1$s + Nicht verifiziert · Neueste Aktivität %1$s Nicht verifizierte Sitzung - Nicht verifizierte Sitzung + Nicht verifizierte Sitzungen Verbessere deine Kontosicherheit, indem du diese Empfehlungen beherzigst. Sicherheitsempfehlungen Inaktiv seit %1$d+ Tag (%2$s) Inaktiv seit %1$d+ Tagen (%2$s) - Verifiziert · Letzte Aktivität %1$s + Verifiziert · Neueste Aktivität %1$s Verifizierte Sitzung Unbekannter Gerätetyp Nichts Neues. - Spaces sind eine neue Art, Räume und Personen zu organisieren. Erstelle einen Space, um zu beginnen. + Spaces sind eine neue Möglichkeit, Räume und Personen zu gruppieren. Erstelle einen Space, um zu beginnen. Noch keine Spaces. Hier werden deine ungelesenen Nachrichten erscheinen, wenn du welche hast. Es gibt nichts Neues. Alle Unterhaltungen Space wechseln Unterhaltung beginnen - + Filter + Filtern + Subspaces von %s schließen + Subspaces von %s erweitern + Andere können dich als %s finden + Erstelle Unterhaltungen mit der ersten Nachricht + Verzögerte Direktnachrichten + Historie anzeigen + Probiere es aus + Tippe oben rechts, um eine Rückmeldung zu senden. + Rückmeldung geben + Greife auf deine Spaces (unten rechts) schneller und einfacher denn je zu. + Auf Spaces zugreifen + Um dein ${app_name} zu vereinfachen, sind Tabs nun optional. Verwalte sie mit dem Menü oben rechts. + Willkommen in einer neuen Übersicht! + Die Komplettlösung für sichere Kommunikation unter Freunden, in Gruppen oder in Organisationen. Erstelle eine Unterhaltung oder trete einem bestehenden Raum bei, um loszulegen. + Willkommen bei ${app_name}, +\n%s. + Spaces sind eine neue Möglichkeit, Räume und Personen zu gruppieren. Füge einen bestehenden Raum hinzu oder erstelle einen neuen mit der Schaltfläche unten rechts. + %s +\nsieht ein bisschen leer aus. + IP-Adresse + Sitzungsname + Anwendung, Gerät und Aktivitätsinformationen. + Sitzungsdetails + Filter zurücksetzen + Keine inaktiven Sitzungen gefunden. + Keine nicht verifizierten Sitzungen gefunden. + Keine verifizierten Sitzungen gefunden. + + Erwäge, dich aus alten (ein Tag oder mehr), nicht mehr verwendeten Sitzungen abzumelden. + Erwäge, dich aus alten (%1$d Tage oder mehr), nicht mehr verwendeten Sitzungen abzumelden. + + Inaktiv + Für besonders sichere Kommunikation verifiziere deine Sitzungen oder melde dich von ihnen ab, falls du sie nicht mehr identifizieren kannst. + Nicht verifiziert + Verifiziert + + Inaktiv seit %1$d Tag oder länger + Inaktiv seit %1$d Tagen oder länger + + Inaktiv + Nicht bereit für sichere Kommunikation + Nicht verifiziert + Für sichere Kommunikation bereit + Verifiziert + Alle Sitzungen + Gerät + Sitzung + Aktuelle Sitzung + + Erwäge, dich aus alten (ein Tag oder mehr), nicht mehr verwendeten Sitzungen abzumelden. + Erwäge, dich aus alten (%1$d Tage oder mehr), nicht mehr verwendeten Sitzungen abzumelden. + + Inaktive Sitzungen + Nicht verifizierte Sitzungen verifizieren oder abmelden. + Alle anzeigen (%1$d) + Sitzung verifizieren + Diese Sitzung ist für sichere Kommunikation bereit. + Desktop + Hier erscheinen deine neuen Anfragen und Einladungen. + Ein vereinfachtes Element mit optionalen Tabs + Neues Layout aktivieren + Neueste Aktivität + Neueste Aktivität %1$s + Verifiziere deine aktuelle Sitzung für besonders sichere Kommunikation. + Deine aktuelle Sitzung ist für sichere Kommunikation bereit. + Details anzeigen + Für bestmögliche Sicherheit und Zuverlässigkeit verifiziere diese Sitzungen oder melde dich von ihr ab. + Für die bestmögliche Sicherheit, melde dich von allen Sitzungen ab, die du nicht erkennst oder nicht mehr benutzt. + \ No newline at end of file diff --git a/library/ui-strings/src/main/res/values-et/strings.xml b/library/ui-strings/src/main/res/values-et/strings.xml index 9bd1dd23b7..dbdbbdbb00 100644 --- a/library/ui-strings/src/main/res/values-et/strings.xml +++ b/library/ui-strings/src/main/res/values-et/strings.xml @@ -2594,7 +2594,7 @@ Näita kõiki sessioone (V2, WIP) Parima turvalisuse nimel verifitseeri kõik oma sessioonid ning logi välja neist, mida sa enam ei kasuta. Muud sessioonid - Sessionid + Sessioonid Ava kogukondade loend Alusta uut vestlust või loo uus jututuba Inimesed @@ -2659,4 +2659,46 @@ Siin saavad olema sinu tulevased päringud ja kutsed. Ahenda %s alamkogukonnad Näita %s alamkogukondi - + IP-aadress + Viimati kasutusel + Sessiooni nimi + Rakendus, seade ja kasutamise teave. + Sessiooni teave + Eemalda filter + Ei leidu sessioone, mis pole aktiivses kasutuses. + Verifitseerimata sessioone ei leidu. + Verifitseeritud sessioone ei leidu. + + Kaalu vanadest ja kasutamata sessioonidest väljalogimist (vanemad kui %1$d või enam päeva). + Kaalu vanadest ja kasutamata sessioonidest väljalogimist (vanemad kui %1$d või enam päeva). + + Pole pidevas kasutuses + Turvalise sõnumvahetuse nimel verifitseeri kõik oma sessioonid ning logi neist välja, mida sa enam ei kasuta või ei tunne enam ära. + Verifitseerimata + Parima turvalisuse nimel logi välja neist sessioonidest, mida sa enam ei kasuta või ei tunne ära. + Verifitseeritud + Filtreeri + + Pole olnud kasutusel %1$d või enam päeva + Pole olnud kasutusel %1$d või enam päeva + + Pole pidevas kasutuses + Pole valmis turvaliseks sõnumivahetuseks + Verifitseerimata + Valmis turvaliseks sõnumivahetuseks + Verifitseeritud + Kõik sessioonid + Filtreeri + Viimati kasutusel %1$s + Seade + Sessioonid + Praegune sessioon + Parima turvalisuse ja töökindluse nimel verifitseeri see sessioon või logi ta võrgust välja. + Turvalise sõnumivahetuse nimel palun verifitseeri oma praegune sessioon. + See sessioon on valmis turvaliseks sõnumivahetuseks. + Sinu praegune sessioon on valmis turvaliseks sõnumivahetuseks. + Alusta otsevestlust esimese sõnumiga + Võta kasutusele viivitusega otsevestlused + Lihtsustatud Element valikuliste kaartidega + Võta kasutusele rakenduse uus välimus + \ No newline at end of file diff --git a/library/ui-strings/src/main/res/values-fa/strings.xml b/library/ui-strings/src/main/res/values-fa/strings.xml index 400a8121f9..9012bc2ebe 100644 --- a/library/ui-strings/src/main/res/values-fa/strings.xml +++ b/library/ui-strings/src/main/res/values-fa/strings.xml @@ -2700,4 +2700,9 @@ ایجاد پیام خصوصی فقط در نخستین پیام المنتی ساده شده با زبانه‌های انتخابی به کار انداختن چینش جدید + تأیید نشست‌هایتان برای پیام‌رسانی امن بهبود یافته یا خروج از آن‌هایی که تشخیصشان نداده یا دیگر استفاده نمی‌کنید. + + غیرفعّال برای ۱ روز یا بیش‌تر + غیرفعّال برای %1$d روز یا بیش‌تر + \ No newline at end of file diff --git a/library/ui-strings/src/main/res/values-fr/strings.xml b/library/ui-strings/src/main/res/values-fr/strings.xml index 5a19ccf2da..c7100e3a1e 100644 --- a/library/ui-strings/src/main/res/values-fr/strings.xml +++ b/library/ui-strings/src/main/res/values-fr/strings.xml @@ -2668,4 +2668,46 @@ Réduire %s enfants Développer %s enfants Changer d’espace - + Adresse IP + Dernière activité + Nom de la session + Application, appareil et information sur l’activité. + Détails de session + Supprimer les filtres + Aucune session inactive n’a été trouvée. + Aucune session non vérifiée n’a été trouvée. + Aucune session vérifiée n’a été trouvée. + + Pensez à vous déconnecter des anciennes sessions (%1$d jour ou plus) que vous n’utilisez plus. + Pensez à vous déconnecter des anciennes sessions (%1$d jours ou plus) que vous n’utilisez plus. + + Inactif + Vérifiez vos sessions pour améliorer la sécurité de votre messagerie, ou déconnectez celles que vous ne connaissez pas ou n’utilisez plus. + Non vérifié + Pour une meilleure sécurité, déconnectez toutes les sessions que vous ne connaissez pas ou que vous n’utilisez plus. + Vérifié + Filtrer + + Inactif depuis %1$d jour ou plus + Inactif depuis %1$d jours ou plus + + Inactif + Pas prêt pour une messagerie sécurisée + Non vérifié + Prêt pour une messagerie sécurisée + Vérifié + Toutes les sessions + Filtrer + Dernière activité %1$s + Appareil + Session + Cette session + Vérifiez ou déconnectez cette session pour une meilleure sécurité et fiabilité. + Vérifiez votre session pour une sécurité accrue de votre messagerie. + Cette session est prête pour l’envoi de messages sécurisés. + Votre session est prête pour l’envoi de messages sécurisés. + Créer la conversation seulement lors du premier message + Activer les conversations privées différées + Un Element simplifié avec des onglets optionnels + Activer la nouvelle présentation + \ No newline at end of file diff --git a/library/ui-strings/src/main/res/values-hu/strings.xml b/library/ui-strings/src/main/res/values-hu/strings.xml index 3068556fe4..cac0a2eb5d 100644 --- a/library/ui-strings/src/main/res/values-hu/strings.xml +++ b/library/ui-strings/src/main/res/values-hu/strings.xml @@ -2668,4 +2668,46 @@ A Visszaállítási Kulcsot tartsd biztonságos helyen, mint pl. egy jelszókeze %1$d+ napja inaktív (%2$s) Itt láthatók a meghívók és elvégzendő műveletek. - + IP cím + Utolsó tevékenység + Munkamenet neve + Alkalmazás, eszköz és aktivitás információ. + Munkamenet információk + Szűrő törlése + Nincs inaktív munkamenet. + Nincs ellenőrizetlen munkamenet. + Nincs ellenőrzött munkamenet. + + Fontold meg, hogy kijelentkezel a régi munkamenetekből (%1$d napja vagy régebben használtál) amit már nem használsz. + Fontold meg, hogy kijelentkezel a régi munkamenetekből (%1$d napja vagy régebben használtál) amit már nem használsz. + + Inaktív + Erősítse meg a munkameneteit a még biztonságosabb csevegéshez vagy jelentkezzen ki ezekből, ha nem ismeri fel vagy már nem használja őket. + Ellenőrizetlen + A legjobb biztonság érdekében jelentkezz ki minden olyan munkamenetből amit nem ismersz fel vagy régen használtál már. + Hitelesített + Szűrés + + %1$d napja inaktív + %1$d napja inaktív + + Inaktív + Nem áll készen a biztonságos üzenetküldésre + Ellenőrizetlen + Felkészülve a biztonságos üzenetküldésre + Hitelesített + Minden munkamenet + Szűrés + Utolsó aktivitás %1$s + Eszköz + Munkamenet + Jelenlegi munkamenet + A jobb biztonság vagy megbízhatóság érdekében ellenőrizze vagy jelentkezzen ki ebből a munkamenetből. + Az aktuális munkamenet készen áll a biztonságos üzenetküldésre. + Ez a munkamenet beállítva a biztonságos üzenetküldéshez. + Az aktuális munkamenet készen áll a biztonságos üzenetküldésre. + Közvetlen beszélgetés indítása csak az első üzenettel + Késleltetett közvetlen üzenetek engedélyezése + Egyszerűsített Element opcionálisan lapokkal + Új kinézet engedélyezése + \ No newline at end of file diff --git a/library/ui-strings/src/main/res/values-in/strings.xml b/library/ui-strings/src/main/res/values-in/strings.xml index 3b30950bd1..7b103a9131 100644 --- a/library/ui-strings/src/main/res/values-in/strings.xml +++ b/library/ui-strings/src/main/res/values-in/strings.xml @@ -2617,5 +2617,45 @@ Di masa mendatang proses verifikasi ini akan dimutakhirkan. Belum ada space. Tutup %s anak Buka %s anak - Buat Space - + Ubah Space + Alamat IP + Aktivitas terakhir + Nama sesi + Informasi aplikasi, perangkat, dan aktivitas. + Detail sesi + Hapus Saringan + Tidak ditemukan sesi yang tidak aktif. + Tidak ditemukan sesi yang belum diverifikasi. + Tidak ditemukan sesi yang terverifikasi. + + Pertimbangkan untuk mengeluarkan sesi lawas (%1$d hari atau lebih) yang Anda tidak gunakan lagi. + + Tidak aktif + Verifikasi sesi Anda untuk perpesanan aman yang terbaik atau keluarkan sesi yang Anda tidak kenal atau gunakan lagi. + Belum diverifikasi + Untuk keamanan yang terbaik, keluarkan sesi yang Anda tidak kenal atau gunakan lagi. + Terverifikasi + Saring + + Tidak aktif selama %1$d hari atau lebih + + Tidak aktif + Belum siap untuk perpesanan aman + Belum diverifikasi + Siap untuk perpesanan aman + Terverifikasi + Semua sesi + Saring + Aktivitas terakhir %1$s + Perangkat + Sesi + Sesi Saat Ini + Verifikasi atau keluarkan sesi ini untuk keamanan dan keandalan yang terbaik. + Verifikasi sesi Anda saat ini untuk perpesanan aman yang baik. + Sesi ini siap untuk perpesanan aman. + Sesi Anda saat ini siap untuk perpesanan aman. + Buat pesan langsung hanya pada pesan pertama + Aktifkan pesan langsung tangguhan + Sebuah Element yang sederhana dengan fitur tab opsional + Aktifkan tata letak baru + \ No newline at end of file diff --git a/library/ui-strings/src/main/res/values-is/strings.xml b/library/ui-strings/src/main/res/values-is/strings.xml index d25d66bfba..69191e1741 100644 --- a/library/ui-strings/src/main/res/values-is/strings.xml +++ b/library/ui-strings/src/main/res/values-is/strings.xml @@ -1536,7 +1536,7 @@ Yfirfarðu þennan tengil Ef þú frumstillir allt Næstum því búið! Bíð eftir staðfestingu… - Bæta við umræðuefni + Bættu við umræðuefni Sannprófa þessa innskráningu Skrá út úr þessari setu Skilaboð við þennan notanda eru enda-í-enda dulrituð þannig að enginn annar getur lesið þau. @@ -1751,7 +1751,7 @@ Forritarahamur Hreinsa persónuleg gögn Taktu þátt ókeypis ásamt milljónum annarra á stærsta almenningsþjóninum - sleppt þessari spurningu + Sleppa þessari spurningu Örugg skilaboð. Gat ekki tengst við auðkennisþjón Dulritunarlyklarnir þínir eru ekki öryggisafritaðir úr þessari setu. @@ -1990,10 +1990,10 @@ Séð af Sleppa þessu skrefi Vista og halda áfram - Kjörstillingarnar þínar hafa verið vistaðar. + Farðu hvenær sem er í stillingarnar til að breyta notandasniðinu þínu. Nú ertu tilbúin(n)! Hefjumst handa - Þú getur breytt þessu hvenær sem er. + Þú getur breytt þessu hvenær sem er Bættu við auðkennismynd Þú getur breytt þessu síðar Birtingarnafn @@ -2012,4 +2012,206 @@ Prófaðu það Gera óvirkt Upphafleg samstillingarbeiðni - + Velkomin í nýja sýn! + Skoða staðsetningu í rauntíma + Sumar niðurstöður gætu verið faldar þar sem þær eru einkamál, þá þarftu boð til að geta séð þær. + Þú ert eini stjórnandi þessa svæðis. Ef þú yfirgefur það verður enginn annar sem er með stjórn yfir því. + Þú munt ekki geta tekið þátt aftur nema þér verði boðið aftur. + Yfirgefa ekkert + Yfirgefa allt + Efni á þessu svæði + Þetta samnefni er ekki aðgengilegt í augnablikinu. +\nPrófaðu aftur síðar, eða spurðu einhvern stjórnanda hvort þú hafir aðgang. + Fara af spjallrás með uppgefið auðkenni (eða fyrirliggjandi spjallrás ef þetta er núll) + Taka þátt í svæði með uppgefið auðkenni + Gat ekki virkjað auðkenningu með lífkennum. + Annars geturðu sett inn slóð á hvaða auðkennisþjón sem er + Heimaþjónninn þinn (%1$s) stingur upp á að nota %2$s sem auðkenningarþjón fyrir þig + Samþykki notandans hefur ekki verið gefið. + Stilltu fyrst auðkennisþjón. + Þessi aðgerð er ekki möguleg. Heimaþjónninn er úreltur. + Deildu þessum kóða með fólki svo viðkomandi geti skannað hann, bætt þér við og byrjað að spjalla. + Heimaþjónn notandans samþykkir ekki notendanöfn einungis með tölustöfum. + Hindra skjámyndatöku af forritinu + Uppsetning tilkynninga + Mistókst að flytja inn lykla + Næstum því búið! Sýnir hitt tækið gátmerki\? + %s svo fólk viti að um hvað málin snúist. + Sendu fyrstu skilaboðin þín til að bjóða %s að spjalla + Þetta er upphafið á þessu samtali. + Þetta er upphafið á %s. + %s bjó til og stillti spjallrásina. + Dulritunin sem notuð er í þessari spjallrás er ekki studd + Dulritun er rangt stillt + Skilaboð í þessu spjalli verða enda-í-enda dulrituð. + Skilaboð í þessari spjallrás eru enda-í-enda dulrituð. Lærðu meira um þetta og yfirfarðu notendur í notandasniðum þeirra. + Ef þú hættir við núna, geturðu tapað dulrituðum skilaboðum og gögnum ef þú missir aðgang að innskráningum þínum. +\n +\nÞú getur víka sett upp örugga afritun og sýslað með dulritunarlyklana þína í stillingunum. + Gef út útbúna auðkennislykla + Set upp endurheimtu. + Ekki nota lykilorðið fyrir aðganginn þinn. + Lykill skilaboða + Þetta var ekki ég + Beiðnir um lykla + ${app_name} fyrir Android + Næstum því búið! Sýnir %s gátmerki\? + Mistókst að ná í setur + + %d virk seta + %d virkar setur + + Engar dulkóðunarupplýsingar tiltækar + Þú hefur ekki heimild til að virkja dulritun á þessari spjallrás. + Kóði var sendur til: %s + Staðfestu símanúmerið þitt + Staðfestingarkóði + Viltu hýsa þinn eigin netþjón\? + Hvert er vistfang netþjónsins þíns\? + Hvert er vistfang netþjónsins þíns\? Þetta er staður sem geymir öll gögnin þín + Veldu netþjón fyrir þig + Þar sem samtölin þín eru + Þar sem samtölin þín verða + Verður að vera að minnsta kosti 8 stafir + Aðrir geta fundið þig %s + %s aðgangur þinn hefur verið útbúinn + Fara á forsíðuna + Persónugera notandasnið + Ætlarðu að ganga til liðs við fyrirliggjandi netþjón\? + Ekki ennþá viss\? %s + Við hverja muntu helst spjalla\? + ${app_name} er líka frábært fyrir vinnustaðinn. Heimsins öruggustu samtök treysta því. + Enda-í-enda dulritað og ekkert símanúmer nauðsynlegt. Engar auglýsingar eða gagnasöfnun. + Veldu hvar á að geyma samtölin þín, sem gefur þér stjórnina og algert sjálfstæði. Tengt í gegnum Matrix. + Örugg og óháð samskipti sem gefa þér færi á að ræða málin í friði rétt eins og þetta sé maður á mann í heimahúsi. + Skilaboð fyrir teymið þitt. + Skrifaðu stikkorð til að finna viðbrögð. + Opna svæðalista + Ekki er hægt að forskoða þessa spjallrás. Viltu taka þátt í henni\? + Þessi spjallrás er ekki aðgengileg í augnablikinu. +\nPrófaðu aftur síðar, eða spurðu einhvern stjórnanda hvort þú hafir aðgang. + Rangt sniðinn atburður, get ekki birt hann + Atburði eytt af notanda + Nýjir lyklar fyrir örugg skilaboð + Hjálpaðu okkur við að greina vandamál og bæta ${app_name} með því að deila nafnlausum gögnum varðandi notkun. Til að skilja hvernig fólk notar saman mörg tæki, munum við útbúa tilviljanakennt auðkenni, sem tækin þín deila. +\n +\nÞú getur lesið alla skilmála okkar %s. + Spila hreyfimyndir sjálfvirkt + Mistókst að skrá endapunkt á heimaþjóninn: +\n%1$s + Það tókst að skrá endapunkt á heimaþjóninn. + Skráning endapunkts + + %1$s og %2$d í viðbót + %1$s og %2$d í viðbót + + Skoða og uppfæra hlutverk sem krafist er til að breyta ýmsum þáttum svæðisins. + Skoða og uppfæra hlutverk sem krafist er til að breyta ýmsum þáttum spjallrásarinnar. + Tölvupóstfang ekki staðfest, athugaðu pósthólfið þitt + Ekkert nýtt. + Engin svæði ennþá. + Einfaldað Element með valkvæðum flipum + Virkja nýja framsetningu + Kjörstillingar framsetningar + Skipta um svæði + Allar spjallrásir + Prófaðu það + Gefðu umsögn + IP-vistfang + Síðasta virkni + Nafn á setu + Nánar um setuna + Hreinsa síu + Engar óvirkar setur fundust. + Engar óstaðfestar setur fundust. + Engar staðfestar setur fundust. + Óvirkt + Óstaðfest + Staðfest + Sía + Óvirkt + Óstaðfest + Staðfest + Allar setur + Sía + Síðasta virkni %1$s + Tæki + Seta + Núverandi seta + Óstaðfestar setur + Skoða allt (%1$d) + Skoða nánar + Sannprófa setu + Óstaðfest seta + Staðfest seta + Óþekkt tegund tækis + Skjáborð + Vefur + Farsími + Virkja deilingu staðsetninga + Netgátt + Aðferð + Samstilling í bakgrunni + Google þjónustur + Deila staðsetningu + %1$s hætti + Niðurstöður birtast einungis eftir að könnuninni hefur lokið + Engar niðurstöður fundust + Opna stillingar + Afritaðu hann á einkageymslu sem þú átt í tölvuskýi + Vistaðu hann á USB-lykil eða öryggisdisk + Prentaðu hann og geymdu á öruggum stað + Settu inn öryggisfrasa sem aðeins þú þekkir, þetta er notað til að verja leyndarmálin sem þú geymir á netþjóninum þínum. + Settu inn %s til að halda áfram. + Tókst ekki að sannreyna þetta tæki + Aðrar setur + Setur + Notandanafn / tölvupóstfang / símanúmer + Ertu mannvera\? + Endurstilling lykilorðs + Gleymt lykilorð + Senda tölvupóst aftur + Skoðaðu tölvupóstinn þinn + Endursenda kóða + Skrá út öll tæki + Endurstilla lykilorð + Veldu nýtt lykilorð + Nýtt lykilorð + Athugaðu tölvupóstinn þinn. + Símanúmer + Settu inn símanúmerið þitt + Tölvupóstur + Settu inn tölvupóstfangið þitt + Hafðu samband + Slóð netþjóns + Velkomin(n) aftur! + Breyta + Eða + Búa til aðganginn þinn + Við munum hjálpa þér að tengjast + Fara + Þessa spjallrás er ekki hægt að forskoða + Uppfæri gögnin þín… + Fólk + Eftirlæti + Ólesið + Allt + Nota sjálfgefnar kerfisstillingar + Velja handvirkt + Setja sjálfvirkt + Veldu leturstærð + %1$s og %2$s + Boðsgestir + A-Ö + Virkni + Raða eftir + Birta nýlegt + Sýna síur + Næsta + sek + mín + klst + Kanna spjallrásir + Búa til spjallrás + Hefja spjall + \ No newline at end of file diff --git a/library/ui-strings/src/main/res/values-it/strings.xml b/library/ui-strings/src/main/res/values-it/strings.xml index b7b0fe91af..b2f9fa9238 100644 --- a/library/ui-strings/src/main/res/values-it/strings.xml +++ b/library/ui-strings/src/main/res/values-it/strings.xml @@ -2659,4 +2659,46 @@ Riduci contenuto di %s Espandi contenuto di %s Cambia spazio - + Indirizzo IP + Ultima attività + Nome sessione + Applicazione, dispositivo e informazioni di attività. + Dettagli sessione + Annulla filtro + Nessuna sessione inattiva trovata. + Nessuna sessione non verificata trovata. + Nessuna sessione verificata trovata. + + Considera di disconnettere le sessioni vecchie (%1$d giorno o più) che non usi più. + Considera di disconnettere le sessioni vecchie (%1$d giorni o più) che non usi più. + + Inattivo + Verifica le tue sessioni per avere conversazioni più sicure o disconnetti quelle che non riconosci o che non usi più. + Non verificato + Per una maggiore sicurezza, disconnetti tutte le sessioni che non riconosci o che non usi più. + Verificato + Filtra + + Inattivo da %1$d giorno o più + Inattivo da %1$d giorni o più + + Inattivo + Non pronto per messaggi sicuri + Non verificato + Pronto per messaggi sicuri + Verificato + Tutte le sessioni + Filtra + Ultima attività %1$s + Dispositivo + Sessione + Sessione attuale + Verifica o disconnetti questa sessione per una migliore sicurezza e affidabilità. + Verifica la tua sessione attuale per messaggi più sicuri. + Questa sessione è pronta per i messaggi sicuri. + La tua sessione attuale è pronta per i messaggi sicuri. + Attiva messaggi diretti differiti + Crea messaggio diretto solo al primo messaggio + Un Element semplificato con schede opzionali + Attiva nuova disposizione + \ No newline at end of file diff --git a/library/ui-strings/src/main/res/values-lt/strings.xml b/library/ui-strings/src/main/res/values-lt/strings.xml index adfc70c36e..aeba3d53e6 100644 --- a/library/ui-strings/src/main/res/values-lt/strings.xml +++ b/library/ui-strings/src/main/res/values-lt/strings.xml @@ -1406,4 +1406,781 @@ Keisti kambario pavadinimą Keisti istorijos matomumą %s atnaujino čia. - + Atlikite captcha iššūkį + Pasirinkti pasirinktinį namų serverį + Pasirinkti Element Matrix Services + Pasirinkti matrix.org + Jūsų paskyra dar nesukurta. Sustabdyti registracijos procesą\? + Perspėjimas + Šis vartotojo vardas yra užimtas + Toliau + Slaptažodis + Naudotojo vardas + Naudotojo vardas arba el. pašto adresas + Toliau + Siųsti vėl + Įvesti kodą + Ką tik išsiuntėme kodą į %1$s. Įveskite jį toliau, kad patvirtintumėte, kad tai jūs. + Nustatyti telefono numerį + Neatrodo kaip tinkamas el. pašto adresas + Toliau + Patvirtinkite telefono numerį + El. pašto adresas (nebūtinas) + El. pašto adresas + Toliau + Telefono numeris (nebūtinas) + Jūsų slaptažodis buvo nustatytas iš naujo. + Sėkmė! + Patvirtinau savo el. pašto adresą + Bakstelėkite nuorodą ir patvirtinkite naująjį slaptažodį. Paspaudę joje esančią nuorodą, spustelėkite žemiau. + Patvirtinimo el. laiškas buvo išsiųstas į %1$s. + Patikrinkite savo pašto dėžutę + Šis el. paštas nėra susietas su jokia paskyra + Tęsti + Pakeitus slaptažodį bus iš naujo nustatyti visų jūsų sesijų visapusiško šifravimo raktai, todėl užšifruotų pokalbių istorijos nebus galima perskaityti. Prieš iš naujo nustatydami slaptažodį, sukurkite raktų atsarginę kopiją arba eksportuokite kambario raktus iš kitos sesijos. + Perspėjimas! + Naujas slaptažodis + El. paštas + Toliau + Į jūsų pašto dėžutę bus išsiųstas patvirtinimo el. laiškas, naujo slaptažodžio nustatymo patvirtinimui. + Iš naujo nustatyti slaptažodį %1$s + Šis el. paštas nesusijęs su jokia paskyra. + Programa negali sukurti paskyros šiame namų serveryje. +\n +\nAr norite užsiregistruoti naudodami žiniatinklio klientą\? + Atsiprašome, šis serveris nepriima naujų paskyrų. + Programa negali prisijungti prie šio namų serverio. Namų serveris palaiko šiuos prisijungimo tipus: %1$s. +\n +\nAr norite prisijungti naudodami žiniatinklio klientą\? + Įkeliant puslapį įvyko klaida: %1$s (%2$d) + Įveskite norimo naudoti serverio adresą + Įveskite adresą Modular Element arba serverio kurį norite naudoti + Aukščiausios kokybės talpinimas organizacijoms + Adresas + Element Matrix Services Adresas + Išvalyti istoriją + Tęsti su vienkartiniu prisijungimu + Prisijungti + Registruotis + Prisijungti prie %1$s + Prisijungti prie pasirinktinio serverio + Prisijungti prie Element Matrix Services + Prisijungti prie %1$s + Tęsti + vienkartinis prisijungimas + Prisijungti su %s + Užsiregistruoti su %s + Tęsti su %s + Arba + Pasirinktiniai & išplėstiniai nustatymai + Kitas + Sužinoti daugiau + Aukščiausios kokybės talpinimas organizacijoms + Nemokamai prisijunkite prie milijonų žmonių didžiausiame viešajame serveryje + Kaip ir el. paštas, paskyros turi vienus namus, nors galite bendrauti su bet kuo + Pasirinkti serverį + Aš jau turiu paskyrą + Sukurti paskyrą + Pradėkite + Išplėskite ir pritaikykite savo patirtį + Saugokite pokalbių privatumą naudodami šifravimą + Bendraukite su žmonėmis tiesiogiai arba grupėse + Tai jūsų pokalbis. Priklauso jums. + Praleisti šį žingsnį + Išsaugoti ir tęsti + Bet kada eikite į nustatymus norint atnaujinti savo profilį + Atrodo gerai! + Pirmyn + Laikas prie vardo pridėti veidą + Pridėti profilio nuotrauką + Jūs tai galite pakeisti vėliau + Rodomas vardas + Pasirinkite rodomą vardą + Vartotojo vardas / el. paštas / telefonas + Ar esate žmogus\? + Vykdykite nurodymus, išsiųstus adresu %s + Pamiršau slaptažodį + Slaptažodžio nustatymas iš naujo + Iš naujo siųsti el. laišką + Negavote el. laiško\? + Vykdykite nurodymus, išsiųstus adresu %s + Patvirtinkite savo el. pašto adresą + Iš naujo siųsti kodą + Kodas buvo išsiųstas į %s + Patvirtinkite savo telefono numerį + Atjungti visus prietaisus + Iš naujo nustatyti slaptažodį + Draugai ir šeima + Padėsime jums užmegzti ryšį + Su kuo daugiausiai bendrausite\? + ${app_name} taip pat puikiai tinka darbo vietoje. Ja pasitiki saugiausios pasaulio organizacijos. + Visapusiškai užšifruota ir nereikia telefono numerio. Jokių reklamų ar duomenų rinkimo. + Pasirinkite, kur bus saugomi jūsų pokalbiai, taip suteikdami jums galimybę kontroliuoti ir būti nepriklausomiems. Sujungta naudojant Matrix. + Saugus ir nepriklausomas bendravimas, suteikiantis tiek pat privatumo, kiek ir pokalbis akis į akį jūsų namuose. + Bandykite dar kartą, kai sutiksite su savo namų serverio nuostatomis ir sąlygomis. + Išsamūs žurnalai padės kūrėjams, nes siųsdami piktą purtymą pateiksite daugiau žurnalų. Net ir įjungus šią funkciją, programa nerenka žinučių turinio ar kitų privačių duomenų. + Įjungti išsamius žurnalus. + Sutikite su tapatybės serverio (%s) paslaugų teikimo sąlygomis, kad galėtumėte būti atrandami pagal el. pašto adresą arba telefono numerį. + Šiuo metu bendrinate el. pašto adresus arba telefono numerius tapatybės serveryje %1$s. Norėdami nustoti juos bendrinti, turėsite iš naujo prisijungti prie %2$s. + Tekstinė žinutė buvo išsiųsta adresu %s. Įveskite joje esantį patvirtinimo kodą. + Pasirinktame tapatybės serveryje nėra jokių paslaugų teikimo sąlygų. Tęskite tik tuo atveju, jei pasitikite paslaugos savininku + Tapatybės serveris neturi paslaugų teikimo sąlygų + Įveskite tapatybės serverio url + Nepavyko prisijungti prie tapatybės serverio + Įveskite tapatybės serverio URL + Ar sutinkate siųsti šią informaciją\? + Jei norite atrasti esamus kontaktus, į tapatybės serverį reikia nusiųsti kontaktinę informaciją (el. paštus ir telefono numerius). Prieš išsiunčiant duomenis, siekiant užtikrinti privatumą, juos sutriname. + Pateikti atsiliepimą + Pateikti atsiliepimą + Atsiliepimo nepavyko išsiųsti (%s) + Ačiū, jūsų atsiliepimas sėkmingai išsiųstas + Jei turite papildomų klausimų, galite susisiekti su manimi + Atsiliepimas + BETA + Pasiūlymo nepavyko išsiųsti (%s) + Ačiū, pasiūlymas sėkmingai išsiųstas + Aprašykite savo pasiūlymą čia + Žemiau parašykite savo pasiūlymą. + Pateikti pasiūlymą + Versijos + Gaukite pagalbos naudojant ${app_name} + Pagalba ir parama + Pagalba + Teisės aktai + Pagalba & Apie + Balsas & Vaizdas + Profilio žyma: + Formatas: + Url: + session_name: + app_display_name: + push_key: + app_id: + Jūs jau žiūrite šią temą! + Jūs jau žiūrite šį kambarį! + Importuoti šifravimo raktus iš failo \"%1$s\". + Įvyko klaida gaunant raktų atsarginės kopijos duomenis + Įvyko klaida gaunant pasitikėjimo informaciją + Kambarys sukurtas, tačiau kai kurie kvietimai nebuvo išsiųsti dėl šios priežasties: +\n +\n%s + Kiekvienas galės prisijungti prie šio kambario + Viešas + Tema + Kambario tema (nebūtina) + Pavadinimas + Kambario pavadinimas + Eiti + SUKURTI + Tiesioginės žinutės + Kambariai + Šio kambario negalima peržiūrėti. Ar norite prie jo prisijungti\? + Šiuo metu į šį kambarį patekti negalima. +\nPabandykite vėliau arba paprašykite kambario admino patikrinti, ar turite prieigą. + Šio kambario negalima peržiūrėti + Atnaujinami jūsų duomenys… + Prašome palaukti… + Keisti tinklą + Tinklo nėra. Patikrinkite interneto ryšį. + Sukurti naują kambarį + Neteisingai suformuotas įvykis, negalima rodyti + Įvykis moderuotas kambario admino + Naudotojo ištrintas įvykis + Žinutė pašalinta + Reakcijos + Peržiūrėti reakcijas + Pridėti reakciją + Reakcijos + Žmonės + Parankiniai + Neperskaityti + Visi + Čia bus rodomi jūsų kambariai. Bakstelėkite \"+\" apačioje dešinėje, kad rastumėte esamus kambarius arba pradėtumėte kurti savo. + Kambariai + Jūsų tiesioginių žinučių pokalbiai bus rodomi čia. Bakstelėkite \"+\" apačioje dešinėje, kad pradėtumėte keletą. + Pokalbiai + Neturite daugiau neperskaitytų žinučių + Jūs viską pasivijote! + Pakvietė %s + Išsiuntė jums kvietimą + Pakartoti + Peržiūrėti kambaryje + Atsakyti temoje + Atsakyti + Redaguoti + Atrodo, kad bandote prisijungti prie kito namų serverio. Ar norite atsijungti\? + Jūs nenaudojate jokio tapatybės serverio + Nežinoma klaida + %s nori patvirtinti jūsų sesiją + Patvirtinimo užklausa + Supratau + Patvirtinta! + Parašas + Algoritmas + Versija + + Kuriama atsarginė %d rakto kopija… + Kuriama atsarginė %d raktų kopija… + Kuriama atsarginė %d raktų kopija… + + Visų raktų atsarginė kopija sukurta + Nustatyti saugią atsarginę kopiją + Kuriama raktų atsarginė kopija. Tai gali užtrukti kelias minutes… + Valdyti raktų atsarginėje kopijoje + Nauji saugių žinučių raktai + Naudoti raktų atsarginę kopiją + Niekada nepraraskite užšifruotų žinučių + Apsisaugokite nuo užšifruotų žinučių ir duomenų praradimo + Saugi atsarginė kopija + Išjungta + Kad ištaisyti Matrix programėlių valdymą + Įj./Išj. markdown + Prašymas dalytis raktais + Atsiprašome, šis kambarys nerastas. +\nPrašome bandyti vėliau.%s + Jei norite tęsti, turite sutikti su šios paslaugos sąlygomis. + Nėra aktyvių valdiklių + Užklausoje trūksta user_id. + Užklausoje trūksta room_id. + Galios lygis turi būti teigiamas sveikasis skaičius. + Nepavyko išsiųsti užklausos. + Nepavyko sukurti valdiklio. + Skaityti DRM apsaugotą mediją + Šis valdiklis nori naudoti šiuos išteklius: + Palikti dabartinę konferenciją ir pereiti į kitą\? + Atsiprašome, bandant prisijungti prie konferencijos įvyko klaida + Atsiprašome, konferenciniai skambučiai su Jitsi nepalaikomi senuose įrenginiuose (įrenginiuose su žemesne nei 6.0 Android OS) + Valdiklio ID + Jūsų tema + Jūsų naudotojo ID + Jūsų avataro URL + Jūsų rodomas vardas + Atšaukti prieigą man + Atidaryti naršyklėje + Iš naujo įkelti valdiklį + Nepavyko įkelti valdiklio. +\n%s + Naudojant jį duomenys gali būti bendrinami su %s: + Naudojant jį gali būti nustatyti slapukai ir bendrinami duomenys su %s: + Šį valdiklį pridėjo: + Įkelti valdiklį + Valdiklis + Aktyvūs valdikliai + PERŽIŪRĖTI + + %d aktyvus valdiklis + %d aktyvūs valdikliai + %d aktyvių valdiklių + + Ar tikrai norite ištrinti valdiklį iš šio kambario\? + Milžiniškas + Didžiausias + Didesnis + Didelis + Vidutinis + Mažas + Mažytis + Šrifto dydis + Naudoti sistemos numatytąjį + Pasirinkti rankiniu būdu + Nustatyti automatiškai + Pasirinkti šrifto dydį + %1$s: %2$s %3$s + %1$s: %2$s + ** Nepavyko išsiųsti - atidarykite kambarį + + Naujas pakvietimas + Naujos žinutės + Kambarys + Naujas įvykis + %1$s ir %2$s + %1$s esantys %2$s ir %3$s + %1$s esantys %2$s + + %d pranešimas + %d pranešimai + %d pranešimų + + + %1$s: %2$d žinutė + %1$s: %2$d žinutės + %1$s: %2$d žinučių + + + %d pakvietimas + %d pakvietimai + %d pakvietimų + + + %d kambarys + %d kambariai + %d kambarių + + + %d neperskaityta pranešta žinutė + %d neperskaitytos praneštos žinutės + %d neperskaitytų praneštų žinučių + + Šis serveris jau yra sąraše + Negalima rasti šio serverio arba jo kambarių sąrašo + Įveskite naujo serverio, kurį norite patyrinėti, pavadinimą. + Pridėti naują serverį + Jūsų serveris + Visi vietiniai %s kambariai + Visi kambariai %s serveryje + Serverio pavadinimas + Pasirinkti kambarių katalogą + Jei jie nesutampa, gali kilti pavojus jūsų komunikacijos saugumui. + Patvirtinti + nežinomas ip + Patvirtinta + Nepatvirtinta + + %1$d/%2$d raktas importuotas sėkmingai. + %1$d/%2$d raktai importuoti sėkmingai. + %1$d/%2$d raktų importuota sėkmingai. + + Niekada nesiųsti užšifruotų žinučių į nepatvirtintas sesijas iš šios sesijos. + Šifruoti tik į patvirtintas sesijas + Importuoti + Importuoti raktus iš vietinio failo + Importuoti kambarių raktus + Importuoti šifruotų kambarių raktus + Užšifruotų žinučių atkūrimas + Raktai sėkmingai eksportuoti + Sukurkite slaptafrazę eksportuojamiems raktams užšifruoti. Norėdami importuoti raktus, turėsite įvesti tą pačią slaptafrazę. + Eksportuoti + Eksportuoti raktus į vietinį failą + Eksportuoti kambarių raktus + Eksportuoti šifruotų kambarių raktus + Sesijos raktas + Viešas pavadinimas + Iššifravimo klaida + Nuspręskite, kas gali rasti ir prisijungti prie šio kambario. + Nepavyko gauti dabartinio kambarių katalogo matomumo (%1$s). + Paskelbti šį kambarį viešai %1$s kambarių kataloge\? + Panaikinti šio adreso skelbimą + Paskelbti šį adresą + Pridėti vietinį adresą + Šis kambarys neturi vietinių adresų + Nustatykite šio kambario adresus, kad naudotojai galėtų rasti šį kambarį per jūsų namų serverį (%1$s) + Vietiniai adresai + Naujas skelbiamas adresas (pvz., #pseudonimas:serveris) + Kitų paskelbtų adresų dar nėra. + Kitų paskelbtų adresų dar nėra, pridėkite juos žemiau. + Ištrinti adresą \"%1$s\"\? + Panaikinti adreso \"%1$s\" skelbimą\? + Paskelbti + Paskelbti naują adresą rankiniu būdu + Kiti paskelbti adresai: + Tai yra pagrindinis adresas + Paskelbtus adresus gali naudoti bet kas bet kuriame serveryje, prisijungimui prie jūsų kambario. Norint paskelbti adresą, pirmiausia nustatykite jį kaip vietinį adresą. + Paskelbti adresai + Žetono registracija + Pridėti paskyrą + [%1$s] +\nŠi klaida yra nekontroliuojama ${app_name}. Telefone nėra Google paskyros. Atidarykite paskyrų tvarkytuvę ir pridėkite Google paskyrą. + Šifravimas neteisingai sukonfigūruotas + Šifravimas nėra įjungtas + Šiame pokalbyje žinutės bus visapusiškai užšifruojamos. + Šiame pokalbyje žinutės yra visapusiškai užšifruotos. + Šiame kambaryje žinutės yra visapusiškai užšifruotos. Sužinokite daugiau ir patvirtinkite naudotojus jų profilyje. + Šifravimas įjungtas + Šiame kambaryje naudojamas šifravimas nepalaikomas + Jau beveik! Laukiama patvirtinimo… + Jau beveik! Ar kitas prietaisas rodo varnelę\? + "Tema: " + Pridėkite temą + Siųskite pirmąją žinutę kad pakviestumėte %s į pokalbį + Tai yra jūsų tiesioginių žinučių su %s istorijos pradžia. + Tai šio pokalbio pradžia. + Tai yra %s pradžia. + Jūs prisijungėte. + %s prisijungė. + Sukūrėte ir sukonfigūravote kambarį. + %s sukūrė ir sukonfigūravo kambarį. + Nepavyko importuoti raktų + Laukiama %s… + Ši paskyra buvo deaktyvuota. + Žinutė… + Tikrinamas atsarginės kopijos raktas + Įveskite atkūrimo raktą + Tai netinkamas atkūrimo raktas + Naudoti failą + Norėdami tęsti, įveskite savo %s + Patvirtinkite save ir kitus, kad pokalbiai būtų saugūs + Galimas šifravimo patobulinimas + Tikrinamas atsarginės kopijos raktas (%s) + FCM žetonas sėkmingai užregistruotas namų serveryje. + Naudoti botus, tiltus, valdiklius ir lipdukų paketus + Keisti tapatybės serverį + Siųsti el. paštus ir telefono numerius + Konfigūruoti tapatybės serverį + Atjungti tapatybės serverį + Tapatybės serveris + Patvirtinimo kodas neteisingas. + Kodas + Atrodo, kad serveris neatsako per ilgai, tai gali būti dėl prasto ryšio arba serverio klaidos. Pabandykite dar kartą po kurio laiko. + %s perskaitė + %1$s ir %2$s perskaitė + %1$s, %2$s ir %3$s perskaitė + + %1$s, %2$s ir %3$d kitas perskaitė + %1$s, %2$s ir %3$d kiti perskaitė + %1$s, %2$s ir %3$d kitų perskaitė + + Peršokti į apačią + Uždaryti raktų atsarginės kopijos antraštę + Sukurti naują kambarį + Sukurti naują pokalbį arba kambarį + Sukurti naują tiesioginį pokalbį + Uždaryti kambario kūrimo meniu… + Atidaryti kambario kūrimo meniu + Atidaryti navigacijos stalčių + Siųsti priedą + + %d naudotojas perskaitė + %d naudotojai perskaitė + %d naudotojų perskaitė + + Failas yra per didelis, kad jį būtų galima įkelti. + Pridėti paveikslėlį iš + Šis turinys buvo praneštas kaip nepadorus. +\n +\nJei nenorite matyti daugiau šio naudotojo turinio, galite jį ignoruoti kad paslėpti jo žinutes. + Pranešta kaip nepadorus turinys + Apie šį turinį buvo pranešta kaip apie šlamštą. +\n +\nJei nenorite matyti daugiau šio naudotojo turinio, galite jį ignoruoti kad paslėpti jo žinutes. + Pranešta kaip šlamštas + Buvo pranešta apie šį turinį. +\n +\nJei nenorite matyti daugiau šio naudotojo turinio, galite jį ignoruoti kad paslėpti jo žinutes. + Turinys praneštas + IGNORUOTI NAUDOTOJĄ + PRANEŠTI + Pranešimo apie šį turinį priežastis + Pranešti apie šį turinį + Pasirinktinis pranešimas… + Tai nepadoru + Tai šlamštas + Šiame kambaryje nėra failų + %1$s %2$s + FAILAI + Šiame kambaryje nėra medijos + MEDIJA + %1$d iš %2$d + Nepavyko tvarkyti bendrinimo duomenų + Pasukti ir apkarpyti + Vietovė + Apklausa + Lipdukas + Galerija + Kamera + Kontaktas + Failas + Įveskite raktažodžius, reakcijos radimui. + Spoileris + Siunčia duotą žinutę kaip spoilerį + Nepadarėte jokių pakeitimų + %1$s nepadarė jokių pakeitimų + %1$s padarė šį kambarį tik pakviestiems. + Paviešinote kambarį visiems, kurie žino nuorodą. + %1$s paviešino kambarį visiems, kurie žino nuorodą. + Ilgai spauskite ant kambario, kad pamatytumėte daugiau parinkčių + Jūs neignoruojate jokių naudotojų + Pašalinti iš žemo prioriteto + Pridėti prie žemo prioriteto + Pašalinti iš parankinių + Pridėti prie parankinių + Ignoruoti naudotoją + Visos žinutės (triukšmingas) + Nutildyti + Tik paminėjimai + Visos žinutės + Nustatymai + Kambario nustatymai + Išeiti iš kambario + Padarėte šitai tik pakviestiems. + %1$s padarė šitai tik pakviestiems. + Padarėte šį kambarį tik pakviestiems. + Žinučių siuntimas jūsų komandai. + Saugus žinučių siuntimas. + Jūs viską kontroliuojate. + Turėkite savo pokalbius. + Neperskaitytos žinutės + Dar nesate tikri\? %s + Bendruomenės + Komandos + Redaguoti + Arba + Kur laikomi jūsų pokalbiai + Kur bus laikomi jūsų pokalbiai + Turi būti ne mažiau kaip 8 simboliai + Kiti gali jus atrasti %s + Sukurti savo paskyrą + Jūsų paskyra %s buvo sukurta + Sveikiname! + Pasiimkite mane namo + Suasmeninti profilį + Prisijungti prie serverio + Norite prisijungti prie esamo serverio\? + Praleisti šį klausimą + Sveiki sugrįžę! + Perskaitykite %s sąlygas ir taisykles + Serverio politikos + Patikrinkite savo el. paštą. + Susisiekite su mumis + Element Matrix Services (EMS) yra tvirta ir patikima talpinimo paslauga, skirta greitam ir saugiam bendravimui realiuoju laiku. Sužinokite, kaip <a href=\"${ftue_ems_url}\">element.io/ems</a> + Norite turėti savo serverį\? + %s atsiųs jums patvirtinimo nuorodą + Serverio URL + Patvirtinimo kodas + Koks yra jūsų serverio adresas\? + Koks yra jūsų serverio adresas\? Tai tarsi visų jūsų duomenų namai + Pasirinkti savo serverį + Telefono numeris + %s turi patvirtinti jūsų paskyrą + Įveskite savo telefono numerį + El. paštas + %s turi patvirtinti jūsų paskyrą + Įveskite savo el. paštą + Įsitikinkite, kad jis yra 8 ar daugiau simbolių. + Pasirinkite naują slaptažodį + Naujas slaptažodis + Pranešimų tikslai + olm versija + Naudokite integracijų tvarkyklę botams, tiltams, valdikliams ir lipdukų paketams tvarkyti. +\nIntegracijų valdytojai gauna konfigūracijos duomenis ir gali keisti valdiklius, siųsti kvietimus į kambarius ir nustatyti galios lygius jūsų vardu. + Telefonų knygos šalis + Vietiniai kontaktai + Prisegti kambarius su praleistais pranešimais + Pradžios ekranas + Nuorodų peržiūra pokalbyje, kai jūsų namų serveris palaiko šią funkciją. + Įterptinė URL peržiūra + Prisegti kambarius su neperskaitytomis žinutėmis + Integracijos + Kriptografijos raktų valdymas + Kriptografija + Padėkite mums nustatyti problemas ir tobulinti ${app_name} dalydamiesi anoniminiais naudojimo duomenimis. Kad suprastume, kaip žmonės naudojasi keliais įrenginiais, sugeneruosime atsitiktinį identifikatorių, kuriuo dalijasi jūsų įrenginiai. +\n +\nGalite perskaityti visas mūsų sąlygas %s. + Jei įjungta, kitiems naudotojams visada atrodysite neprisijungę, net jei naudosite programą. + Neprisijungęs režimas + Esamumas + Amžinai + 1 mėnuo + 1 savaitė + 3 dienos + Groti užrakto garsą + Pasirinkti + Numatytasis medijos šaltinis + Pasirinkti + Numatytasis glaudinimas + Medija + Pasirinkti šalį + Sutikote siųsti el. paštus ir telefono numerius į šį tapatybės serverį, kad būtų galima atrasti kitus naudotojus iš jūsų kontaktų. + Siųsti el. paštus ir telefono numerius į %s + Duoti sutikimą + Atšaukti mano sutikimą + Jūsų kontaktai yra privatūs. Kad galėtume rasti naudotojus iš jūsų kontaktų, mums reikia jūsų leidimo siųsti kontaktinę informaciją į jūsų tapatybės serverį. + Išsiuntėme jums patvirtinimo el. laišką į %s, pirmiausia patikrinkite savo el. paštą ir spustelėkite patvirtinimo nuorodą + Išsiuntėme jums patvirtinimo el. laišką į %s, patikrinkite savo el. paštą ir spustelėkite patvirtinimo nuorodą + Atrandami telefono numeriai + Atsijungimas nuo tapatybės serverio reiškia, kad jūsų negalės rasti kiti naudotojai ir negalėsite pakviesti kitų el. paštu ar telefonu. + Pridėjus telefono numerį bus rodomos atradimo parinktys. + Pridėjus el. pašto adresą, bus rodomos atradimo parinktys. + Atrandami el. pašto adresai + Šiuo metu nenaudojate tapatybės serverio. Norėdami atrasti esamus žinomus kontaktus ir būti jų atrandami, sukonfigūruokite jį žemiau. + Šiuo metu naudojate %1$s, esamų kontaktų atradimui, kuriuos pažįstate, ir kad būtumėte jų atrandami. + Tapatybės serveris nepateikė jokios politikos + BETA + Temos yra nebaigtas darbas, kuriame bus naujų, įdomių būsimų funkcijų, pvz., patobulinti pranešimai. Norėtume išgirsti jūsų atsiliepimus! + Temų Beta atsiliepimai + Tvarkyti el. paštus ir telefono numerius susietus su jūsų Matrix paskyra + El. paštai ir telefono numeriai + Rodyti visas žinutes nuo %s\? + Jūsų slaptažodis buvo atnaujintas + Slaptažodis nėra tinkamas + Nepavyko atnaujinti slaptažodžio + Naujas slaptažodis + Dabartinis slaptažodis + Keisti slaptažodį + Slaptažodis + Šis telefono numeris jau naudojamas. + Šis el. pašto adresas jau naudojamas. + Patikrinkite savo el. paštą ir spustelėkite jame esančią nuorodą. Kai tai padarysite, spauskite tęsti. + Padėkite tobulinti ${app_name} + ${app_name} renka anoniminę analizę, kad galėtume tobulinti programą. + Pasirinkti kalbą + Kalba + Siųsti analitikos duomenis + Analitika + Tvarkyti atradimo nustatymus. + Atradimas + Deaktyvuoti mano paskyrą + Tai pakeis dabartinį raktą arba frazę. + Generuoti naują saugumo raktą arba nustatyti naują esamos atsarginės kopijos saugumo frazę. + Apsisaugokite nuo užšifruotų žinučių ir duomenų praradimo, darydami šifravimo raktų atsargines kopijas serveryje. + Nustatyti šiame įrenginyje + Nustatyti saugią atsarginę kopiją iš naujo + Nustatyti saugią atsarginę kopiją + Saugi atsarginė kopija + Pridėti žinutės kompozitoriuje mygtuką jaustukų klaviatūros atidarymui + Rodyti jaustukų klaviatūrą + Programinės klaviatūros mygtukas Enter išsiųs žinutę, o ne pridės eilutės pertrauką + Siųsti žinutę su enter + Medijos peržiūra prieš siunčiant + Vibruoti paminėjus naudotoją + Įtraukiami avataro ir rodomojo vardo keitimai. + Rodyti paskyrų įvykius + Kvietimai, pašalinimai ir užblokavimai nėra įtakojami. + Rodyti prisijungimo ir išėjimo įvykius + Paleisti animuotus paveikslėlius laiko juostoje, kai tik jie tampa matomi + Automatinis animuotų vaizdų paleidimas + Naudokite /confetti komandą arba siųskite žinutę, kurioje yra ❄️ arba 🎉 + Rodyti pokalbio efektus + Spustelėkite ant skaitymo kvitų, kad pamatytumėte išsamų sąrašą. + Rodyti skaitymo kvitus + Rodyti laiko žymas 12 valandų formatu + Leidimas naudotis kontaktais + Rodyti laiko žymas visoms žinutėms + Prieš siunčiant žinutes, suformatuoti jas naudojant Markdown sintakse. Tai leidžia atlikti išplėstinį formatavimą, pavyzdžiui, naudoti žvaigždutes tekstui kursyvu rodyti. + Markdown formatavimas + Naudotojo sąsaja + Leisti kitiems naudotojams žinoti, kad rašote. + Norėdami tai daryti, Įjunkite \'Leisti integracijas\' nustatymuose. + Siųsti pranešimus apie rašymą + Trečiųjų šalių bibliotekos + Jūsų tapatybės serverio politika + Jūsų namų serverio politika + ${app_name} politika + Integracijų tvarkyklė + Leisti integracijas + Tapatybės serveris + Namų serveris + Prisijungta kaip + Autentifikacija + %1$s @ %2$s + Paskutinį kartą matytas + Atnaujinti viešą pavadinimą + Viešas pavadinimas + Deaktyvuoti paskyrą + ID + Tai galite bet kada išjungti nustatymuose + Mes <b>nesidalijame</b> informacija su trečiosiomis šalimis + Mes <b>neįrašome ir neprofiliuojame</b> jokių paskyros duomenų + čia + Integracijos yra išjungtos + Šis serveris nepateikia jokios politikos. + Išsiuntėte duomenis skambučiui nustatyti. + Slėpti tapatybės serverio politiką + Rodyti tapatybės serverio politiką + Failas %1$s buvo atsiųstas! + Suglaudinamas vaizdo įrašas %d%% + Suglaudinamas paveikslėlis… + Siunčiamas failas (%1$s / %2$s) + Siunčiama miniatiūra (%1$s / %2$s) + Užšifruojamas failas… + Užšifruojama miniatiūra… + Nerandate to, ko ieškote\? + Laukiama… + Filtruoti pokalbius… + Redagavimų nerasta + Žinutės redagavimai + (redaguota) + Pagrindiniame ekrane pridėti specialų skirtuką neperskaitytiems pranešimams. + Įjungti perbraukimą, kad atsakytumėte laiko juostoje + Ieškoti pavadinimo + Ieškoti pagal vardą, ID arba paštą + Pavadinimas arba ID (#pavyzdys:matrix.org) + Peržiūrėti kambarių katalogą + Siųsti naują tiesioginę žinutę + Tiesioginės žinutės + Sukurti naują kambarį + Pasiūlymai + Žinomi naudotojai + Kuriamas kambarys… + QR kodas + Pridėti pagal QR kodą + Būkite atrandami kitų + Paslaugų teikimo sąlygos + Peržiūrėti redagavimo istoriją + Nuoroda nukopijuota į iškarpinę + Atidaryti atradimo nustatymus + Rodyti pilną istoriją užšifruotuose kambariuose + Rodyti paslėptus įvykius laiko juostoje + Iš naujo nustatyti pranešimų metodą + Registruoti žetoną + Sistemos nustatymai + Nėra registruotų tiesioginių pranešimų vartų + Nėra nustatytų tiesioginų pranešimų taisyklių + Tiesioginių pranešimų taisyklės + Saugumas & Privatumas + Nuostatos + Bendrieji + Kiti trečiųjų šalių pranešimai + Matrix SDK versija + Kambario nustatymai + Rodyti pašalintų žinučių vietoje užrašą + Rodyti pašalintas žinutes + ištrinti iš serverio atsarginę šifravimo raktų kopiją\? Atkūrimo rakto nebegalėsite naudoti užšifruotai žinučių istorijai skaityti. + Ištrinti atsarginę kopiją + Tikrinama atsarginės kopijos būsena + Atsarginė kopija ištrinama… + Jei norite naudoti atsarginę raktų kopiją šioje sesijoje, dabar atkurkite naudodami slaptažodį arba atkūrimo raktą. + Atsarginė kopija turi netinkamą parašą iš nepatvirtintos sesijos %s + Atsarginė kopija turi netinkamą parašą iš patvirtintos sesijos %s + Įjungti sistemos kamerą, vietoj pritaikytos kameros ekrano. + Naudoti vietinę kamerą + Patvirtinkite palygindami šiuos duomenis su naudotojo nustatymais kitoje sesijoje: + Tvarkyti raktų atsarginę kopiją + Tema + Atšaukti nustatymą pagrindiniu adresu + Nustatyti kaip pagrindinį adresą + Tai eksperimentinės funkcijos, kurios gali netikėtai sugesti. Naudokite atsargiai. + Laboratorijos + Kambario versija + Šio kambario vidinis ID + Išplėstiniai + + %d užblokuotas naudotojas + %d užblokuoti naudotojai + %d užblokuotų naudotojų + + Užblokuoti naudotojai + Bet kas gali rasti kambarį ir prisijungti + Viešas + Tik pakviesti žmonės gali rasti ir prisijungti + Privatus (tik su kvietimais) + Privatus + Nežinomas prieigos nustatymas (%s) + Bet kas gali pasibelsti į kambarį, o nariai gali priimti arba atmesti + Tik nariai (nuo jų prisijungimo) + Tik nariai (nuo jų pakvietimo) + Tik nariai (nuo šios parinkties pasirinkimo momento) + Bet kas + Leisti svečiams prisijungti + Pranešti man apie + Peržiūrėti ir tvarkyti šio kambario adresus bei jo matomumą kambarių kataloge. + Kas gali prieiti\? + Pakeitimai, kas gali skaityti istoriją, bus taikomi tik būsimoms šio kambario žinutėms. Esamos istorijos matomumas išliks nepakitęs. + Kas gali skaityti istoriją\? + Kambario istorijos skaitomumas + Paskyros nustatymai + Tema + Kambario adresai + Kambario prieiga + Pranešimus galite tvarkyti %1$s. + Atkreipkite dėmesį, kad pranešimai apie paminėjimus ir raktinius žodžius užšifruotuose kambariuose, nėra prieinami mobiliuosiuose įrenginiuose. + Pranešimų konfigūracija + Įjungus šį nustatymą, prie visų veiksmų pridedamas žymuo FLAG_SECURE. Iš naujo paleiskite programą, kad pakeitimas įsigaliotų. + Neleisti programos ekrano nuotraukų + Biometrinis autentifikavimas buvo išjungtas, nes neseniai buvo pridėtas naujas biometrinis autentifikavimo metodas. Jį vėl galite įjungti nustatymuose. + Nepavyko įjungti biometrinio autentifikavimo. + Atidaryti nustatymus + Sukurti AŽ tik po pirmos žinutės + Įjungti atidėtas AŽ + Supaprastintas Element su nebūtinais skirtukais + Įjungti naują išdėstymą + \ No newline at end of file diff --git a/library/ui-strings/src/main/res/values-pl/strings.xml b/library/ui-strings/src/main/res/values-pl/strings.xml index b7b73eb9e6..c9bac8977b 100644 --- a/library/ui-strings/src/main/res/values-pl/strings.xml +++ b/library/ui-strings/src/main/res/values-pl/strings.xml @@ -732,7 +732,7 @@ Wysyłaj wiadomości za pomocą klawisza enter Przycisk enter na klawiaturze programowej wyśle wiadomość zamiast wprowadzania łamanania linii Ustawienia wyszukiwania - Ustal jak inni mogą odnaleść twoje konto. + Ustal jak inni mogą odnaleźć twoje konto. Media Domyślne źródło mediów Odzyskiwanie zaszyfrowanych wiadomości @@ -2732,4 +2732,16 @@ Niestety, ten pokój nie został znaleziony. \nSpróbuj ponownie później.%s Zaproszenia - + Tutaj pojawią się rozmowy które nie zostały jeszcze odczytane. + Brak nowych wiadomości. + Zmień przestrzeń + Stwórz prywatny chat dopiero po wysłaniu pierwszej wiadomości + Włącz odroczone prywatne chaty + Odświeżony wygląd Element z opcjonalnymi kartami + Włącz nowy układ + Przestrzenie to nowa metoda na grupowanie razem wielu pokoi i osób. Dodaj tu już istniejący pokój lub stwórz nowy używając przycisku w prawym-dolnym rogu. + Jest to nowa metoda na grupowanie razem wielu pokoi i osób. + %s +\nwygląda nieco pusto. + Brak przestrzeni. + \ No newline at end of file diff --git a/library/ui-strings/src/main/res/values-pt-rBR/strings.xml b/library/ui-strings/src/main/res/values-pt-rBR/strings.xml index 817c7646df..108ecc7e38 100644 --- a/library/ui-strings/src/main/res/values-pt-rBR/strings.xml +++ b/library/ui-strings/src/main/res/values-pt-rBR/strings.xml @@ -473,7 +473,7 @@ Você tem certeza que você quer começar uma chamada de vídeo\? Tirar foto Tirar vídeo - Chamar + Chamada Banir usuária(o) vai removê-la(o) desta sala e preveni-la(o) de se juntar de novo. Todas as mensagens Adicionar a tela de Início @@ -2460,7 +2460,7 @@ Threads ajudam manThreads ajudam manter suas conversas em-tópico e fáceis de rastrear. %sHabilitar threads vai refrescar o app. Isto pode tomar mais tempo para algumas contas. Threads Beta Saber mais - Teste aí + Experimentar Compartilhamento de tela está em progresso ${app_name} Compartilhamento de Tela Parar compartilhamento de tela @@ -2633,15 +2633,15 @@ Desculpe, esta sala não tem sido encontrada. \nPor favor retente mais tarde.%s Convites - Teste aí + Experimentar Toque na direita topo para ver a opção para feedback. - Dar Feedback - Acessar seus Espaços (direito fundo) mais rápido e fácio que jamais antes. - Acessar Espaços + Dê Feedback + Acesse seus Espaços (direita fundo) mais rápido e fácil que jamais antes. + Acesse Espaços Para simplificar seu ${app_name}, abas são agora opcionais. Gerencie-as usando o menu direito topo. Boas-vindas a uma nova visão! Isto é onde suas mensagens não-lidas vão aparecer, quando você tiver algumas. - Nada a reportar. + Nada para reportar. O app de chat seguro tudo-em-um para equipes, amigas(os) e organizações. Crie um chat, ou junte-se a uma sala existe, para começar. Boas-vindas a ${app_name}, \n%s. @@ -2658,8 +2658,8 @@ Melhore a segurança de sua conta ao seguir estas recomendações. Recomendações de segurança - Inativa(o) por %1$d+ dia (%2$s) - Inativa(o) por %1$d+ dias (%2$s) + Inativa por %1$d+ dia (%2$s) + Inativa por %1$d+ dias (%2$s) Isto é onde suas novas requisições e convites vão estar. Nada novo. @@ -2668,4 +2668,46 @@ Colapsar filhos de %s Expandir filhos de %s Mudar Espaço + Não-verificadas + Verificadas + Não-verificadas + Verificadas + Inativas + + Inativas por %1$d dia ou mais longo + Inativas por %1$d dias ou mais longo + + Inativas + Endereço de IP + Última atividade + Nome de sessão + Informação de aplicativo, dispositivo, e atividade. + Detalhes de sessão + Limpar Filtro + Nenhuma sessão inativa encontrada. + Nenhuma sessão não-verificada encontrada. + Nenhuma sessão verificada encontrada. + + Considere fazer signout de sessões antigas (%1$d dia ou mais) que você não usa mais. + Considere fazer signout de sessões antigas (%1$d dias ou mais) que você não usa mais. + + Verifique suas sessões para mensageria segura melhorada ou faça signout daquelas que você não reconhece ou usa mais. + Para melhor segurança, faça signout de qualquer sessão que você não reconhece ou usa mais. + Filtrar + Pronta para mensageria segura + Não pronta para mensageria segura + Todas as sessões + Filtrar + Última atividade %1$s + Dispositivo + Sessão + Sessão Atual + Verifique ou faça signout desta sessão para melhor segurança e fiabilidade. + Verifique sua sessão atual para mensageria segura melhorada. + Esta sessão está pronta para mensageria segura. + Sua sessão atual está pronta para mensageria segura. + Criar DM somente em primeira mensagem + Habilitar DMs diferidas + Um Element simplificado com abas opcionais + Habilitar novo layout diff --git a/library/ui-strings/src/main/res/values-ru/strings.xml b/library/ui-strings/src/main/res/values-ru/strings.xml index 7c9d073035..c8eee49d96 100644 --- a/library/ui-strings/src/main/res/values-ru/strings.xml +++ b/library/ui-strings/src/main/res/values-ru/strings.xml @@ -273,7 +273,7 @@ Фильтр названий комнат Приглашения Маловажные - Беседы + Личные сообщения Только Matrix контакты Нет результатов Комнаты @@ -452,7 +452,7 @@ Чтобы убедиться, что этой сессии можно доверять, обратитесь к ее владельцу, используя другие способы (например, лично или по телефону), и спросите, соответствует ли ключ, который он видит в настройках для этой сессии: Если они не совпадают, безопасность вашего общения может быть поставлена под угрозу. Выбор каталога комнат - Имя сервера + Название сервера Все комнаты на сервере %s Все местные комнаты %s Пользовательский интерфейс @@ -907,16 +907,16 @@ Событие удалено пользователем Событие модерируется администратором комнаты Некорректное событие, не могу отобразить - Создать новую комнату + Создать комнату Нет сети. Пожалуйста, проверьте подключение к Интернету. Изменить - Изменить сеть + Изменить сервер Пожалуйста, подождите… Эту комнату нельзя предварительно просмотреть Комнаты Личные сообщения СОЗДАТЬ - Имя + Название Публичная Каждый сможет присоединиться к этой комнате Произошла ошибка при получении информации о доверии @@ -927,7 +927,7 @@ Вы уже просмотрели эту комнату! Общее Предпочтения - Безопасность и конфиденциальность + Безопасность Правила push-уведомлений app_id: push_key: @@ -956,11 +956,11 @@ Изменения не найдены Отфильтровать беседы… Не можете найти нужное\? - Создать новую комнату - Отправить новое личное сообщение - Просмотр каталога комнат - Имя или ID (#example:matrix.org) - Включить жест смахивания для ответа в ленте сообщений + Создать комнату + Отправить личное сообщение + Каталог комнат + Название или ID (#example:matrix.org) + Жест смахивания для ответа в ленте сообщений Ссылка скопирована в буфер обмена Создаем комнату… История изменений @@ -1039,7 +1039,7 @@ Использовать камеру Использовать микрофон Получать доступ к медиа, защищённым DRM - Создать новую комнату + Создать комнату Файл Камера Галерея @@ -1390,7 +1390,7 @@ Вы приняли Подтверждение отправлено Запрос на подтверждение - Подтвердите эту сессию + Заверьте эту сессию Сканируйте код с помощью устройства другого пользователя, чтобы безопасно проверить друг друга Сканировать их код Невозможно сканировать @@ -1450,7 +1450,7 @@ %d сессии активны %d сессий активно - Подтвердите это устройство + Заверьте эту сессию Используйте существующую сессию для подтверждения этой, предоставив ей доступ к зашифрованным сообщениям. Инструменты для разработчиков Данные учётной записи @@ -1473,13 +1473,13 @@ Безопасное резервное копирование Эта сессия является надежной для безопасного обмена сообщениями, поскольку вы подтвердили ее: Подтвердите эту сессию, чтобы пометить её доверенной и предоставить ей доступ к зашифрованным сообщениям. Если вы не входили в эту сессию, ваша учетная запись может быть скомпрометирована: - Проверить - Проверено + Заверить + Заверено Предупреждение Не удалось получить список сессий Сессии - Доверенные - Недоверенные + Заверенная + Незаверенная Эта сессия является доверенной для безопасного обмена сообщениями, так как %1$s (%2$s) проверил(а) его: %1$s (%2$s) вошел(ла), используя новую сессию: Пока этот пользователь не доверяет этой сессии, сообщения, отправленные в обе стороны, помечаются предупреждениями. Кроме того, вы можете подтвердить сессию вручную. @@ -2037,7 +2037,7 @@ Вы здесь единственный человек. Если вы уйдёте, никто не сможет присоединиться в будущем, включая вас. Покинуть Добавить комнаты - Исследуйте комнаты + Обзор комнат %d человек, которого вы знаете, уже присоединился %d людей, которых вы знаете, уже присоединились @@ -2116,7 +2116,7 @@ Сканируйте код с помощью другого устройства или переключитесь и сканируйте с помощью этого устройства Адрес пространства Файл слишком большой для загрузки. - Поиск по имени + Поиск по названию Сжатие видео %d%% Сжатие изображения… Оставить отзыв @@ -2374,11 +2374,11 @@ Опрос Создать опрос Перезапустите приложение, чтобы изменения вступили в силу. - Включить математику LaTeX + Математика LaTeX Ваша система будет автоматически отправлять журналы при возникновении ошибки невозможности расшифровки Автоматически сообщать об ошибках расшифровки. Шифрование неправильно настроено - Изменить цвет отображаемого имени + Изменить цвет имени Восстановить шифрование Обратитесь к администратору, чтобы восстановить шифрование до рабочего состояния. Шифрование настроено неправильно. @@ -2435,7 +2435,7 @@ Не удалось загрузить карту Карта Примечание: приложение будет перезапущено - Включить обсуждения сообщений + Обсуждения сообщений Подключиться к серверу Хотите присоединиться к существующему серверу\? Пропустить вопрос @@ -2507,7 +2507,7 @@ Идёт отправка местоположения Осталось %1$s Обновлено %1$s назад - Включить функцию \"Поделиться трансляцией местоположения\" + Функция \"Поделиться трансляцией местоположения\" ${app_name} Трансляция местоположения Транслировать до %1$s Трансляция завершена @@ -2665,8 +2665,8 @@ Сессии Создать беседу или комнату Показать все сессии (V2, в разработке) - Люди - Настройки макета + ЛС + Настройки вида Фильтры Недавние Избранные @@ -2676,7 +2676,7 @@ Активности Сортировать по Обзор комнат - Начать беседу + Отправить ЛС Создать комнату Посмотреть все (%1$d) Повысьте безопасность учётной записи, следуя этим рекомендациям. @@ -2693,4 +2693,53 @@ Добро пожаловать в ${app_name}, \n%s. Оставить отзыв - + Название сессии + Неактивные + IP-адрес + Последняя активность + Сведения о сессии + Для лучшей безопасности выйдите из всех сессий, которые более не признаёте или не используете. + Заверенные + Все сессии + Последняя активность %1$s + Устройство + Сессия + Текущая сессия + Заверить сессию + Подробности + Эта сессия готова к безопасному обмену сообщениями. + Текущая сессия готова к безопасному обмену сообщениями. + Веб-браузер + Пространства — это новый способ организации комнат и людей. Создайте пространство, чтобы начать. + Новый вид + Нечего отображать. + Здесь будут отображаться непрочитанные сообщения, когда таковые будут. + Присущий системе + Смена пространства + Упрощённый Element с дополнительными вкладками + Добро пожаловать в новый вид! + %s +\nвыглядит слегка пустовато. + Попробовать + Сведения о приложении, устройстве и активности. + Подтвердите текущую сессию для более безопасного обмена сообщениями. + Пока нет пространств. + Подтвердите свои сессии для более безопасного обмена сообщениями или выйдите из тех, которые более не признаёте или не используете. + Подтвердите или выйдите из незаверенных сессий. + Подтвердите или выйдите из этой сессии для лучшей безопасности и надёжности. + Ничего нового. + Заверенных сессий не обнаружено. + Незаверенных сессий не обнаружено. + Неактивных сессий не обнаружено. + Очистить фильтр + Не готовы к безопасному обмену сообщениями + Готовы к безопасному обмену сообщениями + + Неактивны %1$d день или дольше + Неактивны %1$d дня или дольше + Неактивны %1$d дней или дольше + Неактивны %1$d дней или дольше + + Незаверенные + Фильтр + \ No newline at end of file diff --git a/library/ui-strings/src/main/res/values-sk/strings.xml b/library/ui-strings/src/main/res/values-sk/strings.xml index 9eb22e3ae3..f37af1a654 100644 --- a/library/ui-strings/src/main/res/values-sk/strings.xml +++ b/library/ui-strings/src/main/res/values-sk/strings.xml @@ -2720,4 +2720,48 @@ Zbaliť %s podpriestory Rozbaliť %s podpriestory Zmeniť priestor - + IP adresa + Posledná aktivita + Názov relácie + Informácie o aplikácii, zariadení a činnosti. + Podrobnosti o relácii + Zrušiť filter + Nenašli sa žiadne neaktívne relácie. + Nenašli sa žiadne neoverené relácie. + Nenašli sa žiadne overené relácie. + + Zvážte odhlásenie zo starých relácií (%1$d deň alebo viac), ktoré už nepoužívate. + Zvážte odhlásenie zo starých relácií (%1$d dni alebo viac), ktoré už nepoužívate. + Zvážte odhlásenie zo starých relácií (%1$d dní alebo viac), ktoré už nepoužívate. + + Neaktívne + Overte si relácie pre vylepšené bezpečné zasielanie správ alebo sa odhláste z tých, ktoré už nepoznáte alebo nepoužívate. + Neoverené + V záujme čo najlepšieho zabezpečenia sa odhláste z každej relácie, ktorú už nepoznáte alebo nepoužívate. + Overené + Filter + + Neaktívny už %1$d deň alebo dlhšie + Neaktívny už %1$d dni alebo dlhšie + Neaktívny už %1$d dní alebo dlhšie + + Neaktívne + Nie je pripravené na bezpečné zasielanie správ + Neoverené + Pripravené na bezpečné zasielanie správ + Overené + Všetky relácie + Filter + Posledná aktivita %1$s + Zariadenie + Relácia + Aktuálna relácia + V záujme čo najvyššej bezpečnosti a spoľahlivosti túto reláciu overte alebo sa z nej odhláste. + Overte svoju aktuálnu reláciu pre vylepšené bezpečné zasielanie správ. + Táto relácia je pripravená na bezpečné zasielanie správ. + Vaša aktuálna relácia je pripravená na bezpečné zasielanie správ. + Vytvoriť priamu správu len pri prvej správe + Povoliť odložené priame správy + Zjednodušený Element s voliteľnými kartami + Zapnúť nové usporiadanie + \ No newline at end of file diff --git a/library/ui-strings/src/main/res/values-uk/strings.xml b/library/ui-strings/src/main/res/values-uk/strings.xml index 3e511f8459..c4f1658f6b 100644 --- a/library/ui-strings/src/main/res/values-uk/strings.xml +++ b/library/ui-strings/src/main/res/values-uk/strings.xml @@ -818,7 +818,7 @@ URL-адреса аватара Ваше показуване ім\'я Скасувати доступ для мене - Відкрити в переглядачі + Відкрити у браузері Перезавантажити віджет Не вдалося завантажити віджет. \n%s @@ -1196,7 +1196,7 @@ Використати файл Скористатись парольною фразою відновлення або ключем Скористатись відновлювальними парольною фразою або ключем - Використовуйте найостаннішій ${app_name} на ваших інших пристроях, ${app_name} Web, ${app_name} для комп\'ютерів, ${app_name} iOS, ${app_name} для Android, або будь-який інший, здатний до перехресного підписування, Matrix-клієнт + Використовуйте найостаннішій ${app_name} на ваших інших пристроях, ${app_name} браузері, ${app_name} комп\'ютерах, ${app_name} iOS, ${app_name} Android, або будь-який інший, здатний до перехресного підписування, Matrix-клієнт Використовуйте найостаннішій ${app_name} на ваших інших пристроях: Якщо ви не можете доступитись до чинного сеансу Використайте чинний сеанс, щоб звірити цей сеанс, таким чином надавши йому доступ до зашифрованих повідомлень. @@ -2021,7 +2021,7 @@ Не вдалося отримати доступ до безпечного сховища ${app_name} iOS \n${app_name} Android - ${app_name} для переглядача + ${app_name} для браузера \n${app_name} для ПК Не вдалося зберегти медіафайл Це не дійсний ключ відновлення @@ -2701,7 +2701,7 @@ Відкрити налаштування Усі бесіди Показати всі сеанси (V2, WIP) - Для найкращої безпеки перевірте свої сеанси та вийдіть з усіх сеансів, які ви більше не розпізнаєте або не використовуєте. + Звірте свої сеанси та вийдіть з усіх сеансів, які ви більше не розпізнаєте або не використовуєте для кращої безпеки. Інші сеанси Сеанси Відкрити список кімнат @@ -2772,4 +2772,50 @@ Згорнути дочірні елементи %s Розгорнути дочірні елементи %s Змінити простір - + IP-адреса + Остання активність + Назва сеансу + Відомості про застосунок, пристрій та діяльність. + Подробиці сеансу + Очистити фільтр + Неактивних сеансів не знайдено. + Не знайдено не звірених сеансів. + Знайдені не звірені сеанси. + + Подумайте про те, щоб вийти зі старих сеансів (%1$d день або довше), якими ви більше не користуєтесь. + Подумайте про те, щоб вийти зі старих сеансів (%1$d дні або довше), якими ви більше не користуєтесь. + Подумайте про те, щоб вийти зі старих сеансів (%1$d днів або довше), якими ви більше не користуєтесь. + Подумайте про те, щоб вийти зі старих сеансів (%1$d днів або довше), якими ви більше не користуєтесь. + + Неактивний + Звірте свої сеанси для посилення безпеки обміну повідомленнями або вийдіть з тих, які ви більше не впізнаєте або не використовуєте. + Не звірений + Для кращої безпеки виходьте з будь-якого сеансу, який ви більше не впізнаєте або не використовуєте. + Звірений + Фільтрувати + + Неактивний %1$d день або довше + Неактивний %1$d дні або довше + Неактивний %1$d днів або довше + Неактивний %1$d днів або довше + + Неактивний + Не готовий до безпечного обміну повідомленнями + Не звірений + Звірений + Готовий до безпечного обміну повідомленнями + Усі сеанси + Фільтрувати + Остання активність %1$s + Пристрій + Сеанс + Поточний сеанс + Звірте або вийдіть з цього сеансу для кращої безпеки та надійності. + Звірте свій поточний сеанс для посилення безпеки обміну повідомленнями. + Цей сеанс готовий до безпечного обміну повідомленнями. + Ваш поточний сеанс готовий до безпечного обміну повідомленнями. + Створюйте приватні повідомлення лише за надсилання першого повідомлення + Увімкнути відкладені приватні повідомлення + Спрощений Element з опціональними вкладками + Увімкнути новий вигляд + \ No newline at end of file diff --git a/library/ui-strings/src/main/res/values-zh-rCN/strings.xml b/library/ui-strings/src/main/res/values-zh-rCN/strings.xml index db1dab92e2..eba96e82c3 100644 --- a/library/ui-strings/src/main/res/values-zh-rCN/strings.xml +++ b/library/ui-strings/src/main/res/values-zh-rCN/strings.xml @@ -2604,4 +2604,24 @@ 提供反馈 点击右上角查看反馈选项。 试用 - + 空间是对房间和人进行分组的新方式。创建一个空间来开始吧。 + 启用新布局 + IP地址 + 验证你的会话以增强消息传输的安全性,或从那些你不认识或不再使用的会话登出。 + 尚未准备好安全收发消息 + 准备好安全收发消息 + 已验证 + 全部会话 + 筛选 + 上次活跃%1$s + 设备 + 会话 + 当前会话 + 验证你的会话以增强消息传输的安全性。 + 访问你的空间(右下角)比以前更快、更容易。 + 此会话已准备好安全地收发消息。 + 你当前的会话已准备好安全地收发消息。 + 仅在首条消息创建私聊消息 + 启用延迟的私聊消息 + 简化的Element,带有可选的标签 + \ No newline at end of file diff --git a/library/ui-strings/src/main/res/values-zh-rTW/strings.xml b/library/ui-strings/src/main/res/values-zh-rTW/strings.xml index 78caa2cc2e..876084d566 100644 --- a/library/ui-strings/src/main/res/values-zh-rTW/strings.xml +++ b/library/ui-strings/src/main/res/values-zh-rTW/strings.xml @@ -2616,4 +2616,44 @@ 折疊 %s 個子空間 展開 %s 個子空間 變更空間 - + IP 位置 + 最後活動 + 工作階段名稱 + 應用程式、裝置與活動資訊。 + 工作階段詳細資訊 + 清除過濾條件 + 找不到不活躍的工作階段。 + 找不到未驗證的工作階段。 + 找不到已驗證的工作階段。 + + 閒置%1$d天或更久 + + + 考慮登出您不再使用的舊工作階段(%1$d天或更久)。 + + 不活躍 + 驗證您的工作階段以強化安全通訊或從您無法識別或不再使用的工作階段登出。 + 未驗證 + 為取得最佳安全性,請從任何您無法識別或不再使用的工作階段登出。 + 已驗證 + 過濾 + 不活躍 + 尚未準備好安全通訊 + 未驗證 + 準備好安全通訊 + 已驗證 + 所有工作階段 + 過濾 + 最後活動 %1$s + 裝置 + 工作階段 + 目前的工作階段 + 驗證或從此工作階段登出以取得最佳安全性與可靠性。 + 驗證您目前的工作階段以強化安全通訊。 + 此工作階段已準備好安全通訊。 + 您目前的工作階段已準備好安全通訊。 + 僅在第一則訊息上建立直接訊息 + 啟用延期直接訊息 + 包含選擇性分頁的簡潔 Element + 啟用新佈局 + \ No newline at end of file diff --git a/library/ui-strings/src/main/res/values/strings.xml b/library/ui-strings/src/main/res/values/strings.xml index 992ab1c38c..71ccf5b234 100644 --- a/library/ui-strings/src/main/res/values/strings.xml +++ b/library/ui-strings/src/main/res/values/strings.xml @@ -284,8 +284,8 @@ %1$s turned on end-to-end encryption. You turned on end-to-end encryption. - %1$s turned on end-to-end encryption (unrecognised algorithm %2$s). - You turned on end-to-end encryption (unrecognised algorithm %1$s). + %1$s turned on end-to-end encryption (unrecognized algorithm %2$s). + You turned on end-to-end encryption (unrecognized algorithm %1$s). System Default @@ -406,6 +406,7 @@ Reset Learn more Next + Got it Copied to clipboard @@ -423,7 +424,7 @@ Notifications - Favourites + Favorites People Rooms @@ -773,7 +774,7 @@ Shows all threads from current room My Threads Shows all threads you’ve participated in - Keep discussions organised with threads + Keep discussions organized with threads Threads help keep your conversations on-topic and easy to track. Tip: Long tap a message and use “%s”. @@ -818,7 +819,7 @@ Show the application info in the system settings. Email addresses - No email has been added to your account + No email address has been added to your account Phone numbers Remove %s? Ensure that you have clicked on the link in the email we have sent to you. @@ -827,7 +828,7 @@ Notification importance by event Email notification - To receive email with notification, please associate an email to your Matrix account + To receive email with notification, please associate an email address to your Matrix account Enable email notifications for %s @@ -1093,7 +1094,7 @@ Show all messages from %s? Emails and phone numbers - Manage emails and phone numbers linked to your Matrix account + Manage email addresses and phone numbers linked to your Matrix account Choose a country @@ -1233,6 +1234,9 @@ Import Encrypt to verified sessions only Never send encrypted messages to unverified sessions from this session. + Never send encrypted messages to unverified sessions in this room. + ⚠ There are unverified devices in this room, they won’t be able to decrypt messages you send. + 🔒 You have enabled encrypt to verified sessions only for all rooms in Security Settings. %1$d/%2$d key imported with success. %1$d/%2$d keys imported with success. @@ -1404,6 +1408,7 @@ Changes your avatar in this current room only On/Off markdown To fix Matrix Apps management + Open the developer tools screen Displays information about a user Markdown has been enabled. @@ -1640,7 +1645,7 @@ All Unreads - Favourites + Favorites People Reactions @@ -1799,20 +1804,20 @@ You are currently using %1$s to discover and be discoverable by existing contacts you know. You are not currently using an identity server. To discover and be discoverable by existing contacts you know, configure one below. Discoverable email addresses - Discovery options will appear once you have added an email. + Discovery options will appear once you have added an email address. Discovery options will appear once you have added a phone number. Disconnecting from your identity server will mean you won’t be discoverable by other users and you won’t be able to invite others by email or phone. Discoverable phone numbers - We sent you a confirm email to %s, check your email and click on the confirmation link - We sent you a confirm email to %s, please first check your email and click on the confirmation link + We sent an email to %s, check your email and click on the confirmation link + We sent an email to %s, please first check your email and click on the confirmation link Send emails and phone numbers - You have given your consent to send emails and phone numbers to this identity server to discover other users from your contacts. + You have given your consent to send email addresses and phone numbers to this identity server to discover other users from your contacts. Your contacts are private. To discover users from your contacts, we need your permission to send contact info to your identity server. Revoke my consent Give consent - Send emails and phone numbers to %s - To discover existing contacts, you need to send contact info (emails and phone numbers) to your identity server. We hash your data before sending for privacy. + Send email addresses and phone numbers to %s + To discover existing contacts, you need to send contact info (email addresses and phone numbers) to your identity server. We hash your data before sending for privacy. Do you agree to send this info? Enter an identity server URL @@ -1842,7 +1847,7 @@ Close the create room menu… Create a new direct conversation Create a new conversation or room - Create a new room + Create a new room Open spaces list Close keys backup banner Jump to bottom @@ -1870,6 +1875,7 @@ "Sticker" Poll Location + Voice Broadcast Rotate and crop Couldn\'t handle share data @@ -2036,7 +2042,7 @@ It\'s your conversation. Own it. Chat with people directly or in groups Keep conversations private with encryption - Extend & customise your experience + Extend & customize your experience Get started Create account I already have an account @@ -2079,7 +2085,7 @@ Sorry, this server isn’t accepting new accounts. The application is not able to create an account on this homeserver.\n\nDo you want to signup using a web client? - This email is not associated to any account. + This email address is not associated to any account. Reset password on %1$s @@ -2092,7 +2098,7 @@ Changing your password will reset any end-to-end encryption keys on all of your sessions, making encrypted chat history unreadable. Set up Key Backup or export your room keys from another session before resetting your password. Continue - This email is not linked to any account + This email address is not linked to any account Check your inbox @@ -2109,7 +2115,7 @@ Your password is not yet changed.\n\nStop the password change process? Set email address - Set an email to recover your account. Later, you can optionally allow people you know to discover you by your email. + Set an email address to recover your account. Later, you can optionally allow people you know to discover you by your this address. Email Email (optional) Next @@ -2219,6 +2225,7 @@ Prepends ¯\\_(ツ)_/¯ to a plain-text message Prepends ( ͡° ͜ʖ ͡°) to a plain-text message + Prepends (╯°□°)╯︵ ┻━┻ to a plain-text message "Enable encryption" "Once enabled, encryption cannot be disabled." @@ -2259,8 +2266,8 @@ Shared their live location Waiting… - %s cancelled - You cancelled + %s canceled + You canceled %s accepted You accepted Verification Sent @@ -2364,9 +2371,6 @@ Manage Sessions Sign out of this session Sessions - Other sessions - For best security, verify your sessions and sign out from any session that you don’t recognize or use anymore. - Server name Server version Server file upload limit @@ -2405,7 +2409,7 @@ This session is trusted for secure messaging because %1$s (%2$s) verified it: %1$s (%2$s) signed in using a new session: - Until this user trusts this session, messages sent to and from it are labelled with warnings. Alternatively, you can manually verify it. + Until this user trusts this session, messages sent to and from it are labeled with warnings. Alternatively, you can manually verify it. Initialize CrossSigning @@ -2474,9 +2478,9 @@ One of the following may be compromised:\n\n- Your password\n- Your homeserver\n- This device, or the other device\n- The internet connection either device is using\n\nWe recommend you change your password & recovery key in Settings immediately. - Verification has been cancelled. You can start verification again. + Verification has been canceled. You can start verification again. This QR code looks malformed. Please try to verify with another method. - Verification Cancelled + Verification Canceled Recovery Passphrase Message Key @@ -2577,6 +2581,9 @@ Prevent screenshots of the application Enabling this setting adds the FLAG_SECURE to all Activities. Restart the application for the change to take effect. + Incognito keyboard + "Request that the keyboard should not update any personalized data such as typing history and dictionary based on what you've typed in conversations. Notice that some keyboards may not respect this setting." + Could not save media file Set a new account password… @@ -2673,7 +2680,7 @@ Please first configure an identity server. Please first accepts the terms of the identity server in the settings. - For your privacy, ${app_name} only supports sending hashed user emails and phone number. + For your privacy, ${app_name} only supports sending hashed user email addresses and phone numbers. The association has failed. There is no current association with this identifier. The user consent has not been provided. @@ -2912,7 +2919,7 @@ Who are you working with? Make sure the right people have access to %s. Just me - A private space to organise your rooms + A private space to organize your rooms Me and teammates A private space for you & your teammates Public @@ -3070,7 +3077,7 @@ This invite to this space was sent to %s which is not associated with your account - Link this email with your account + Link this email address with your account %s in Settings to receive invites directly in ${app_name}. @@ -3177,6 +3184,7 @@ Open contacts Create poll Share location + Start a voice broadcast Show less @@ -3227,6 +3235,8 @@ Show All Sessions (V2, WIP) + Other sessions + For best security, verify your sessions and sign out from any session that you don’t recognize or use anymore. Mobile Web Desktop @@ -3244,6 +3254,7 @@ Verified · Last activity %1$s Unverified · Last activity %1$s + Unverified · Your current session Inactive for %1$d+ day (%2$s) @@ -3288,12 +3299,25 @@ No unverified sessions found. No inactive sessions found. Clear Filter + Sign out of this session Session details Application, device, and activity information. Session name Session ID Last activity IP address + Rename session + Session name + Custom session names can help you recognize your devices more easily. + Please be aware that session names are also visible to people you communicate with. + Inactive sessions + Inactive sessions are sessions you have not used in some time, but they continue to receive encryption keys.\n\nRemoving inactive sessions improves security and performance, and makes it easier for you to identify if a new session is suspicious. + Unverified sessions + Unverified sessions are sessions that have logged in with your credentials but not been cross-verified.\n\nYou should make especially certain that you recognise these sessions as they could represent an unauthorised use of your account. + Verified sessions + Verified sessions have logged in with your credentials and then been verified, either using your secure passphrase or by cross-verifying.\n\nThis means they hold encryption keys for your previous messages, and confirm to other users you are communicating with that these sessions are really you. + Renaming sessions + Other users in direct messages and rooms that you join are able to view a full list of your sessions.\n\nThis provides them with confidence that they are really speaking to you, but it also means they can see the session name you enter here. %s\nis looking a little empty. diff --git a/library/ui-styles/build.gradle b/library/ui-styles/build.gradle index bc7756efbc..7c6039824a 100644 --- a/library/ui-styles/build.gradle +++ b/library/ui-styles/build.gradle @@ -55,5 +55,5 @@ dependencies { // Pref theme implementation libs.androidx.preferenceKtx // dialpad dimen - implementation 'im.dlg:android-dialer:1.2.5' + implementation project(":library:external:dialpad") } diff --git a/library/ui-styles/src/debug/res/menu/menu_debug.xml b/library/ui-styles/src/debug/res/menu/menu_debug.xml index c58a29db8f..ac98ce8e2c 100644 --- a/library/ui-styles/src/debug/res/menu/menu_debug.xml +++ b/library/ui-styles/src/debug/res/menu/menu_debug.xml @@ -14,6 +14,7 @@ android:id="@+id/menuDebug2" android:icon="@drawable/ic_debug_icon" android:title="Send" - app:showAsAction="always" /> + app:showAsAction="always" + tools:ignore="AlwaysShowAction" /> - \ No newline at end of file + diff --git a/library/ui-styles/src/main/res/values/dimens.xml b/library/ui-styles/src/main/res/values/dimens.xml index 71d96c7e5c..4e0ac6fb9c 100644 --- a/library/ui-styles/src/main/res/values/dimens.xml +++ b/library/ui-styles/src/main/res/values/dimens.xml @@ -54,9 +54,9 @@ 28dp - 62dp - 300dp - 12dp + 6dp + 350sp + 8dp 0.05 diff --git a/library/ui-styles/src/main/res/values/stylable_session_warning_info_view.xml b/library/ui-styles/src/main/res/values/stylable_session_warning_info_view.xml new file mode 100644 index 0000000000..6236b31f46 --- /dev/null +++ b/library/ui-styles/src/main/res/values/stylable_session_warning_info_view.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/library/ui-styles/src/main/res/values/stylable_sessions_list_header_view.xml b/library/ui-styles/src/main/res/values/stylable_sessions_list_header_view.xml index d3b931e44a..098ec263fc 100644 --- a/library/ui-styles/src/main/res/values/stylable_sessions_list_header_view.xml +++ b/library/ui-styles/src/main/res/values/stylable_sessions_list_header_view.xml @@ -4,6 +4,7 @@ + diff --git a/library/ui-styles/src/main/res/values/styles_buttons.xml b/library/ui-styles/src/main/res/values/styles_buttons.xml index 993ff134ea..1200e5bf75 100644 --- a/library/ui-styles/src/main/res/values/styles_buttons.xml +++ b/library/ui-styles/src/main/res/values/styles_buttons.xml @@ -39,6 +39,10 @@ 24sp + +