Compare commits

..

115 Commits

Author SHA1 Message Date
dependabot[bot]
f074d0331d Bump sqlite-jdbc from 3.36.0.3 to 3.39.2.0 (#1449)
Bumps [sqlite-jdbc](https://github.com/xerial/sqlite-jdbc) from 3.36.0.3 to 3.39.2.0.
- [Release notes](https://github.com/xerial/sqlite-jdbc/releases)
- [Changelog](https://github.com/xerial/sqlite-jdbc/blob/master/CHANGELOG)
- [Commits](https://github.com/xerial/sqlite-jdbc/compare/3.36.0.3...3.39.2.0)

---
updated-dependencies:
- dependency-name: org.xerial:sqlite-jdbc
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-15 06:36:31 -05:00
Jakub Kalinowski
f94bc62a94 Replaced activity!! with requireActivity, context!! with requireContext etc. (#1458) 2022-08-15 06:36:03 -05:00
b0097fa45e Merge pull request #1450 from iSoron/dependabot/gradle/daggerVersion-2.43.2
Bump daggerVersion from 2.43.1 to 2.43.2
2022-08-14 05:09:35 -05:00
dependabot[bot]
15fa1fea8c Bump daggerVersion from 2.43.1 to 2.43.2
Bumps `daggerVersion` from 2.43.1 to 2.43.2.

Updates `dagger` from 2.43.1 to 2.43.2
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/dagger/compare/dagger-2.43.1...dagger-2.43.2)

Updates `dagger-compiler` from 2.43.1 to 2.43.2
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/dagger/compare/dagger-2.43.1...dagger-2.43.2)

---
updated-dependencies:
- dependency-name: com.google.dagger:dagger
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: com.google.dagger:dagger-compiler
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-13 16:00:55 +00:00
31368cff45 Merge pull request #1453 from iSoron/dependabot/gradle/org.jetbrains.kotlin-kotlin-stdlib-jdk8-1.7.10
Bump kotlin-stdlib-jdk8 from 1.7.0 to 1.7.10
2022-08-13 11:00:35 -05:00
b44dd96dd3 Merge pull request #1444 from iSoron/dependabot/gradle/org.jetbrains.kotlinx-kotlinx-coroutines-core-jvm-1.6.4
Bump kotlinx-coroutines-core-jvm from 1.6.3 to 1.6.4
2022-08-13 10:59:51 -05:00
dependabot[bot]
08fab0cd8d Bump kotlin-stdlib-jdk8 from 1.7.0 to 1.7.10
Bumps [kotlin-stdlib-jdk8](https://github.com/JetBrains/kotlin) from 1.7.0 to 1.7.10.
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/v1.7.10/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v1.7.0...v1.7.10)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlin:kotlin-stdlib-jdk8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-13 09:28:01 +00:00
dependabot[bot]
a142685d2e Bump kotlinx-coroutines-core-jvm from 1.6.3 to 1.6.4
Bumps [kotlinx-coroutines-core-jvm](https://github.com/Kotlin/kotlinx.coroutines) from 1.6.3 to 1.6.4.
- [Release notes](https://github.com/Kotlin/kotlinx.coroutines/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md)
- [Commits](https://github.com/Kotlin/kotlinx.coroutines/compare/1.6.3...1.6.4)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-13 09:27:25 +00:00
a7a95f2030 Merge pull request #1443 from iSoron/dependabot/gradle/org.jetbrains.kotlin-kotlin-stdlib-1.7.10
Bump kotlin-stdlib from 1.7.0 to 1.7.10
2022-08-13 04:26:42 -05:00
dependabot[bot]
d3c90481be Bump kotlin-stdlib from 1.7.0 to 1.7.10
Bumps [kotlin-stdlib](https://github.com/JetBrains/kotlin) from 1.7.0 to 1.7.10.
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/v1.7.10/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v1.7.0...v1.7.10)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlin:kotlin-stdlib
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-11 10:22:15 +00:00
f9bb0d7d7b Merge pull request #1445 from iSoron/dependabot/gradle/com.linkedin.dexmaker-dexmaker-mockito-2.28.3
Bump dexmaker-mockito from 2.28.1 to 2.28.3
2022-08-11 05:20:29 -05:00
f23a1bedee Merge pull request #1442 from iSoron/dependabot/gradle/daggerVersion-2.43.1
Bump daggerVersion from 2.42 to 2.43.1
2022-08-11 05:20:16 -05:00
dcf31ba115 Merge pull request #1441 from iSoron/dependabot/gradle/kxCoroutinesVersion-1.6.4
Bump kxCoroutinesVersion from 1.6.3 to 1.6.4
2022-08-11 05:20:04 -05:00
dependabot[bot]
5409a324e8 Bump dexmaker-mockito from 2.28.1 to 2.28.3
Bumps [dexmaker-mockito](https://github.com/linkedin/dexmaker) from 2.28.1 to 2.28.3.
- [Release notes](https://github.com/linkedin/dexmaker/releases)
- [Changelog](https://github.com/linkedin/dexmaker/blob/main/CHANGELOG.md)
- [Commits](https://github.com/linkedin/dexmaker/compare/2.28.1...2.28.3)

---
updated-dependencies:
- dependency-name: com.linkedin.dexmaker:dexmaker-mockito
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 03:04:42 +00:00
dependabot[bot]
504362e680 Bump daggerVersion from 2.42 to 2.43.1
Bumps `daggerVersion` from 2.42 to 2.43.1.

Updates `dagger` from 2.42 to 2.43.1
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/dagger/compare/dagger-2.42...dagger-2.43.1)

Updates `dagger-compiler` from 2.42 to 2.43.1
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/dagger/compare/dagger-2.42...dagger-2.43.1)

---
updated-dependencies:
- dependency-name: com.google.dagger:dagger
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: com.google.dagger:dagger-compiler
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 03:03:08 +00:00
dependabot[bot]
0ce2f8fae2 Bump kxCoroutinesVersion from 1.6.3 to 1.6.4
Bumps `kxCoroutinesVersion` from 1.6.3 to 1.6.4.

Updates `kotlinx-coroutines-android` from 1.6.3 to 1.6.4
- [Release notes](https://github.com/Kotlin/kotlinx.coroutines/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md)
- [Commits](https://github.com/Kotlin/kotlinx.coroutines/compare/1.6.3...1.6.4)

Updates `kotlinx-coroutines-core` from 1.6.3 to 1.6.4
- [Release notes](https://github.com/Kotlin/kotlinx.coroutines/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md)
- [Commits](https://github.com/Kotlin/kotlinx.coroutines/compare/1.6.3...1.6.4)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlinx:kotlinx-coroutines-android
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.jetbrains.kotlinx:kotlinx-coroutines-core
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 03:02:48 +00:00
2fc6c67432 Merge pull request #1425 from eduebernal/freq-display-normal
fix marker scaling in frequency display
2022-07-30 18:30:53 -05:00
459cf02642 Merge pull request #1370 from iSoron/number-popup
Replace NumberPickerDialog by NumberPopup
2022-07-30 18:30:32 -05:00
44cb64601f Update test screenshots 2022-07-30 17:28:46 -05:00
e4b16f6d59 Replace PopupWindow by Dialog
Fixes issues with copy & paste, text selection and spell checking.
2022-07-30 16:33:16 -05:00
3021e408a7 Remove unused imports 2022-07-24 06:01:40 -05:00
7649119db7 Popup: Do not save on dismiss 2022-07-24 05:47:52 -05:00
b0a4f26e7a Popup: Fix crash on suggestions 2022-07-24 05:47:52 -05:00
eduebernal
dd47d4cf08 fix getWeekdaysInMonth test 2022-07-06 15:09:10 -07:00
eduebernal
8912a9d73c add test for getWeekdaysInMonth 2022-07-06 10:48:58 -07:00
eduebernal
9bd1c6f685 change getWeekdaysInMonth method 2022-07-06 10:48:19 -07:00
eduebernal
e15e06034c remove unused maxFreq var and get method 2022-07-06 10:46:50 -07:00
eduebernal
a6180a5049 fix marker scaling in freq display 2022-07-05 21:41:27 -07:00
dependabot[bot]
7c69b17e77 Bump kxCoroutinesVersion from 1.6.2 to 1.6.3
Bumps `kxCoroutinesVersion` from 1.6.2 to 1.6.3.

Updates `kotlinx-coroutines-android` from 1.6.2 to 1.6.3
- [Release notes](https://github.com/Kotlin/kotlinx.coroutines/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md)
- [Commits](https://github.com/Kotlin/kotlinx.coroutines/compare/1.6.2...1.6.3)

Updates `kotlinx-coroutines-core` from 1.6.2 to 1.6.3
- [Release notes](https://github.com/Kotlin/kotlinx.coroutines/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md)
- [Commits](https://github.com/Kotlin/kotlinx.coroutines/compare/1.6.2...1.6.3)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlinx:kotlinx-coroutines-android
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.jetbrains.kotlinx:kotlinx-coroutines-core
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-04 07:42:04 +02:00
dependabot[bot]
602a40a532 Bump simpleclient_httpserver from 0.15.0 to 0.16.0
Bumps [simpleclient_httpserver](https://github.com/prometheus/client_java) from 0.15.0 to 0.16.0.
- [Release notes](https://github.com/prometheus/client_java/releases)
- [Commits](https://github.com/prometheus/client_java/compare/parent-0.15.0...parent-0.16.0)

---
updated-dependencies:
- dependency-name: io.prometheus:simpleclient_httpserver
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-03 21:27:22 +02:00
dependabot[bot]
e00998f913 Bump annotation from 1.3.0 to 1.4.0
Bumps annotation from 1.3.0 to 1.4.0.

---
updated-dependencies:
- dependency-name: androidx.annotation:annotation
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-03 21:26:54 +02:00
dependabot[bot]
af5914c2db Bump kotlinx-coroutines-core-jvm from 1.6.2 to 1.6.3
Bumps [kotlinx-coroutines-core-jvm](https://github.com/Kotlin/kotlinx.coroutines) from 1.6.2 to 1.6.3.
- [Release notes](https://github.com/Kotlin/kotlinx.coroutines/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md)
- [Commits](https://github.com/Kotlin/kotlinx.coroutines/compare/1.6.2...1.6.3)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-01 12:52:10 +02:00
dependabot[bot]
6c5f70638a Bump kotlin-stdlib-jdk8 from 1.6.21 to 1.7.0
Bumps [kotlin-stdlib-jdk8](https://github.com/JetBrains/kotlin) from 1.6.21 to 1.7.0.
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v1.6.21...v1.7.0)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlin:kotlin-stdlib-jdk8
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-01 12:51:50 +02:00
dependabot[bot]
ba88552919 Bump appcompat from 1.4.1 to 1.4.2
Bumps appcompat from 1.4.1 to 1.4.2.

---
updated-dependencies:
- dependency-name: androidx.appcompat:appcompat
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-01 07:09:30 +02:00
dependabot[bot]
8c90c4f68d Bump kotlin-stdlib from 1.6.21 to 1.7.0
Bumps [kotlin-stdlib](https://github.com/JetBrains/kotlin) from 1.6.21 to 1.7.0.
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v1.6.21...v1.7.0)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlin:kotlin-stdlib
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-01 07:09:11 +02:00
dependabot[bot]
08eb1a600d Bump simpleclient_hotspot from 0.15.0 to 0.16.0
Bumps [simpleclient_hotspot](https://github.com/prometheus/client_java) from 0.15.0 to 0.16.0.
- [Release notes](https://github.com/prometheus/client_java/releases)
- [Commits](https://github.com/prometheus/client_java/compare/parent-0.15.0...parent-0.16.0)

---
updated-dependencies:
- dependency-name: io.prometheus:simpleclient_hotspot
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-01 07:08:57 +02:00
dependabot[bot]
8ea0480d4a Bump simpleclient from 0.15.0 to 0.16.0
Bumps [simpleclient](https://github.com/prometheus/client_java) from 0.15.0 to 0.16.0.
- [Release notes](https://github.com/prometheus/client_java/releases)
- [Commits](https://github.com/prometheus/client_java/compare/parent-0.15.0...parent-0.16.0)

---
updated-dependencies:
- dependency-name: io.prometheus:simpleclient
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-01 07:08:46 +02:00
Hielke Morsink
36ee39589e Fix small typo in build instructions 2022-06-28 20:02:46 +02:00
dependabot[bot]
ac7a721940 Bump daggerVersion from 2.41 to 2.42
Bumps `daggerVersion` from 2.41 to 2.42.

Updates `dagger` from 2.41 to 2.42
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/dagger/compare/dagger-2.41...dagger-2.42)

Updates `dagger-compiler` from 2.41 to 2.42
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/dagger/compare/dagger-2.41...dagger-2.42)

---
updated-dependencies:
- dependency-name: com.google.dagger:dagger
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: com.google.dagger:dagger-compiler
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-02 10:30:33 +02:00
dependabot[bot]
b36ca8673a Bump kxCoroutinesVersion from 1.6.1 to 1.6.2
Bumps `kxCoroutinesVersion` from 1.6.1 to 1.6.2.

Updates `kotlinx-coroutines-android` from 1.6.1 to 1.6.2
- [Release notes](https://github.com/Kotlin/kotlinx.coroutines/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md)
- [Commits](https://github.com/Kotlin/kotlinx.coroutines/compare/1.6.1...1.6.2)

Updates `kotlinx-coroutines-core` from 1.6.1 to 1.6.2
- [Release notes](https://github.com/Kotlin/kotlinx.coroutines/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md)
- [Commits](https://github.com/Kotlin/kotlinx.coroutines/compare/1.6.1...1.6.2)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlinx:kotlinx-coroutines-android
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.jetbrains.kotlinx:kotlinx-coroutines-core
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-02 10:30:27 +02:00
dependabot[bot]
7cfac486f9 Bump org.jlleitschuh.gradle.ktlint from 10.2.1 to 10.3.0
Bumps org.jlleitschuh.gradle.ktlint from 10.2.1 to 10.3.0.

---
updated-dependencies:
- dependency-name: org.jlleitschuh.gradle.ktlint
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-01 23:07:05 +02:00
dependabot[bot]
21dd413ab5 Bump material from 1.5.0 to 1.6.1
Bumps [material](https://github.com/material-components/material-components-android) from 1.5.0 to 1.6.1.
- [Release notes](https://github.com/material-components/material-components-android/releases)
- [Commits](https://github.com/material-components/material-components-android/compare/1.5.0...1.6.1)

---
updated-dependencies:
- dependency-name: com.google.android.material:material
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-01 23:04:11 +02:00
dependabot[bot]
39e10638b5 Bump kotlinx-coroutines-core-jvm from 1.6.1 to 1.6.2
Bumps [kotlinx-coroutines-core-jvm](https://github.com/Kotlin/kotlinx.coroutines) from 1.6.1 to 1.6.2.
- [Release notes](https://github.com/Kotlin/kotlinx.coroutines/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md)
- [Commits](https://github.com/Kotlin/kotlinx.coroutines/compare/1.6.1...1.6.2)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-01 23:04:01 +02:00
d2d45991b0 Always show popups at the center of the screen; remove ScreenLocation 2022-05-13 06:37:41 -05:00
25aeafb759 Remove unused imports 2022-05-13 05:21:29 -05:00
9045ae5c24 Remove previous NumberPicker 2022-05-13 05:21:29 -05:00
555873354c Use NumberPopup in HistoryCard 2022-05-13 05:21:29 -05:00
2a012619a7 Use NumberPopup in widgets 2022-05-13 05:21:28 -05:00
d1de3a852b Implement NumberPopup 2022-05-13 05:21:28 -05:00
f04e37e905 Remove CheckmarkDialog 2022-05-03 04:09:13 -05:00
825a5f2cb9 Implement CheckmarkPopup 2022-05-03 04:09:13 -05:00
0de6896691 Add notes to DelayedToggle, make delay skipable 2022-05-03 04:09:13 -05:00
7187214282 Replace notesIndicator by notes 2022-05-03 04:09:13 -05:00
Jakub Kalinowski
9d4161a255 Issue 1332: Multiple numeric dialogs appearing (#1356)
Co-authored-by: Jakub Kalinowski <kalj@netcompany.com>
2022-05-01 20:01:13 -05:00
dependabot[bot]
d82a3c145d Bump kotlin-stdlib-jdk8 from 1.6.10 to 1.6.21
Bumps [kotlin-stdlib-jdk8](https://github.com/JetBrains/kotlin) from 1.6.10 to 1.6.21.
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/v1.6.21/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v1.6.10...v1.6.21)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlin:kotlin-stdlib-jdk8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-01 23:14:37 +02:00
dependabot[bot]
a6cbd44e42 Bump kotlinx-coroutines-core-jvm from 1.6.0 to 1.6.1
Bumps [kotlinx-coroutines-core-jvm](https://github.com/Kotlin/kotlinx.coroutines) from 1.6.0 to 1.6.1.
- [Release notes](https://github.com/Kotlin/kotlinx.coroutines/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md)
- [Commits](https://github.com/Kotlin/kotlinx.coroutines/compare/1.6.0...1.6.1)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-01 23:14:28 +02:00
dependabot[bot]
45c62b4ab2 Bump kxCoroutinesVersion from 1.6.0 to 1.6.1
Bumps `kxCoroutinesVersion` from 1.6.0 to 1.6.1.

Updates `kotlinx-coroutines-android` from 1.6.0 to 1.6.1
- [Release notes](https://github.com/Kotlin/kotlinx.coroutines/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md)
- [Commits](https://github.com/Kotlin/kotlinx.coroutines/compare/1.6.0...1.6.1)

Updates `kotlinx-coroutines-core` from 1.6.0 to 1.6.1
- [Release notes](https://github.com/Kotlin/kotlinx.coroutines/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md)
- [Commits](https://github.com/Kotlin/kotlinx.coroutines/compare/1.6.0...1.6.1)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlinx:kotlinx-coroutines-android
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.jetbrains.kotlinx:kotlinx-coroutines-core
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-01 19:44:14 +02:00
dependabot[bot]
d53312d261 Bump kotlin-stdlib from 1.6.10 to 1.6.21
Bumps [kotlin-stdlib](https://github.com/JetBrains/kotlin) from 1.6.10 to 1.6.21.
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/v1.6.21/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v1.6.10...v1.6.21)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlin:kotlin-stdlib
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-01 19:43:58 +02:00
Quentin Hibon
c453810785 Resort habit list after habit edit (#1350)
* Add regression test for #1131
* Resort habit list after habit edit

Fixes #1131.
2022-04-21 11:29:42 -05:00
Quentin Hibon
999057300b Bump kotlin from 1.5.0 to 1.6.10 (#1349) 2022-04-15 15:40:36 -05:00
Quentin Hibon
2245347e28 Clean up SDK_INT branches (#1348)
Fixes #1347.
2022-04-15 09:34:43 -05:00
Kürşad Bumin Giray Saka
b79f7850ed Add archive actions if there are archived habits (#1345) 2022-04-11 20:50:44 -05:00
dependabot[bot]
4469f86e46 Bump logback-classic from 1.2.10 to 1.2.11
Bumps logback-classic from 1.2.10 to 1.2.11.

---
updated-dependencies:
- dependency-name: ch.qos.logback:logback-classic
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-01 21:44:03 +02:00
dependabot[bot]
bdeddb149e Bump ktorVersion from 1.6.7 to 1.6.8
Bumps `ktorVersion` from 1.6.7 to 1.6.8.

Updates `ktor-client-mock` from 1.6.7 to 1.6.8
- [Release notes](https://github.com/ktorio/ktor/releases)
- [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ktorio/ktor/compare/1.6.7...1.6.8)

Updates `ktor-jackson` from 1.6.7 to 1.6.8
- [Release notes](https://github.com/ktorio/ktor/releases)
- [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ktorio/ktor/compare/1.6.7...1.6.8)

Updates `ktor-client-android` from 1.6.7 to 1.6.8
- [Release notes](https://github.com/ktorio/ktor/releases)
- [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ktorio/ktor/compare/1.6.7...1.6.8)

Updates `ktor-client-core` from 1.6.7 to 1.6.8
- [Release notes](https://github.com/ktorio/ktor/releases)
- [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ktorio/ktor/compare/1.6.7...1.6.8)

Updates `ktor-client-jackson` from 1.6.7 to 1.6.8
- [Release notes](https://github.com/ktorio/ktor/releases)
- [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ktorio/ktor/compare/1.6.7...1.6.8)

Updates `ktor-client-json` from 1.6.7 to 1.6.8
- [Release notes](https://github.com/ktorio/ktor/releases)
- [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ktorio/ktor/compare/1.6.7...1.6.8)

Updates `ktor-server-netty` from 1.6.7 to 1.6.8
- [Release notes](https://github.com/ktorio/ktor/releases)
- [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ktorio/ktor/compare/1.6.7...1.6.8)

Updates `ktor-server-core` from 1.6.7 to 1.6.8
- [Release notes](https://github.com/ktorio/ktor/releases)
- [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ktorio/ktor/compare/1.6.7...1.6.8)

Updates `ktor-html-builder` from 1.6.7 to 1.6.8
- [Release notes](https://github.com/ktorio/ktor/releases)
- [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ktorio/ktor/compare/1.6.7...1.6.8)

Updates `ktor-server-tests` from 1.6.7 to 1.6.8
- [Release notes](https://github.com/ktorio/ktor/releases)
- [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ktorio/ktor/compare/1.6.7...1.6.8)

---
updated-dependencies:
- dependency-name: io.ktor:ktor-client-mock
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: io.ktor:ktor-jackson
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: io.ktor:ktor-client-android
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: io.ktor:ktor-client-core
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: io.ktor:ktor-client-jackson
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: io.ktor:ktor-client-json
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: io.ktor:ktor-server-netty
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: io.ktor:ktor-server-core
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: io.ktor:ktor-html-builder
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: io.ktor:ktor-server-tests
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-01 21:43:45 +02:00
Jakub Kalinowski
3b12ec4bfe Issue 1316: Skip measurable habit (#1319)
Co-authored-by: Jakub Kalinowski <kalj@netcompany.com>
2022-03-24 06:08:31 -05:00
ca4618579e Reduce toggle delay 2022-03-20 18:55:19 -05:00
2f13aba22c CheckmarkButtonView: Make focusable 2022-03-20 18:55:19 -05:00
dba5912ecd Remove leading/trailing whitespace from notes 2022-03-20 18:55:18 -05:00
88b8663484 Remove pref_led_notifications 2022-03-20 18:55:18 -05:00
609886fd09 Fix iOS build scripts 2022-03-20 11:14:53 -05:00
a4db997e06 Merge pull request #1314 from kalina559/feature/case_1282_calendar_bug
Fixed edit history calendar bug
2022-03-10 06:05:04 -06:00
Jakub Kalinowski
090216ccb7 Fixed edit history calendar bug 2022-03-05 19:54:48 +01:00
dependabot[bot]
472092d1bf Bump simpleclient from 0.14.1 to 0.15.0
Bumps [simpleclient](https://github.com/prometheus/client_java) from 0.14.1 to 0.15.0.
- [Release notes](https://github.com/prometheus/client_java/releases)
- [Commits](https://github.com/prometheus/client_java/compare/parent-0.14.1...parent-0.15.0)

---
updated-dependencies:
- dependency-name: io.prometheus:simpleclient
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-01 21:14:31 +01:00
dependabot[bot]
6d3791de31 Bump daggerVersion from 2.40.5 to 2.41
Bumps `daggerVersion` from 2.40.5 to 2.41.

Updates `dagger` from 2.40.5 to 2.41
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/dagger/compare/dagger-2.40.5...dagger-2.41)

Updates `dagger-compiler` from 2.40.5 to 2.41
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/dagger/compare/dagger-2.40.5...dagger-2.41)

---
updated-dependencies:
- dependency-name: com.google.dagger:dagger
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: com.google.dagger:dagger-compiler
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-01 18:17:46 +01:00
dependabot[bot]
24a99d5791 Bump simpleclient_httpserver from 0.14.1 to 0.15.0
Bumps [simpleclient_httpserver](https://github.com/prometheus/client_java) from 0.14.1 to 0.15.0.
- [Release notes](https://github.com/prometheus/client_java/releases)
- [Commits](https://github.com/prometheus/client_java/compare/parent-0.14.1...parent-0.15.0)

---
updated-dependencies:
- dependency-name: io.prometheus:simpleclient_httpserver
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-01 18:17:39 +01:00
dependabot[bot]
6c631b1cf6 Bump opencsv from 5.5.2 to 5.6
Bumps opencsv from 5.5.2 to 5.6.

---
updated-dependencies:
- dependency-name: com.opencsv:opencsv
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-01 10:11:09 +01:00
dependabot[bot]
5d7677b354 Bump guava from 31.0.1-android to 31.1-android
Bumps [guava](https://github.com/google/guava) from 31.0.1-android to 31.1-android.
- [Release notes](https://github.com/google/guava/releases)
- [Commits](https://github.com/google/guava/commits)

---
updated-dependencies:
- dependency-name: com.google.guava:guava
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-01 10:05:35 +01:00
dependabot[bot]
22820f4f24 Bump simpleclient_hotspot from 0.14.1 to 0.15.0
Bumps [simpleclient_hotspot](https://github.com/prometheus/client_java) from 0.14.1 to 0.15.0.
- [Release notes](https://github.com/prometheus/client_java/releases)
- [Commits](https://github.com/prometheus/client_java/compare/parent-0.14.1...parent-0.15.0)

---
updated-dependencies:
- dependency-name: io.prometheus:simpleclient_hotspot
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-01 10:05:09 +01:00
1d3bd48535 Merge pull request #1278 from hiqua/fix_habit_bull_numerical
Handle numerical habits from HabitBull
2022-02-02 03:08:30 -06:00
dependabot[bot]
694446b7e3 Bump appcompat from 1.4.0 to 1.4.1
Bumps appcompat from 1.4.0 to 1.4.1.

---
updated-dependencies:
- dependency-name: androidx.appcompat:appcompat
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-01 12:13:14 +01:00
dependabot[bot]
20ae9d247e Bump material from 1.4.0 to 1.5.0
Bumps [material](https://github.com/material-components/material-components-android) from 1.4.0 to 1.5.0.
- [Release notes](https://github.com/material-components/material-components-android/releases)
- [Commits](https://github.com/material-components/material-components-android/compare/1.4.0...1.5.0)

---
updated-dependencies:
- dependency-name: com.google.android.material:material
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-01 10:39:54 +01:00
dependabot[bot]
1943fac610 Bump AppIntro from 6.1.0 to 6.2.0
Bumps [AppIntro](https://github.com/AppIntro/AppIntro) from 6.1.0 to 6.2.0.
- [Release notes](https://github.com/AppIntro/AppIntro/releases)
- [Changelog](https://github.com/AppIntro/AppIntro/blob/main/CHANGELOG.md)
- [Commits](https://github.com/AppIntro/AppIntro/compare/6.1.0...6.2.0)

---
updated-dependencies:
- dependency-name: com.github.AppIntro:AppIntro
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-01 10:39:47 +01:00
Quentin Hibon
a07a50e635 Handle numerical habits from HabitBull
Fixes #1265.
2022-01-27 20:33:17 +01:00
Quentin Hibon
8ccb9bbab1 Bumps appcompat from 1.3.1 to 1.4.0. 2022-01-09 07:21:12 +01:00
Quentin Hibon
743b8d26ad gradle.properties: remove deprecated MaxPermSize parameter 2022-01-08 22:49:40 +01:00
dependabot[bot]
c47bd4c328 Bump kotlin-stdlib-jdk8 from 1.6.0 to 1.6.10
Bumps [kotlin-stdlib-jdk8](https://github.com/JetBrains/kotlin) from 1.6.0 to 1.6.10.
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v1.6.0...v1.6.10)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlin:kotlin-stdlib-jdk8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-05 10:03:59 +01:00
dependabot[bot]
d84abc3a6a Bump com.github.johnrengelman.shadow from 7.1.0 to 7.1.2
Bumps com.github.johnrengelman.shadow from 7.1.0 to 7.1.2.

---
updated-dependencies:
- dependency-name: com.github.johnrengelman.shadow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-05 10:03:52 +01:00
dependabot[bot]
4ae85f1ec0 Bump kotlin-stdlib from 1.6.0 to 1.6.10
Bumps [kotlin-stdlib](https://github.com/JetBrains/kotlin) from 1.6.0 to 1.6.10.
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v1.6.0...v1.6.10)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlin:kotlin-stdlib
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-05 10:03:44 +01:00
dependabot[bot]
79d40d1d79 Bump simpleclient_hotspot from 0.12.0 to 0.14.1
Bumps [simpleclient_hotspot](https://github.com/prometheus/client_java) from 0.12.0 to 0.14.1.
- [Release notes](https://github.com/prometheus/client_java/releases)
- [Commits](https://github.com/prometheus/client_java/compare/parent-0.12.0...parent-0.14.1)

---
updated-dependencies:
- dependency-name: io.prometheus:simpleclient_hotspot
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-04 19:04:33 +01:00
dependabot[bot]
1902b8821e Bump kxCoroutinesVersion from 1.5.2 to 1.6.0
Bumps `kxCoroutinesVersion` from 1.5.2 to 1.6.0.

Updates `kotlinx-coroutines-android` from 1.5.2 to 1.6.0
- [Release notes](https://github.com/Kotlin/kotlinx.coroutines/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md)
- [Commits](https://github.com/Kotlin/kotlinx.coroutines/compare/1.5.2...1.6.0)

Updates `kotlinx-coroutines-core` from 1.5.2 to 1.6.0
- [Release notes](https://github.com/Kotlin/kotlinx.coroutines/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md)
- [Commits](https://github.com/Kotlin/kotlinx.coroutines/compare/1.5.2...1.6.0)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlinx:kotlinx-coroutines-android
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.jetbrains.kotlinx:kotlinx-coroutines-core
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-04 19:04:22 +01:00
dependabot[bot]
075542d605 Bump org.jlleitschuh.gradle.ktlint from 10.2.0 to 10.2.1
Bumps org.jlleitschuh.gradle.ktlint from 10.2.0 to 10.2.1.

---
updated-dependencies:
- dependency-name: org.jlleitschuh.gradle.ktlint
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-04 19:04:16 +01:00
dependabot[bot]
0b5894ee6d Bump daggerVersion from 2.40.3 to 2.40.5
Bumps `daggerVersion` from 2.40.3 to 2.40.5.

Updates `dagger` from 2.40.3 to 2.40.5
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/dagger/compare/dagger-2.40.3...dagger-2.40.5)

Updates `dagger-compiler` from 2.40.3 to 2.40.5
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/dagger/compare/dagger-2.40.3...dagger-2.40.5)

---
updated-dependencies:
- dependency-name: com.google.dagger:dagger
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: com.google.dagger:dagger-compiler
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-03 22:49:41 +01:00
dependabot[bot]
92fb9dbdb6 Bump simpleclient_httpserver from 0.12.0 to 0.14.1
Bumps [simpleclient_httpserver](https://github.com/prometheus/client_java) from 0.12.0 to 0.14.1.
- [Release notes](https://github.com/prometheus/client_java/releases)
- [Commits](https://github.com/prometheus/client_java/compare/parent-0.12.0...parent-0.14.1)

---
updated-dependencies:
- dependency-name: io.prometheus:simpleclient_httpserver
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-03 22:49:29 +01:00
dependabot[bot]
1860abf532 Bump kotlinx-coroutines-core-jvm from 1.5.2 to 1.6.0
Bumps [kotlinx-coroutines-core-jvm](https://github.com/Kotlin/kotlinx.coroutines) from 1.5.2 to 1.6.0.
- [Release notes](https://github.com/Kotlin/kotlinx.coroutines/releases)
- [Changelog](https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md)
- [Commits](https://github.com/Kotlin/kotlinx.coroutines/compare/1.5.2...1.6.0)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-02 21:42:17 +01:00
dependabot[bot]
3f4780c9fb Bump ktorVersion from 1.6.6 to 1.6.7
Bumps `ktorVersion` from 1.6.6 to 1.6.7.

Updates `ktor-client-mock` from 1.6.6 to 1.6.7
- [Release notes](https://github.com/ktorio/ktor/releases)
- [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ktorio/ktor/compare/1.6.6...1.6.7)

Updates `ktor-jackson` from 1.6.6 to 1.6.7
- [Release notes](https://github.com/ktorio/ktor/releases)
- [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ktorio/ktor/compare/1.6.6...1.6.7)

Updates `ktor-client-android` from 1.6.6 to 1.6.7
- [Release notes](https://github.com/ktorio/ktor/releases)
- [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ktorio/ktor/compare/1.6.6...1.6.7)

Updates `ktor-client-core` from 1.6.6 to 1.6.7
- [Release notes](https://github.com/ktorio/ktor/releases)
- [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ktorio/ktor/compare/1.6.6...1.6.7)

Updates `ktor-client-jackson` from 1.6.6 to 1.6.7
- [Release notes](https://github.com/ktorio/ktor/releases)
- [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ktorio/ktor/compare/1.6.6...1.6.7)

Updates `ktor-client-json` from 1.6.6 to 1.6.7
- [Release notes](https://github.com/ktorio/ktor/releases)
- [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ktorio/ktor/compare/1.6.6...1.6.7)

Updates `ktor-server-netty` from 1.6.6 to 1.6.7
- [Release notes](https://github.com/ktorio/ktor/releases)
- [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ktorio/ktor/compare/1.6.6...1.6.7)

Updates `ktor-server-core` from 1.6.6 to 1.6.7
- [Release notes](https://github.com/ktorio/ktor/releases)
- [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ktorio/ktor/compare/1.6.6...1.6.7)

Updates `ktor-html-builder` from 1.6.6 to 1.6.7
- [Release notes](https://github.com/ktorio/ktor/releases)
- [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ktorio/ktor/compare/1.6.6...1.6.7)

Updates `ktor-server-tests` from 1.6.6 to 1.6.7
- [Release notes](https://github.com/ktorio/ktor/releases)
- [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ktorio/ktor/compare/1.6.6...1.6.7)

---
updated-dependencies:
- dependency-name: io.ktor:ktor-client-mock
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: io.ktor:ktor-jackson
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: io.ktor:ktor-client-android
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: io.ktor:ktor-client-core
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: io.ktor:ktor-client-jackson
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: io.ktor:ktor-client-json
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: io.ktor:ktor-server-netty
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: io.ktor:ktor-server-core
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: io.ktor:ktor-html-builder
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: io.ktor:ktor-server-tests
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-02 21:42:00 +01:00
dependabot[bot]
d5d6e4616e Bump logback-classic from 1.2.7 to 1.2.10
Bumps logback-classic from 1.2.7 to 1.2.10.

---
updated-dependencies:
- dependency-name: ch.qos.logback:logback-classic
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-02 21:41:52 +01:00
dependabot[bot]
18e267053d Bump simpleclient from 0.12.0 to 0.14.1
Bumps [simpleclient](https://github.com/prometheus/client_java) from 0.12.0 to 0.14.1.
- [Release notes](https://github.com/prometheus/client_java/releases)
- [Commits](https://github.com/prometheus/client_java/compare/parent-0.12.0...parent-0.14.1)

---
updated-dependencies:
- dependency-name: io.prometheus:simpleclient
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-02 21:41:44 +01:00
7ba9a7e4e7 Update translations 2022-01-02 11:16:21 -06:00
5b8a7c39e2 HistoryCard: Make colors more consistent for AT_MOST habits 2022-01-02 11:06:37 -06:00
d40a5a89cd Notes: Update test screenshots 2022-01-01 08:06:45 -06:00
308d558347 NumberPicker: Show keyboard more reliably 2022-01-01 07:36:40 -06:00
9770ce187a NumberPicker: Fix formatting 2022-01-01 07:28:40 -06:00
535bc03b70 NumberPicker: Clear focus of both pickers 2022-01-01 07:22:26 -06:00
642e45af89 NumberPicker: Replace "5" by "50" instead of "05" on decimal picker 2022-01-01 07:21:29 -06:00
56d2307b75 Habit notes: left align 2022-01-01 06:40:28 -06:00
d875af8a8e CheckmarkDialog: Format date using current locale 2022-01-01 06:30:57 -06:00
feeb4f057d Update translations 2021-12-29 10:10:09 -06:00
1ad5c6b896 Restore x_times_per_y_days translations 2021-12-29 10:01:22 -06:00
baee3b9f86 Merge branch 'sdk_30_31' into dev 2021-12-29 08:51:20 -06:00
e6167baab1 NotificationTray: Use isCompletedToday instead of value != UNKNOWN 2021-12-29 08:13:54 -06:00
Quentin Hibon
1c15e7742e Disable custom snoozing for recent Android 2021-12-11 15:22:37 +01:00
Quentin Hibon
072ba63789 Add immutable flag to pending intents 2021-12-11 15:22:37 +01:00
Quentin Hibon
0fa0daa058 Ask for SCHEDULE_EXACT_ALARM permission 2021-12-11 15:22:37 +01:00
Quentin Hibon
5a5ed3d631 Bump SDK from 30 to 31 2021-12-11 15:22:37 +01:00
Quentin Hibon
3dfa376f59 Remove deprecated bintray repositories 2021-12-11 13:51:30 +01:00
118 changed files with 1669 additions and 986 deletions

View File

@@ -1,11 +1,11 @@
plugins { plugins {
val kotlinVersion = "1.5.0" val kotlinVersion = "1.6.10"
id("com.android.application") version ("7.0.3") apply (false) id("com.android.application") version ("7.0.3") apply (false)
id("org.jetbrains.kotlin.android") version kotlinVersion apply (false) id("org.jetbrains.kotlin.android") version kotlinVersion apply (false)
id("org.jetbrains.kotlin.kapt") version kotlinVersion apply (false) id("org.jetbrains.kotlin.kapt") version kotlinVersion apply (false)
id("org.jetbrains.kotlin.android.extensions") version kotlinVersion apply (false) id("org.jetbrains.kotlin.android.extensions") version kotlinVersion apply (false)
id("org.jetbrains.kotlin.multiplatform") version kotlinVersion apply (false) id("org.jetbrains.kotlin.multiplatform") version kotlinVersion apply (false)
id("org.jlleitschuh.gradle.ktlint") version "10.2.0" id("org.jlleitschuh.gradle.ktlint") version "10.3.0"
} }
apply { apply {

View File

@@ -33,7 +33,7 @@ The repository will be downloaded to the directory `uhabits`.
2. When the IDE asks you for the project location, select `uhabits` and click "Ok". 2. When the IDE asks you for the project location, select `uhabits` and click "Ok".
3. Android Studio will spend some time indexing the project. When this is complete, click the toolbar icon "Sync Project with Gradle File", located near the right corner of the top toolbar. 3. Android Studio will spend some time indexing the project. When this is complete, click the toolbar icon "Sync Project with Gradle File", located near the right corner of the top toolbar.
4. The operation will likely fail several times due to missing Android SDK components. Each time it fails, click the link "Install missing platforms", "Install build tools", etc, and try again. 4. The operation will likely fail several times due to missing Android SDK components. Each time it fails, click the link "Install missing platforms", "Install build tools", etc, and try again.
5. To test the application, create a virtual Android device using the menu "Tools" and "AVD Manager". The default options should work fine, but free to customize the device. 5. To test the application, create a virtual Android device using the menu "Tools" and "AVD Manager". The default options should work fine, but feel free to customize the device.
6. Click the menu "Run" and "uhabits-android". The application should launch. 6. Click the menu "Run" and "uhabits-android". The application should launch.

View File

@@ -1,5 +1,5 @@
org.gradle.parallel=false org.gradle.parallel=false
org.gradle.daemon=true org.gradle.daemon=true
org.gradle.jvmargs=-Xms2048m -Xmx2048m -XX:MaxPermSize=2048m org.gradle.jvmargs=-Xms2048m -Xmx2048m
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=true android.enableJetifier=true

View File

@@ -86,29 +86,29 @@ android {
} }
dependencies { dependencies {
val daggerVersion = "2.40.3" val daggerVersion = "2.43.2"
val kotlinVersion = "1.6.0" val kotlinVersion = "1.7.10"
val kxCoroutinesVersion = "1.5.2" val kxCoroutinesVersion = "1.6.4"
val ktorVersion = "1.6.6" val ktorVersion = "1.6.8"
val espressoVersion = "3.4.0" val espressoVersion = "3.4.0"
androidTestImplementation("androidx.test.espresso:espresso-contrib:$espressoVersion") androidTestImplementation("androidx.test.espresso:espresso-contrib:$espressoVersion")
androidTestImplementation("androidx.test.espresso:espresso-core:$espressoVersion") androidTestImplementation("androidx.test.espresso:espresso-core:$espressoVersion")
androidTestImplementation("com.google.dagger:dagger:$daggerVersion") androidTestImplementation("com.google.dagger:dagger:$daggerVersion")
androidTestImplementation("com.linkedin.dexmaker:dexmaker-mockito:2.28.1") androidTestImplementation("com.linkedin.dexmaker:dexmaker-mockito:2.28.3")
androidTestImplementation("io.ktor:ktor-client-mock:$ktorVersion") androidTestImplementation("io.ktor:ktor-client-mock:$ktorVersion")
androidTestImplementation("io.ktor:ktor-jackson:$ktorVersion") androidTestImplementation("io.ktor:ktor-jackson:$ktorVersion")
androidTestImplementation("androidx.annotation:annotation:1.3.0") androidTestImplementation("androidx.annotation:annotation:1.4.0")
androidTestImplementation("androidx.test.ext:junit:1.1.3") androidTestImplementation("androidx.test.ext:junit:1.1.3")
androidTestImplementation("androidx.test.uiautomator:uiautomator:2.2.0") androidTestImplementation("androidx.test.uiautomator:uiautomator:2.2.0")
androidTestImplementation("androidx.test:rules:1.4.0") androidTestImplementation("androidx.test:rules:1.4.0")
androidTestImplementation("com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0") androidTestImplementation("com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0")
compileOnly("javax.annotation:jsr250-api:1.0") compileOnly("javax.annotation:jsr250-api:1.0")
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.1.5") coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.1.5")
implementation("com.github.AppIntro:AppIntro:6.1.0") implementation("com.github.AppIntro:AppIntro:6.2.0")
implementation("com.google.code.findbugs:jsr305:3.0.2") implementation("com.google.code.findbugs:jsr305:3.0.2")
implementation("com.google.dagger:dagger:$daggerVersion") implementation("com.google.dagger:dagger:$daggerVersion")
implementation("com.google.guava:guava:31.0.1-android") implementation("com.google.guava:guava:31.1-android")
implementation("io.ktor:ktor-client-android:$ktorVersion") implementation("io.ktor:ktor-client-android:$ktorVersion")
implementation("io.ktor:ktor-client-core:$ktorVersion") implementation("io.ktor:ktor-client-core:$ktorVersion")
implementation("io.ktor:ktor-client-jackson:$ktorVersion") implementation("io.ktor:ktor-client-jackson:$ktorVersion")
@@ -116,11 +116,11 @@ dependencies {
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion") implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:$kxCoroutinesVersion") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:$kxCoroutinesVersion")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kxCoroutinesVersion") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kxCoroutinesVersion")
implementation("androidx.appcompat:appcompat:1.3.1") implementation("androidx.appcompat:appcompat:1.4.2")
implementation("androidx.legacy:legacy-preference-v14:1.0.0") implementation("androidx.legacy:legacy-preference-v14:1.0.0")
implementation("androidx.legacy:legacy-support-v4:1.0.0") implementation("androidx.legacy:legacy-support-v4:1.0.0")
implementation("com.google.android.material:material:1.4.0") implementation("com.google.android.material:material:1.6.1")
implementation("com.opencsv:opencsv:5.5.2") implementation("com.opencsv:opencsv:5.6")
implementation(project(":uhabits-core")) implementation(project(":uhabits-core"))
kapt("com.google.dagger:dagger-compiler:$daggerVersion") kapt("com.google.dagger:dagger-compiler:$daggerVersion")
kaptAndroidTest("com.google.dagger:dagger-compiler:$daggerVersion") kaptAndroidTest("com.google.dagger:dagger-compiler:$daggerVersion")

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -18,7 +18,8 @@
*/ */
package org.isoron.uhabits.acceptance.steps package org.isoron.uhabits.acceptance.steps
import android.os.Build.VERSION import android.os.Build
import android.os.Build.VERSION.SDK_INT
import androidx.annotation.StringRes import androidx.annotation.StringRes
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import androidx.test.espresso.Espresso import androidx.test.espresso.Espresso
@@ -133,7 +134,7 @@ object CommonSteps : BaseUserInterfaceTest() {
@Throws(Exception::class) @Throws(Exception::class)
fun verifyOpensWebsite(url: String?) { fun verifyOpensWebsite(url: String?) {
var browserPkg = "org.chromium.webview_shell" var browserPkg = "org.chromium.webview_shell"
if (VERSION.SDK_INT <= 23) { if (SDK_INT <= Build.VERSION_CODES.M) {
browserPkg = "com.android.browser" browserPkg = "com.android.browser"
} }
assertTrue(device.wait(Until.hasObject(By.pkg(browserPkg)), 5000)) assertTrue(device.wait(Until.hasObject(By.pkg(browserPkg)), 5000))
@@ -178,6 +179,22 @@ object CommonSteps : BaseUserInterfaceTest() {
EditHabitSteps.clickSave() EditHabitSteps.clickSave()
} }
fun changeFrequencyToDaily(habitName: String) {
clickText(habitName)
Espresso.onView(ViewMatchers.withId(R.id.action_edit_habit)).perform(ViewActions.click())
EditHabitSteps.pickDailyFrequency()
EditHabitSteps.clickSave()
pressBack()
}
fun changeFrequencyToMonthly(habitName: String) {
clickText(habitName)
Espresso.onView(ViewMatchers.withId(R.id.action_edit_habit)).perform(ViewActions.click())
EditHabitSteps.pickMonthFrequency()
EditHabitSteps.clickSave()
pressBack()
}
enum class Screen { enum class Screen {
LIST_HABITS, SHOW_HABIT, EDIT_HABIT, SELECT_HABIT_TYPE LIST_HABITS, SHOW_HABIT, EDIT_HABIT, SELECT_HABIT_TYPE
} }

View File

@@ -36,6 +36,24 @@ object EditHabitSteps {
Espresso.onView(ViewMatchers.withText("SAVE")).perform(ViewActions.click()) Espresso.onView(ViewMatchers.withText("SAVE")).perform(ViewActions.click())
} }
fun pickMonthFrequency() {
Espresso.onView(ViewMatchers.withId(R.id.boolean_frequency_picker))
.perform(ViewActions.click())
Espresso.onView(ViewMatchers.withId(R.id.xTimesPerMonthRadioButton))
.perform(ViewActions.click())
Espresso.onView(ViewMatchers.withId(R.id.xTimesPerMonthTextView))
.perform(ViewActions.replaceText("1"))
Espresso.onView(ViewMatchers.withText("SAVE")).perform(ViewActions.click())
}
fun pickDailyFrequency() {
Espresso.onView(ViewMatchers.withId(R.id.boolean_frequency_picker))
.perform(ViewActions.click())
Espresso.onView(ViewMatchers.withId(R.id.everyDayRadioButton))
.perform(ViewActions.click())
Espresso.onView(ViewMatchers.withText("SAVE")).perform(ViewActions.click())
}
fun pickColor(color: Int) { fun pickColor(color: Int) {
Espresso.onView(ViewMatchers.withId(R.id.colorButton)).perform(ViewActions.click()) Espresso.onView(ViewMatchers.withId(R.id.colorButton)).perform(ViewActions.click())
BaseUserInterfaceTest.device.findObject(By.descStartsWith(String.format("Color %d", color))) BaseUserInterfaceTest.device.findObject(By.descStartsWith(String.format("Color %d", color)))

View File

@@ -120,6 +120,12 @@ object ListHabitsSteps {
BaseUserInterfaceTest.device.waitForIdle() BaseUserInterfaceTest.device.waitForIdle()
} }
fun changeSort(sortText: String) {
clickViewWithId(R.id.action_filter)
Espresso.onView(ViewMatchers.withText("Sort")).perform(ViewActions.click())
Espresso.onView(ViewMatchers.withText(sortText)).perform(ViewActions.click())
}
enum class MenuItem { enum class MenuItem {
ABOUT, HELP, SETTINGS, EDIT, DELETE, ARCHIVE, TOGGLE_ARCHIVED, UNARCHIVE, TOGGLE_COMPLETED, ADD ABOUT, HELP, SETTINGS, EDIT, DELETE, ARCHIVE, TOGGLE_ARCHIVED, UNARCHIVE, TOGGLE_COMPLETED, ADD
} }

View File

@@ -18,7 +18,7 @@
*/ */
package org.isoron.uhabits.acceptance.steps package org.isoron.uhabits.acceptance.steps
import android.os.Build.VERSION import android.os.Build.VERSION.SDK_INT
import androidx.test.uiautomator.UiScrollable import androidx.test.uiautomator.UiScrollable
import androidx.test.uiautomator.UiSelector import androidx.test.uiautomator.UiSelector
import junit.framework.Assert.assertFalse import junit.framework.Assert.assertFalse
@@ -50,29 +50,21 @@ object WidgetSteps {
private fun openWidgetScreen() { private fun openWidgetScreen() {
val h = BaseUserInterfaceTest.device.displayHeight val h = BaseUserInterfaceTest.device.displayHeight
val w = BaseUserInterfaceTest.device.displayWidth val w = BaseUserInterfaceTest.device.displayWidth
if (VERSION.SDK_INT <= 21) { val listId = "com.android.launcher3:id/widgets_list_view"
BaseUserInterfaceTest.device.pressHome() BaseUserInterfaceTest.device.pressHome()
BaseUserInterfaceTest.device.waitForIdle() BaseUserInterfaceTest.device.waitForIdle()
BaseUserInterfaceTest.device.findObject(UiSelector().description("Apps")).click() BaseUserInterfaceTest.device.drag(w / 2, h / 2, w / 2, h / 2, 8)
BaseUserInterfaceTest.device.findObject(UiSelector().description("Apps")).click() var button = BaseUserInterfaceTest.device.findObject(UiSelector().text("WIDGETS"))
BaseUserInterfaceTest.device.findObject(UiSelector().description("Widgets")).click() if (!button.waitForExists(1000)) {
} else { button = BaseUserInterfaceTest.device.findObject(UiSelector().text("Widgets"))
val listId = "com.android.launcher3:id/widgets_list_view"
BaseUserInterfaceTest.device.pressHome()
BaseUserInterfaceTest.device.waitForIdle()
BaseUserInterfaceTest.device.drag(w / 2, h / 2, w / 2, h / 2, 8)
var button = BaseUserInterfaceTest.device.findObject(UiSelector().text("WIDGETS"))
if (!button.waitForExists(1000)) {
button = BaseUserInterfaceTest.device.findObject(UiSelector().text("Widgets"))
}
button.click()
if (VERSION.SDK_INT >= 28) {
UiScrollable(UiSelector().resourceId(listId))
.scrollForward()
}
UiScrollable(UiSelector().resourceId(listId))
.scrollIntoView(UiSelector().text("Checkmark"))
} }
button.click()
if (SDK_INT >= 28) {
UiScrollable(UiSelector().resourceId(listId))
.scrollForward()
}
UiScrollable(UiSelector().resourceId(listId))
.scrollIntoView(UiSelector().text("Checkmark"))
} }
@Throws(Exception::class) @Throws(Exception::class)

View File

@@ -36,6 +36,7 @@ class EntryButtonViewTest : BaseViewTest() {
lateinit var view: CheckmarkButtonView lateinit var view: CheckmarkButtonView
var toggled = false var toggled = false
var edited = false
@Before @Before
override fun setUp() { override fun setUp() {
@@ -43,7 +44,8 @@ class EntryButtonViewTest : BaseViewTest() {
view = component.getEntryButtonViewFactory().create().apply { view = component.getEntryButtonViewFactory().create().apply {
value = Entry.NO value = Entry.NO
color = PaletteUtils.getAndroidTestColor(5) color = PaletteUtils.getAndroidTestColor(5)
onToggle = { toggled = true } onToggle = { _, _, _ -> toggled = true }
onEdit = { edited = true }
} }
measureView(view, dpToPixels(48), dpToPixels(48)) measureView(view, dpToPixels(48), dpToPixels(48))
} }
@@ -70,20 +72,28 @@ class EntryButtonViewTest : BaseViewTest() {
fun testClick_withShortToggleDisabled() { fun testClick_withShortToggleDisabled() {
prefs.isShortToggleEnabled = false prefs.isShortToggleEnabled = false
view.performClick() view.performClick()
assertFalse(toggled) assertTrue(!toggled and edited)
} }
@Test @Test
fun testClick_withShortToggleEnabled() { fun testClick_withShortToggleEnabled() {
prefs.isShortToggleEnabled = true prefs.isShortToggleEnabled = true
view.performClick() view.performClick()
assertTrue(toggled) assertTrue(toggled and !edited)
} }
@Test @Test
fun testLongClick() { fun testLongClick_withShortToggleDisabled() {
prefs.isShortToggleEnabled = false
view.performLongClick() view.performLongClick()
assertTrue(toggled) assertTrue(toggled and !edited)
}
@Test
fun testLongClick_withShortToggleEnabled() {
prefs.isShortToggleEnabled = true
view.performLongClick()
assertTrue(!toggled and edited)
} }
private fun assertRendersCheckedExplicitly() { private fun assertRendersCheckedExplicitly() {

View File

@@ -77,7 +77,7 @@ class EntryPanelViewTest : BaseViewTest() {
@Test @Test
fun testToggle() { fun testToggle() {
val timestamps = mutableListOf<Timestamp>() val timestamps = mutableListOf<Timestamp>()
view.onToggle = { t, _ -> timestamps.add(t) } view.onToggle = { t, _, _, _ -> timestamps.add(t) }
view.buttons[0].performLongClick() view.buttons[0].performLongClick()
view.buttons[2].performLongClick() view.buttons[2].performLongClick()
view.buttons[3].performLongClick() view.buttons[3].performLongClick()
@@ -88,7 +88,7 @@ class EntryPanelViewTest : BaseViewTest() {
fun testToggle_withOffset() { fun testToggle_withOffset() {
val timestamps = mutableListOf<Timestamp>() val timestamps = mutableListOf<Timestamp>()
view.dataOffset = 3 view.dataOffset = 3
view.onToggle = { t, _ -> timestamps += t } view.onToggle = { t, _, _, _ -> timestamps += t }
view.buttons[0].performLongClick() view.buttons[0].performLongClick()
view.buttons[2].performLongClick() view.buttons[2].performLongClick()
view.buttons[3].performLongClick() view.buttons[3].performLongClick()

View File

@@ -76,7 +76,7 @@ class NumberPanelViewTest : BaseViewTest() {
@Test @Test
fun testEdit() { fun testEdit() {
val timestamps = mutableListOf<Timestamp>() val timestamps = mutableListOf<Timestamp>()
view.onEdit = { timestamps.plusAssign(it) } view.onEdit = { t -> timestamps.plusAssign(t) }
view.buttons[0].performLongClick() view.buttons[0].performLongClick()
view.buttons[2].performLongClick() view.buttons[2].performLongClick()
view.buttons[3].performLongClick() view.buttons[3].performLongClick()
@@ -87,7 +87,7 @@ class NumberPanelViewTest : BaseViewTest() {
fun testEdit_withOffset() { fun testEdit_withOffset() {
val timestamps = mutableListOf<Timestamp>() val timestamps = mutableListOf<Timestamp>()
view.dataOffset = 3 view.dataOffset = 3
view.onEdit = { timestamps += it } view.onEdit = { t -> timestamps += t }
view.buttons[0].performLongClick() view.buttons[0].performLongClick()
view.buttons[2].performLongClick() view.buttons[2].performLongClick()
view.buttons[3].performLongClick() view.buttons[3].performLongClick()

View File

@@ -21,9 +21,12 @@ package org.isoron.uhabits.regression
import androidx.test.filters.LargeTest import androidx.test.filters.LargeTest
import org.isoron.uhabits.BaseUserInterfaceTest import org.isoron.uhabits.BaseUserInterfaceTest
import org.isoron.uhabits.acceptance.steps.CommonSteps
import org.isoron.uhabits.acceptance.steps.CommonSteps.Screen.EDIT_HABIT import org.isoron.uhabits.acceptance.steps.CommonSteps.Screen.EDIT_HABIT
import org.isoron.uhabits.acceptance.steps.CommonSteps.Screen.LIST_HABITS import org.isoron.uhabits.acceptance.steps.CommonSteps.Screen.LIST_HABITS
import org.isoron.uhabits.acceptance.steps.CommonSteps.Screen.SELECT_HABIT_TYPE import org.isoron.uhabits.acceptance.steps.CommonSteps.Screen.SELECT_HABIT_TYPE
import org.isoron.uhabits.acceptance.steps.CommonSteps.changeFrequencyToDaily
import org.isoron.uhabits.acceptance.steps.CommonSteps.changeFrequencyToMonthly
import org.isoron.uhabits.acceptance.steps.CommonSteps.clickText import org.isoron.uhabits.acceptance.steps.CommonSteps.clickText
import org.isoron.uhabits.acceptance.steps.CommonSteps.createHabit import org.isoron.uhabits.acceptance.steps.CommonSteps.createHabit
import org.isoron.uhabits.acceptance.steps.CommonSteps.launchApp import org.isoron.uhabits.acceptance.steps.CommonSteps.launchApp
@@ -37,9 +40,12 @@ import org.isoron.uhabits.acceptance.steps.EditHabitSteps.clickSave
import org.isoron.uhabits.acceptance.steps.EditHabitSteps.typeName import org.isoron.uhabits.acceptance.steps.EditHabitSteps.typeName
import org.isoron.uhabits.acceptance.steps.ListHabitsSteps.MenuItem.ADD import org.isoron.uhabits.acceptance.steps.ListHabitsSteps.MenuItem.ADD
import org.isoron.uhabits.acceptance.steps.ListHabitsSteps.MenuItem.DELETE import org.isoron.uhabits.acceptance.steps.ListHabitsSteps.MenuItem.DELETE
import org.isoron.uhabits.acceptance.steps.ListHabitsSteps.changeSort
import org.isoron.uhabits.acceptance.steps.ListHabitsSteps.clickMenu import org.isoron.uhabits.acceptance.steps.ListHabitsSteps.clickMenu
import org.isoron.uhabits.acceptance.steps.ListHabitsSteps.longPressCheckmarks import org.isoron.uhabits.acceptance.steps.ListHabitsSteps.longPressCheckmarks
import org.isoron.uhabits.core.models.Entry.Companion.NO
import org.isoron.uhabits.core.models.Entry.Companion.UNKNOWN import org.isoron.uhabits.core.models.Entry.Companion.UNKNOWN
import org.isoron.uhabits.core.models.Entry.Companion.YES_AUTO
import org.isoron.uhabits.core.models.Entry.Companion.YES_MANUAL import org.isoron.uhabits.core.models.Entry.Companion.YES_MANUAL
import org.junit.Test import org.junit.Test
@@ -83,4 +89,37 @@ class ListHabitsRegressionTest : BaseUserInterfaceTest() {
offsetHeaders() offsetHeaders()
verifyDisplaysCheckmarks("Wake up early", listOf(UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN)) verifyDisplaysCheckmarks("Wake up early", listOf(UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN))
} }
/**
* https://github.com/iSoron/uhabits/issues/1131
*/
@Test
@Throws(Exception::class)
fun should_refresh_sort_after_habit_edit() {
launchApp()
verifyShowsScreen(LIST_HABITS)
changeSort("By score")
changeSort("By status")
longPressCheckmarks("Meditate", count = 1)
changeFrequencyToMonthly("Read books")
longPressCheckmarks("Read books", count = 2)
longPressCheckmarks("Read books", count = 1)
verifyDisplaysCheckmarks("Meditate", listOf(YES_AUTO, YES_MANUAL, YES_AUTO, YES_MANUAL))
CommonSteps.verifyDisplaysTextInSequence(
"Wake up early",
"Read books",
"Meditate",
"Track time"
)
changeFrequencyToDaily("Meditate")
verifyDisplaysCheckmarks("Meditate", listOf(NO, YES_MANUAL, UNKNOWN, YES_MANUAL))
CommonSteps.verifyDisplaysTextInSequence(
"Wake up early",
"Meditate",
"Read books",
"Track time",
)
}
} }

View File

@@ -125,7 +125,7 @@
android:exported="true" android:exported="true"
android:label="NumericalCheckmarkWidget" android:label="NumericalCheckmarkWidget"
android:noHistory="true" android:noHistory="true"
android:theme="@style/Theme.AppCompat.Light.Dialog"> android:theme="@style/Theme.Transparent">
<intent-filter> <intent-filter>
<action android:name="org.isoron.uhabits.ACTION_SHOW_NUMERICAL_VALUE_ACTIVITY" /> <action android:name="org.isoron.uhabits.ACTION_SHOW_NUMERICAL_VALUE_ACTIVITY" />
</intent-filter> </intent-filter>

View File

@@ -1,116 +0,0 @@
package org.isoron.uhabits.activities.common.dialogs
import android.content.Context
import android.graphics.Typeface
import android.view.LayoutInflater
import android.view.View
import android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE
import android.widget.Button
import androidx.appcompat.app.AlertDialog
import org.isoron.platform.gui.toInt
import org.isoron.uhabits.R
import org.isoron.uhabits.core.models.Entry.Companion.NO
import org.isoron.uhabits.core.models.Entry.Companion.SKIP
import org.isoron.uhabits.core.models.Entry.Companion.UNKNOWN
import org.isoron.uhabits.core.models.Entry.Companion.YES_AUTO
import org.isoron.uhabits.core.models.Entry.Companion.YES_MANUAL
import org.isoron.uhabits.core.models.PaletteColor
import org.isoron.uhabits.core.preferences.Preferences
import org.isoron.uhabits.core.ui.screens.habits.list.ListHabitsBehavior
import org.isoron.uhabits.core.ui.views.Theme
import org.isoron.uhabits.databinding.CheckmarkDialogBinding
import org.isoron.uhabits.inject.ActivityContext
import org.isoron.uhabits.utils.InterfaceUtils
import org.isoron.uhabits.utils.StyledResources
import javax.inject.Inject
class CheckmarkDialog
@Inject constructor(
@ActivityContext private val context: Context,
private val preferences: Preferences,
) : View.OnClickListener {
private lateinit var binding: CheckmarkDialogBinding
private lateinit var fontAwesome: Typeface
private val allButtons = mutableListOf<Button>()
private var selectedButton: Button? = null
fun create(
value: Int,
notes: String,
dateString: String,
paletteColor: PaletteColor,
callback: ListHabitsBehavior.CheckMarkDialogCallback,
theme: Theme,
): AlertDialog {
binding = CheckmarkDialogBinding.inflate(LayoutInflater.from(context))
fontAwesome = InterfaceUtils.getFontAwesome(context)!!
binding.etNotes.append(notes)
setUpButtons(value, theme.color(paletteColor).toInt())
val dialog = AlertDialog.Builder(context)
.setView(binding.root)
.setTitle(dateString)
.setPositiveButton(R.string.save) { _, _ ->
val newValue = when (selectedButton?.id) {
R.id.yesBtn -> YES_MANUAL
R.id.noBtn -> NO
R.id.skippedBtn -> SKIP
else -> UNKNOWN
}
callback.onNotesSaved(newValue, binding.etNotes.text.toString())
}
.setNegativeButton(android.R.string.cancel) { _, _ ->
callback.onNotesDismissed()
}
.setOnDismissListener {
callback.onNotesDismissed()
}
.create()
dialog.setOnShowListener {
binding.etNotes.requestFocus()
dialog.window?.setSoftInputMode(SOFT_INPUT_STATE_ALWAYS_VISIBLE)
}
return dialog
}
private fun setUpButtons(value: Int, color: Int) {
val sres = StyledResources(context)
val mediumContrastColor = sres.getColor(R.attr.contrast60)
setButtonAttrs(binding.yesBtn, color)
setButtonAttrs(binding.noBtn, mediumContrastColor)
setButtonAttrs(binding.skippedBtn, color, visible = preferences.isSkipEnabled)
setButtonAttrs(binding.questionBtn, mediumContrastColor, visible = preferences.areQuestionMarksEnabled)
when (value) {
UNKNOWN -> if (preferences.areQuestionMarksEnabled) {
binding.questionBtn.performClick()
} else {
binding.noBtn.performClick()
}
SKIP -> binding.skippedBtn.performClick()
YES_MANUAL -> binding.yesBtn.performClick()
YES_AUTO, NO -> binding.noBtn.performClick()
}
}
private fun setButtonAttrs(button: Button, color: Int, visible: Boolean = true) {
button.apply {
visibility = if (visible) View.VISIBLE else View.GONE
typeface = fontAwesome
setTextColor(color)
setOnClickListener(this@CheckmarkDialog)
}
allButtons.add(button)
}
override fun onClick(v: View?) {
allButtons.forEach {
if (v?.id == it.id) {
it.isSelected = true
selectedButton = it
} else it.isSelected = false
}
}
}

View File

@@ -0,0 +1,127 @@
/*
* Copyright (C) 2016-2021 Álinson Santos Xavier <git@axavier.org>
*
* This file is part of Loop Habit Tracker.
*
* Loop Habit Tracker is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* Loop Habit Tracker is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.isoron.uhabits.activities.common.dialogs
import android.app.Dialog
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.View.GONE
import android.view.View.VISIBLE
import org.isoron.uhabits.R
import org.isoron.uhabits.core.models.Entry.Companion.NO
import org.isoron.uhabits.core.models.Entry.Companion.SKIP
import org.isoron.uhabits.core.models.Entry.Companion.UNKNOWN
import org.isoron.uhabits.core.models.Entry.Companion.YES_AUTO
import org.isoron.uhabits.core.models.Entry.Companion.YES_MANUAL
import org.isoron.uhabits.core.preferences.Preferences
import org.isoron.uhabits.databinding.CheckmarkPopupBinding
import org.isoron.uhabits.utils.InterfaceUtils.getFontAwesome
import org.isoron.uhabits.utils.dimBehind
import org.isoron.uhabits.utils.dp
import org.isoron.uhabits.utils.sres
const val POPUP_WIDTH = 4 * 48f + 16f
const val POPUP_HEIGHT = 48f * 2.5f + 8f
class CheckmarkPopup(
private val context: Context,
private val color: Int,
private var notes: String,
private var value: Int,
private val prefs: Preferences,
private val anchor: View,
) {
var onToggle: (Int, String) -> Unit = { _, _ -> }
private lateinit var dialog: Dialog
private val view = CheckmarkPopupBinding.inflate(LayoutInflater.from(context)).apply {
// Required for round corners
container.clipToOutline = true
}
init {
view.booleanButtons.visibility = VISIBLE
initColors()
initTypefaces()
hideDisabledButtons()
populate()
}
private fun initColors() {
arrayOf(view.yesBtn, view.skipBtn).forEach {
it.setTextColor(color)
}
arrayOf(view.noBtn, view.unknownBtn).forEach {
it.setTextColor(view.root.sres.getColor(R.attr.contrast60))
}
}
private fun initTypefaces() {
arrayOf(view.yesBtn, view.noBtn, view.skipBtn, view.unknownBtn).forEach {
it.typeface = getFontAwesome(context)
}
}
private fun hideDisabledButtons() {
if (!prefs.isSkipEnabled) view.skipBtn.visibility = GONE
if (!prefs.areQuestionMarksEnabled) view.unknownBtn.visibility = GONE
}
private fun populate() {
val selectedBtn = when (value) {
YES_MANUAL -> view.yesBtn
YES_AUTO -> view.noBtn
NO -> view.noBtn
UNKNOWN -> if (prefs.areQuestionMarksEnabled) view.unknownBtn else view.noBtn
SKIP -> if (prefs.isSkipEnabled) view.skipBtn else view.noBtn
else -> null
}
view.notes.setText(notes)
}
fun show() {
dialog = Dialog(context, android.R.style.Theme_NoTitleBar)
dialog.setContentView(view.root)
dialog.window?.apply {
setLayout(
view.root.dp(POPUP_WIDTH).toInt(),
view.root.dp(POPUP_HEIGHT).toInt()
)
setBackgroundDrawableResource(android.R.color.transparent)
}
fun onClick(v: Int) {
this.value = v
save()
}
view.yesBtn.setOnClickListener { onClick(YES_MANUAL) }
view.noBtn.setOnClickListener { onClick(NO) }
view.skipBtn.setOnClickListener { onClick(SKIP) }
view.unknownBtn.setOnClickListener { onClick(UNKNOWN) }
dialog.setCanceledOnTouchOutside(true)
dialog.dimBehind()
dialog.show()
}
fun save() {
onToggle(value, view.notes.text.toString().trim())
dialog.dismiss()
}
}

View File

@@ -28,7 +28,7 @@ import org.isoron.uhabits.utils.toPaletteColor
class ColorPickerDialog : ColorPickerDialog() { class ColorPickerDialog : ColorPickerDialog() {
fun setListener(callback: OnColorPickedCallback) { fun setListener(callback: OnColorPickedCallback) {
super.setOnColorSelectedListener { c: Int -> super.setOnColorSelectedListener { c: Int ->
val pc = c.toPaletteColor(context!!) val pc = c.toPaletteColor(requireContext())
callback.onColorPicked(pc) callback.onColorPicked(pc)
} }
} }

View File

@@ -43,18 +43,18 @@ class HistoryEditorDialog : AppCompatDialogFragment(), CommandRunner.Listener {
private lateinit var commandRunner: CommandRunner private lateinit var commandRunner: CommandRunner
private lateinit var habit: Habit private lateinit var habit: Habit
private lateinit var preferences: Preferences private lateinit var preferences: Preferences
private lateinit var dataView: AndroidDataView lateinit var dataView: AndroidDataView
private var chart: HistoryChart? = null private var chart: HistoryChart? = null
private var onDateClickedListener: OnDateClickedListener? = null private var onDateClickedListener: OnDateClickedListener? = null
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val component = (activity!!.application as HabitsApplication).component val component = (requireActivity().application as HabitsApplication).component
commandRunner = component.commandRunner commandRunner = component.commandRunner
habit = component.habitList.getById(arguments!!.getLong("habit"))!! habit = component.habitList.getById(requireArguments().getLong("habit"))!!
preferences = component.preferences preferences = component.preferences
val themeSwitcher = AndroidThemeSwitcher(activity!!, preferences) val themeSwitcher = AndroidThemeSwitcher(requireActivity(), preferences)
themeSwitcher.apply() themeSwitcher.apply()
chart = HistoryChart( chart = HistoryChart(
@@ -69,10 +69,10 @@ class HistoryEditorDialog : AppCompatDialogFragment(), CommandRunner.Listener {
onDateClickedListener = onDateClickedListener ?: object : OnDateClickedListener {}, onDateClickedListener = onDateClickedListener ?: object : OnDateClickedListener {},
padding = 10.0, padding = 10.0,
) )
dataView = AndroidDataView(context!!, null) dataView = AndroidDataView(requireContext(), null)
dataView.view = chart!! dataView.view = chart!!
return Dialog(context!!).apply { return Dialog(requireContext()).apply {
val metrics = resources.displayMetrics val metrics = resources.displayMetrics
val maxHeight = resources.getDimensionPixelSize(R.dimen.history_editor_max_height) val maxHeight = resources.getDimensionPixelSize(R.dimen.history_editor_max_height)
setContentView(dataView) setContentView(dataView)

View File

@@ -1,155 +0,0 @@
/*
* Copyright (C) 2016-2021 Álinson Santos Xavier <git@axavier.org>
*
* This file is part of Loop Habit Tracker.
*
* Loop Habit Tracker is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* Loop Habit Tracker is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.isoron.uhabits.activities.common.dialogs
import android.annotation.SuppressLint
import android.content.Context
import android.content.DialogInterface
import android.text.InputFilter
import android.text.Spanned
import android.view.LayoutInflater
import android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE
import android.view.inputmethod.EditorInfo
import android.widget.EditText
import android.widget.NumberPicker
import android.widget.TextView
import androidx.appcompat.app.AlertDialog
import org.isoron.uhabits.R
import org.isoron.uhabits.core.ui.screens.habits.list.ListHabitsBehavior
import org.isoron.uhabits.inject.ActivityContext
import org.isoron.uhabits.utils.InterfaceUtils
import java.text.DecimalFormatSymbols
import javax.inject.Inject
import kotlin.math.roundToLong
class NumberPickerFactory
@Inject constructor(
@ActivityContext private val context: Context
) {
fun create(
value: Double,
unit: String,
notes: String,
dateString: String,
callback: ListHabitsBehavior.NumberPickerCallback
): AlertDialog {
val inflater = LayoutInflater.from(context)
val view = inflater.inflate(R.layout.number_picker_dialog, null)
val picker = view.findViewById<NumberPicker>(R.id.picker)
val picker2 = view.findViewById<NumberPicker>(R.id.picker2)
val etNotes = view.findViewById<EditText>(R.id.etNotes)
val watcherFilter: InputFilter = SeparatorWatcherInputFilter(picker2)
val numberPickerInputText = getNumberPickerInputText(picker)
// watch the unfiltered input before the filters remove a possible separator from it
numberPickerInputText.filters = arrayOf(watcherFilter).plus(numberPickerInputText.filters)
view.findViewById<TextView>(R.id.tvUnit).text = unit
view.findViewById<TextView>(R.id.tvSeparator).text =
DecimalFormatSymbols.getInstance().decimalSeparator.toString()
val intValue = (value * 100).roundToLong().toInt()
picker.minValue = 0
picker.maxValue = Integer.MAX_VALUE / 100
picker.value = intValue / 100
picker.wrapSelectorWheel = false
picker2.minValue = 0
picker2.maxValue = 99
picker2.setFormatter { v -> String.format("%02d", v) }
picker2.value = intValue % 100
etNotes.setText(notes)
val dialog = AlertDialog.Builder(context)
.setView(view)
.setTitle(dateString)
.setPositiveButton(R.string.save) { _, _ ->
picker.clearFocus()
val v = picker.value + 0.01 * picker2.value
val note = etNotes.text.toString()
callback.onNumberPicked(v, note)
}
.setNegativeButton(android.R.string.cancel) { _, _ ->
callback.onNumberPickerDismissed()
}
.setOnDismissListener {
callback.onNumberPickerDismissed()
}
.create()
dialog.setOnShowListener {
picker.getChildAt(0)?.requestFocus()
dialog.window?.setSoftInputMode(SOFT_INPUT_STATE_ALWAYS_VISIBLE)
}
InterfaceUtils.setupEditorAction(
picker
) { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_DONE) {
dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick()
}
false
}
InterfaceUtils.setupEditorAction(
picker2
) { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_DONE) {
dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick()
}
false
}
return dialog
}
@SuppressLint("DiscouragedPrivateApi")
private fun getNumberPickerInputText(picker: NumberPicker): EditText {
val f = NumberPicker::class.java.getDeclaredField("mInputText")
f.isAccessible = true
return f.get(picker) as EditText
}
}
class SeparatorWatcherInputFilter(private val nextPicker: NumberPicker) : InputFilter {
override fun filter(
source: CharSequence?,
start: Int,
end: Int,
dest: Spanned?,
dstart: Int,
dend: Int
): CharSequence {
if (source == null || source.isEmpty()) {
return ""
}
for (c in source) {
if (c == DecimalFormatSymbols.getInstance().decimalSeparator || c == '.' || c == ',') {
nextPicker.performLongClick()
break
}
}
return source
}
}

View File

@@ -0,0 +1,111 @@
/*
* Copyright (C) 2016-2021 Álinson Santos Xavier <git@axavier.org>
*
* This file is part of Loop Habit Tracker.
*
* Loop Habit Tracker is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* Loop Habit Tracker is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.isoron.uhabits.activities.common.dialogs
import android.app.Dialog
import android.content.Context
import android.view.KeyEvent.KEYCODE_ENTER
import android.view.LayoutInflater
import android.view.MotionEvent.ACTION_DOWN
import android.view.View
import android.view.View.GONE
import android.view.View.VISIBLE
import org.isoron.uhabits.core.models.Entry
import org.isoron.uhabits.core.preferences.Preferences
import org.isoron.uhabits.databinding.CheckmarkPopupBinding
import org.isoron.uhabits.utils.dimBehind
import org.isoron.uhabits.utils.dp
import org.isoron.uhabits.utils.requestFocusWithKeyboard
import java.text.DecimalFormat
class NumberPopup(
private val context: Context,
private var notes: String,
private var value: Double,
private val prefs: Preferences,
private val anchor: View,
) {
var onToggle: (Double, String) -> Unit = { _, _ -> }
private val originalValue = value
private lateinit var dialog: Dialog
private val view = CheckmarkPopupBinding.inflate(LayoutInflater.from(context)).apply {
// Required for round corners
container.clipToOutline = true
}
init {
view.numberButtons.visibility = VISIBLE
hideDisabledButtons()
populate()
}
private fun hideDisabledButtons() {
if (!prefs.isSkipEnabled) view.skipBtnNumber.visibility = GONE
}
private fun populate() {
view.notes.setText(notes)
view.value.setText(
when {
value < 0.01 -> "0"
else -> DecimalFormat("#.##").format(value)
}
)
}
fun show() {
dialog = Dialog(context, android.R.style.Theme_NoTitleBar)
dialog.setContentView(view.root)
dialog.window?.apply {
setLayout(
view.root.dp(POPUP_WIDTH).toInt(),
view.root.dp(POPUP_HEIGHT).toInt()
)
setBackgroundDrawableResource(android.R.color.transparent)
}
view.value.setOnKeyListener { _, keyCode, event ->
if (event.action == ACTION_DOWN && keyCode == KEYCODE_ENTER) {
save()
return@setOnKeyListener true
}
return@setOnKeyListener false
}
view.saveBtn.setOnClickListener {
save()
}
view.skipBtnNumber.setOnClickListener {
view.value.setText((Entry.SKIP.toDouble() / 1000).toString())
save()
}
view.value.requestFocusWithKeyboard()
dialog.setCanceledOnTouchOutside(true)
dialog.dimBehind()
dialog.show()
}
fun save() {
val value = view.value.text.toString().toDoubleOrNull() ?: originalValue
val notes = view.notes.text.toString()
onToggle(value, notes)
dialog.dismiss()
}
}

View File

@@ -60,7 +60,7 @@ class WeekdayPickerDialog :
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val builder = AlertDialog.Builder( val builder = AlertDialog.Builder(
activity!! requireActivity()
) )
builder builder
.setTitle(R.string.select_weekdays) .setTitle(R.string.select_weekdays)

View File

@@ -29,6 +29,7 @@ import org.isoron.uhabits.core.utils.DateUtils.Companion.getShortWeekdayNames
import org.isoron.uhabits.core.utils.DateUtils.Companion.getStartOfTodayCalendar import org.isoron.uhabits.core.utils.DateUtils.Companion.getStartOfTodayCalendar
import org.isoron.uhabits.core.utils.DateUtils.Companion.getStartOfTodayCalendarWithOffset import org.isoron.uhabits.core.utils.DateUtils.Companion.getStartOfTodayCalendarWithOffset
import org.isoron.uhabits.core.utils.DateUtils.Companion.getWeekdaySequence import org.isoron.uhabits.core.utils.DateUtils.Companion.getWeekdaySequence
import org.isoron.uhabits.core.utils.DateUtils.Companion.getWeekdaysInMonth
import org.isoron.uhabits.utils.ColorUtils.mixColors import org.isoron.uhabits.utils.ColorUtils.mixColors
import org.isoron.uhabits.utils.StyledResources import org.isoron.uhabits.utils.StyledResources
import org.isoron.uhabits.utils.toSimpleDataFormat import org.isoron.uhabits.utils.toSimpleDataFormat
@@ -62,7 +63,6 @@ class FrequencyChart : ScrollableChart {
private var primaryColor = 0 private var primaryColor = 0
private var isBackgroundTransparent = false private var isBackgroundTransparent = false
private lateinit var frequency: HashMap<Timestamp, Array<Int>> private lateinit var frequency: HashMap<Timestamp, Array<Int>>
private var maxFreq = 0
private var firstWeekday = Calendar.SUNDAY private var firstWeekday = Calendar.SUNDAY
constructor(context: Context?) : super(context) { constructor(context: Context?) : super(context) {
@@ -82,7 +82,6 @@ class FrequencyChart : ScrollableChart {
fun setFrequency(frequency: java.util.HashMap<Timestamp, Array<Int>>) { fun setFrequency(frequency: java.util.HashMap<Timestamp, Array<Int>>) {
this.frequency = frequency this.frequency = frequency
maxFreq = getMaxFreq(frequency)
postInvalidate() postInvalidate()
} }
@@ -91,15 +90,6 @@ class FrequencyChart : ScrollableChart {
postInvalidate() postInvalidate()
} }
private fun getMaxFreq(frequency: HashMap<Timestamp, Array<Int>>): Int {
var maxValue = 1
for (values in frequency.values) for (value in values) maxValue = max(
value,
maxValue
)
return maxValue
}
fun setIsBackgroundTransparent(isBackgroundTransparent: Boolean) { fun setIsBackgroundTransparent(isBackgroundTransparent: Boolean) {
this.isBackgroundTransparent = isBackgroundTransparent this.isBackgroundTransparent = isBackgroundTransparent
initColors() initColors()
@@ -166,6 +156,7 @@ class FrequencyChart : ScrollableChart {
private fun drawColumn(canvas: Canvas, rect: RectF?, date: GregorianCalendar) { private fun drawColumn(canvas: Canvas, rect: RectF?, date: GregorianCalendar) {
val values = frequency[Timestamp(date)] val values = frequency[Timestamp(date)]
val weekDaysInMonth = getWeekdaysInMonth(Timestamp(date))
val rowHeight = rect!!.height() / 8.0f val rowHeight = rect!!.height() / 8.0f
prevRect!!.set(rect) prevRect!!.set(rect)
val localeWeekdayList: Array<Int> = getWeekdaySequence(firstWeekday) val localeWeekdayList: Array<Int> = getWeekdaySequence(firstWeekday)
@@ -173,7 +164,8 @@ class FrequencyChart : ScrollableChart {
rect[0f, 0f, baseSize.toFloat()] = baseSize.toFloat() rect[0f, 0f, baseSize.toFloat()] = baseSize.toFloat()
rect.offset(prevRect!!.left, prevRect!!.top + baseSize * j) rect.offset(prevRect!!.left, prevRect!!.top + baseSize * j)
val i = localeWeekdayList[j] % 7 val i = localeWeekdayList[j] % 7
if (values != null) drawMarker(canvas, rect, values[i]) if (values != null)
drawMarker(canvas, rect, values[i], weekDaysInMonth[i])
rect.offset(0f, rowHeight) rect.offset(0f, rowHeight)
} }
drawFooter(canvas, rect, date) drawFooter(canvas, rect, date)
@@ -221,12 +213,16 @@ class FrequencyChart : ScrollableChart {
canvas.drawLine(rGrid.left, rGrid.top, rGrid.right, rGrid.top, pGrid!!) canvas.drawLine(rGrid.left, rGrid.top, rGrid.right, rGrid.top, pGrid!!)
} }
private fun drawMarker(canvas: Canvas, rect: RectF?, value: Int?) { private fun drawMarker(canvas: Canvas, rect: RectF?, value: Int?, frequency: Int) {
// value can be negative when the entry is skipped
val valueCopy = value?.let { max(0, it) }
val padding = rect!!.height() * 0.2f val padding = rect!!.height() * 0.2f
// maximal allowed mark radius // maximal allowed mark radius
val maxRadius = (rect.height() - 2 * padding) / 2.0f val maxRadius = (rect.height() - 2 * padding) / 2.0f
// the real mark radius is scaled down by a factor depending on the maximal frequency // the real mark radius is scaled down by a factor depending on the maximal frequency
val scale = 1.0f / maxFreq * value!!
val scale = 1.0f / frequency * valueCopy!!
val radius = maxRadius * scale val radius = maxRadius * scale
val colorIndex = min((colors.size - 1), ((colors.size - 1) * scale).roundToInt()) val colorIndex = min((colors.size - 1), ((colors.size - 1) * scale).roundToInt())
pGraph!!.color = colors[colorIndex] pGraph!!.color = colors[colorIndex]
@@ -289,6 +285,5 @@ class FrequencyChart : ScrollableChart {
frequency[Timestamp(date)] = values frequency[Timestamp(date)] = values
date.add(Calendar.MONTH, -1) date.add(Calendar.MONTH, -1)
} }
maxFreq = getMaxFreq(frequency)
} }
} }

View File

@@ -40,13 +40,13 @@ class HabitTypeDialog : AppCompatDialogFragment() {
val binding = SelectHabitTypeBinding.inflate(inflater, container, false) val binding = SelectHabitTypeBinding.inflate(inflater, container, false)
binding.buttonYesNo.setOnClickListener { binding.buttonYesNo.setOnClickListener {
val intent = IntentFactory().startEditActivity(activity!!, HabitType.YES_NO.value) val intent = IntentFactory().startEditActivity(requireActivity(), HabitType.YES_NO.value)
startActivity(intent) startActivity(intent)
dismiss() dismiss()
} }
binding.buttonMeasurable.setOnClickListener { binding.buttonMeasurable.setOnClickListener {
val intent = IntentFactory().startEditActivity(activity!!, HabitType.NUMERICAL.value) val intent = IntentFactory().startEditActivity(requireActivity(), HabitType.NUMERICAL.value)
startActivity(intent) startActivity(intent)
dismiss() dismiss()
} }

View File

@@ -24,11 +24,12 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import dagger.Lazy import dagger.Lazy
import org.isoron.platform.gui.toInt
import org.isoron.uhabits.R import org.isoron.uhabits.R
import org.isoron.uhabits.activities.common.dialogs.CheckmarkDialog import org.isoron.uhabits.activities.common.dialogs.CheckmarkPopup
import org.isoron.uhabits.activities.common.dialogs.ColorPickerDialogFactory import org.isoron.uhabits.activities.common.dialogs.ColorPickerDialogFactory
import org.isoron.uhabits.activities.common.dialogs.ConfirmDeleteDialog import org.isoron.uhabits.activities.common.dialogs.ConfirmDeleteDialog
import org.isoron.uhabits.activities.common.dialogs.NumberPickerFactory import org.isoron.uhabits.activities.common.dialogs.NumberPopup
import org.isoron.uhabits.activities.habits.edit.HabitTypeDialog import org.isoron.uhabits.activities.habits.edit.HabitTypeDialog
import org.isoron.uhabits.activities.habits.list.views.HabitCardListAdapter import org.isoron.uhabits.activities.habits.list.views.HabitCardListAdapter
import org.isoron.uhabits.core.commands.ArchiveHabitsCommand import org.isoron.uhabits.core.commands.ArchiveHabitsCommand
@@ -41,6 +42,7 @@ import org.isoron.uhabits.core.commands.EditHabitCommand
import org.isoron.uhabits.core.commands.UnarchiveHabitsCommand import org.isoron.uhabits.core.commands.UnarchiveHabitsCommand
import org.isoron.uhabits.core.models.Habit import org.isoron.uhabits.core.models.Habit
import org.isoron.uhabits.core.models.PaletteColor import org.isoron.uhabits.core.models.PaletteColor
import org.isoron.uhabits.core.preferences.Preferences
import org.isoron.uhabits.core.tasks.TaskRunner import org.isoron.uhabits.core.tasks.TaskRunner
import org.isoron.uhabits.core.ui.ThemeSwitcher import org.isoron.uhabits.core.ui.ThemeSwitcher
import org.isoron.uhabits.core.ui.callbacks.OnColorPickedCallback import org.isoron.uhabits.core.ui.callbacks.OnColorPickedCallback
@@ -61,6 +63,7 @@ import org.isoron.uhabits.tasks.ExportDBTaskFactory
import org.isoron.uhabits.tasks.ImportDataTask import org.isoron.uhabits.tasks.ImportDataTask
import org.isoron.uhabits.tasks.ImportDataTaskFactory import org.isoron.uhabits.tasks.ImportDataTaskFactory
import org.isoron.uhabits.utils.copyTo import org.isoron.uhabits.utils.copyTo
import org.isoron.uhabits.utils.currentTheme
import org.isoron.uhabits.utils.restartWithFade import org.isoron.uhabits.utils.restartWithFade
import org.isoron.uhabits.utils.showMessage import org.isoron.uhabits.utils.showMessage
import org.isoron.uhabits.utils.showSendEmailScreen import org.isoron.uhabits.utils.showSendEmailScreen
@@ -89,9 +92,9 @@ class ListHabitsScreen
private val exportDBFactory: ExportDBTaskFactory, private val exportDBFactory: ExportDBTaskFactory,
private val importTaskFactory: ImportDataTaskFactory, private val importTaskFactory: ImportDataTaskFactory,
private val colorPickerFactory: ColorPickerDialogFactory, private val colorPickerFactory: ColorPickerDialogFactory,
private val numberPickerFactory: NumberPickerFactory, private val behavior: Lazy<ListHabitsBehavior>,
private val checkMarkDialog: CheckmarkDialog, private val preferences: Preferences,
private val behavior: Lazy<ListHabitsBehavior> private val rootView: Lazy<ListHabitsRootView>,
) : CommandRunner.Listener, ) : CommandRunner.Listener,
ListHabitsBehavior.Screen, ListHabitsBehavior.Screen,
ListHabitsMenuBehavior.Screen, ListHabitsMenuBehavior.Screen,
@@ -224,31 +227,42 @@ class ListHabitsScreen
picker.show(activity.supportFragmentManager, "picker") picker.show(activity.supportFragmentManager, "picker")
} }
override fun showNumberPicker( override fun showNumberPopup(
value: Double, value: Double,
unit: String,
notes: String, notes: String,
dateString: String,
callback: ListHabitsBehavior.NumberPickerCallback callback: ListHabitsBehavior.NumberPickerCallback
) { ) {
numberPickerFactory.create(value, unit, notes, dateString, callback).show() val view = rootView.get()
NumberPopup(
context = context,
prefs = preferences,
anchor = view,
notes = notes,
value = value,
).apply {
onToggle = { value, notes -> callback.onNumberPicked(value, notes) }
show()
}
} }
override fun showCheckmarkDialog( override fun showCheckmarkPopup(
value: Int, selectedValue: Int,
notes: String, notes: String,
dateString: String,
color: PaletteColor, color: PaletteColor,
callback: ListHabitsBehavior.CheckMarkDialogCallback callback: ListHabitsBehavior.CheckMarkDialogCallback
) { ) {
checkMarkDialog.create( val view = rootView.get()
value, CheckmarkPopup(
notes, context = context,
dateString, prefs = preferences,
color, anchor = view,
callback, color = view.currentTheme().color(color).toInt(),
themeSwitcher.currentTheme!!, notes = notes,
).show() value = selectedValue,
).apply {
onToggle = { value, notes -> callback.onNotesSaved(value, notes) }
show()
}
} }
private fun getExecuteString(command: Command): String? { private fun getExecuteString(command: Command): String? {

View File

@@ -44,6 +44,8 @@ import org.isoron.uhabits.utils.sres
import org.isoron.uhabits.utils.toMeasureSpec import org.isoron.uhabits.utils.toMeasureSpec
import javax.inject.Inject import javax.inject.Inject
const val TOGGLE_DELAY_MILLIS = 2000L
class CheckmarkButtonViewFactory class CheckmarkButtonViewFactory
@Inject constructor( @Inject constructor(
@ActivityContext val context: Context, @ActivityContext val context: Context,
@@ -71,42 +73,42 @@ class CheckmarkButtonView(
invalidate() invalidate()
} }
var hasNotes = false var notes = ""
set(value) { set(value) {
field = value field = value
invalidate() invalidate()
} }
var onToggle: (Int) -> Unit = {} var onToggle: (Int, String, Long) -> Unit = { _, _, _ -> }
var onEdit: () -> Unit = { }
var onEdit: () -> Unit = {}
private var drawer = Drawer() private var drawer = Drawer()
init { init {
isFocusable = false
setOnClickListener(this) setOnClickListener(this)
setOnLongClickListener(this) setOnLongClickListener(this)
} }
fun performToggle() { fun performToggle(delay: Long) {
value = Entry.nextToggleValue( value = Entry.nextToggleValue(
value = value, value = value,
isSkipEnabled = preferences.isSkipEnabled, isSkipEnabled = preferences.isSkipEnabled,
areQuestionMarksEnabled = preferences.areQuestionMarksEnabled areQuestionMarksEnabled = preferences.areQuestionMarksEnabled
) )
onToggle(value) onToggle(value, notes, delay)
performHapticFeedback(HapticFeedbackConstants.LONG_PRESS) performHapticFeedback(HapticFeedbackConstants.LONG_PRESS)
invalidate() invalidate()
} }
override fun onClick(v: View) { override fun onClick(v: View) {
if (preferences.isShortToggleEnabled) performToggle() if (preferences.isShortToggleEnabled) performToggle(TOGGLE_DELAY_MILLIS)
else onEdit() else onEdit()
} }
override fun onLongClick(v: View): Boolean { override fun onLongClick(v: View): Boolean {
if (preferences.isShortToggleEnabled) onEdit() if (preferences.isShortToggleEnabled) onEdit()
else performToggle() else performToggle(TOGGLE_DELAY_MILLIS)
return true return true
} }
@@ -180,7 +182,7 @@ class CheckmarkButtonView(
canvas.drawText(label, rect.centerX(), rect.centerY(), paint) canvas.drawText(label, rect.centerX(), rect.centerY(), paint)
} }
drawNotesIndicator(canvas, color, em, hasNotes) drawNotesIndicator(canvas, color, em, notes)
} }
} }
} }

View File

@@ -54,19 +54,19 @@ class CheckmarkPanelView(
setupButtons() setupButtons()
} }
var notesIndicators = BooleanArray(0) var notes = arrayOf<String>()
set(values) { set(values) {
field = values field = values
setupButtons() setupButtons()
} }
var onToggle: (Timestamp, Int) -> Unit = { _, _ -> } var onToggle: (Timestamp, Int, String, Long) -> Unit = { _, _, _, _ -> }
set(value) { set(value) {
field = value field = value
setupButtons() setupButtons()
} }
var onEdit: (Timestamp) -> Unit = {} var onEdit: (Timestamp) -> Unit = { _ -> }
set(value) { set(value) {
field = value field = value
setupButtons() setupButtons()
@@ -84,12 +84,12 @@ class CheckmarkPanelView(
index + dataOffset < values.size -> values[index + dataOffset] index + dataOffset < values.size -> values[index + dataOffset]
else -> UNKNOWN else -> UNKNOWN
} }
button.hasNotes = when { button.notes = when {
index + dataOffset < notesIndicators.size -> notesIndicators[index + dataOffset] index + dataOffset < notes.size -> notes[index + dataOffset]
else -> false else -> ""
} }
button.color = color button.color = color
button.onToggle = { value -> onToggle(timestamp, value) } button.onToggle = { value, notes, delay -> onToggle(timestamp, value, notes, delay) }
button.onEdit = { onEdit(timestamp) } button.onEdit = { onEdit(timestamp) }
} }
} }

View File

@@ -124,9 +124,9 @@ class HabitCardListAdapter @Inject constructor(
val habit = cache.getHabitByPosition(position) val habit = cache.getHabitByPosition(position)
val score = cache.getScore(habit!!.id!!) val score = cache.getScore(habit!!.id!!)
val checkmarks = cache.getCheckmarks(habit.id!!) val checkmarks = cache.getCheckmarks(habit.id!!)
val notesIndicators = cache.getNoteIndicators(habit.id!!) val notes = cache.getNotes(habit.id!!)
val selected = selected.contains(habit) val selected = selected.contains(habit)
listView!!.bindCardView(holder, habit, score, checkmarks, notesIndicators, selected) listView!!.bindCardView(holder, habit, score, checkmarks, notes, selected)
} }
override fun onViewAttachedToWindow(holder: HabitCardViewHolder) { override fun onViewAttachedToWindow(holder: HabitCardViewHolder) {

View File

@@ -87,7 +87,7 @@ class HabitCardListView(
habit: Habit, habit: Habit,
score: Double, score: Double,
checkmarks: IntArray, checkmarks: IntArray,
notesIndicators: BooleanArray, notes: Array<String>,
selected: Boolean selected: Boolean
): View { ): View {
val cardView = holder.itemView as HabitCardView val cardView = holder.itemView as HabitCardView
@@ -99,7 +99,7 @@ class HabitCardListView(
cardView.score = score cardView.score = score
cardView.unit = habit.unit cardView.unit = habit.unit
cardView.threshold = habit.targetValue / habit.frequency.denominator cardView.threshold = habit.targetValue / habit.frequency.denominator
cardView.notesIndicators = notesIndicators cardView.notes = notes
val detector = GestureDetector(context, CardViewGestureDetector(holder)) val detector = GestureDetector(context, CardViewGestureDetector(holder))
cardView.setOnTouchListener { _, ev -> cardView.setOnTouchListener { _, ev ->

View File

@@ -21,8 +21,8 @@ package org.isoron.uhabits.activities.habits.list.views
import android.content.Context import android.content.Context
import android.graphics.text.LineBreaker.BREAK_STRATEGY_BALANCED import android.graphics.text.LineBreaker.BREAK_STRATEGY_BALANCED
import android.os.Build
import android.os.Build.VERSION.SDK_INT import android.os.Build.VERSION.SDK_INT
import android.os.Build.VERSION_CODES.M
import android.os.Handler import android.os.Handler
import android.os.Looper import android.os.Looper
import android.text.TextUtils import android.text.TextUtils
@@ -60,7 +60,8 @@ class HabitCardViewFactory
data class DelayedToggle( data class DelayedToggle(
var habit: Habit, var habit: Habit,
var timestamp: Timestamp, var timestamp: Timestamp,
var value: Int var value: Int,
var notes: String
) )
class HabitCardView( class HabitCardView(
@@ -121,11 +122,11 @@ class HabitCardView(
numberPanel.threshold = value numberPanel.threshold = value
} }
var notesIndicators var notes
get() = checkmarkPanel.notesIndicators get() = checkmarkPanel.notes
set(values) { set(values) {
checkmarkPanel.notesIndicators = values checkmarkPanel.notes = values
numberPanel.notesIndicators = values numberPanel.notes = values
} }
var checkmarkPanel: CheckmarkPanelView var checkmarkPanel: CheckmarkPanelView
@@ -153,15 +154,17 @@ class HabitCardView(
maxLines = 2 maxLines = 2
ellipsize = TextUtils.TruncateAt.END ellipsize = TextUtils.TruncateAt.END
layoutParams = LinearLayout.LayoutParams(0, WRAP_CONTENT, 1f) layoutParams = LinearLayout.LayoutParams(0, WRAP_CONTENT, 1f)
if (SDK_INT >= M) breakStrategy = BREAK_STRATEGY_BALANCED if (SDK_INT >= Build.VERSION_CODES.Q) {
breakStrategy = BREAK_STRATEGY_BALANCED
}
} }
checkmarkPanel = checkmarkPanelFactory.create().apply { checkmarkPanel = checkmarkPanelFactory.create().apply {
onToggle = { timestamp, value -> onToggle = { timestamp, value, notes, delay ->
triggerRipple(timestamp) if (delay > 0) triggerRipple(timestamp)
habit?.let { habit?.let {
val taskId = queueToggle(it, timestamp, value); val taskId = queueToggle(it, timestamp, value, notes);
{ runPendingToggles(taskId) }.delay(TOGGLE_DELAY_MILLIS) { runPendingToggles(taskId) }.delay(delay)
} }
} }
onEdit = { timestamp -> onEdit = { timestamp ->
@@ -205,7 +208,7 @@ class HabitCardView(
@Synchronized @Synchronized
private fun runPendingToggles(id: Int) { private fun runPendingToggles(id: Int) {
if (currentToggleTaskId != id) return if (currentToggleTaskId != id) return
for ((h, t, v) in queuedToggles) behavior.onToggle(h, t, v) for ((h, t, v, n) in queuedToggles) behavior.onToggle(h, t, v, n)
queuedToggles.clear() queuedToggles.clear()
} }
@@ -213,10 +216,11 @@ class HabitCardView(
private fun queueToggle( private fun queueToggle(
it: Habit, it: Habit,
timestamp: Timestamp, timestamp: Timestamp,
value: Int value: Int,
notes: String,
): Int { ): Int {
currentToggleTaskId += 1 currentToggleTaskId += 1
queuedToggles.add(DelayedToggle(it, timestamp, value)) queuedToggles.add(DelayedToggle(it, timestamp, value, notes))
return currentToggleTaskId return currentToggleTaskId
} }
@@ -306,8 +310,6 @@ class HabitCardView(
} }
companion object { companion object {
const val TOGGLE_DELAY_MILLIS = 2000L
fun (() -> Unit).delay(delayInMillis: Long) { fun (() -> Unit).delay(delayInMillis: Long) {
Handler(Looper.getMainLooper()).postDelayed(this, delayInMillis) Handler(Looper.getMainLooper()).postDelayed(this, delayInMillis)
} }

View File

@@ -29,7 +29,9 @@ import android.view.View
import android.view.View.OnClickListener import android.view.View.OnClickListener
import android.view.View.OnLongClickListener import android.view.View.OnLongClickListener
import org.isoron.uhabits.R import org.isoron.uhabits.R
import org.isoron.uhabits.core.models.NumericalHabitType import org.isoron.uhabits.core.models.Entry
import org.isoron.uhabits.core.models.NumericalHabitType.AT_LEAST
import org.isoron.uhabits.core.models.NumericalHabitType.AT_MOST
import org.isoron.uhabits.core.preferences.Preferences import org.isoron.uhabits.core.preferences.Preferences
import org.isoron.uhabits.inject.ActivityContext import org.isoron.uhabits.inject.ActivityContext
import org.isoron.uhabits.utils.InterfaceUtils.getDimension import org.isoron.uhabits.utils.InterfaceUtils.getDimension
@@ -37,7 +39,6 @@ import org.isoron.uhabits.utils.dim
import org.isoron.uhabits.utils.drawNotesIndicator import org.isoron.uhabits.utils.drawNotesIndicator
import org.isoron.uhabits.utils.getFontAwesome import org.isoron.uhabits.utils.getFontAwesome
import org.isoron.uhabits.utils.sres import org.isoron.uhabits.utils.sres
import java.lang.Double.max
import java.text.DecimalFormat import java.text.DecimalFormat
import javax.inject.Inject import javax.inject.Inject
@@ -90,7 +91,7 @@ class NumberButtonView(
invalidate() invalidate()
} }
var targetType = NumericalHabitType.AT_LEAST var targetType = AT_LEAST
set(value) { set(value) {
field = value field = value
invalidate() invalidate()
@@ -101,13 +102,14 @@ class NumberButtonView(
field = value field = value
invalidate() invalidate()
} }
var hasNotes = false var notes = ""
set(value) { set(value) {
field = value field = value
invalidate() invalidate()
} }
var onEdit: () -> Unit = {} var onEdit: () -> Unit = { }
private var drawer: Drawer = Drawer(context) private var drawer: Drawer = Drawer(context)
init { init {
@@ -143,6 +145,12 @@ class NumberButtonView(
private val lowContrast: Int private val lowContrast: Int
private val mediumContrast: Int private val mediumContrast: Int
private val paint = TextPaint().apply {
typeface = getFontAwesome()
isAntiAlias = true
textAlign = Paint.Align.CENTER
}
private val pUnit: TextPaint = TextPaint().apply { private val pUnit: TextPaint = TextPaint().apply {
textSize = getDimension(context, R.dimen.smallerTextSize) textSize = getDimension(context, R.dimen.smallerTextSize)
typeface = NORMAL_TYPEFACE typeface = NORMAL_TYPEFACE
@@ -164,18 +172,11 @@ class NumberButtonView(
} }
fun draw(canvas: Canvas) { fun draw(canvas: Canvas) {
var activeColor = if (targetType == NumericalHabitType.AT_LEAST) { val activeColor = when {
when { value < 0.0 -> lowContrast
value < 0.0 && preferences.areQuestionMarksEnabled -> lowContrast (targetType == AT_LEAST) && (value >= threshold) -> color
max(0.0, value) >= threshold -> color (targetType == AT_MOST) && (value <= threshold) -> color
else -> mediumContrast else -> mediumContrast
}
} else {
when {
value < 0.0 && preferences.areQuestionMarksEnabled -> lowContrast
value <= threshold -> color
else -> mediumContrast
}
} }
val label: String val label: String
@@ -183,6 +184,11 @@ class NumberButtonView(
val textSize: Float val textSize: Float
when { when {
value == Entry.SKIP.toDouble() / 1000 -> {
label = resources.getString(R.string.fa_skipped)
textSize = dim(R.dimen.smallTextSize)
typeface = getFontAwesome()
}
value >= 0 -> { value >= 0 -> {
label = value.toShortString() label = value.toShortString()
typeface = BOLD_TYPEFACE typeface = BOLD_TYPEFACE
@@ -216,7 +222,7 @@ class NumberButtonView(
canvas.drawText(units, rect.centerX(), rect.centerY(), pUnit) canvas.drawText(units, rect.centerX(), rect.centerY(), pUnit)
} }
drawNotesIndicator(canvas, color, em, hasNotes) drawNotesIndicator(canvas, color, em, notes)
} }
} }
} }

View File

@@ -72,13 +72,13 @@ class NumberPanelView(
setupButtons() setupButtons()
} }
var notesIndicators = BooleanArray(0) var notes = arrayOf<String>()
set(values) { set(values) {
field = values field = values
setupButtons() setupButtons()
} }
var onEdit: (Timestamp) -> Unit = {} var onEdit: (Timestamp) -> Unit = { _ -> }
set(value) { set(value) {
field = value field = value
setupButtons() setupButtons()
@@ -96,9 +96,9 @@ class NumberPanelView(
index + dataOffset < values.size -> values[index + dataOffset] index + dataOffset < values.size -> values[index + dataOffset]
else -> 0.0 else -> 0.0
} }
button.hasNotes = when { button.notes = when {
index + dataOffset < notesIndicators.size -> notesIndicators[index + dataOffset] index + dataOffset < notes.size -> notes[index + dataOffset]
else -> false else -> ""
} }
button.color = color button.color = color
button.targetType = targetType button.targetType = targetType

View File

@@ -23,19 +23,21 @@ import android.os.Bundle
import android.view.HapticFeedbackConstants import android.view.HapticFeedbackConstants
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.view.View
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import org.isoron.platform.gui.toInt
import org.isoron.uhabits.AndroidDirFinder import org.isoron.uhabits.AndroidDirFinder
import org.isoron.uhabits.HabitsApplication import org.isoron.uhabits.HabitsApplication
import org.isoron.uhabits.R import org.isoron.uhabits.R
import org.isoron.uhabits.activities.AndroidThemeSwitcher import org.isoron.uhabits.activities.AndroidThemeSwitcher
import org.isoron.uhabits.activities.HabitsDirFinder import org.isoron.uhabits.activities.HabitsDirFinder
import org.isoron.uhabits.activities.common.dialogs.CheckmarkDialog import org.isoron.uhabits.activities.common.dialogs.CheckmarkPopup
import org.isoron.uhabits.activities.common.dialogs.ConfirmDeleteDialog import org.isoron.uhabits.activities.common.dialogs.ConfirmDeleteDialog
import org.isoron.uhabits.activities.common.dialogs.HistoryEditorDialog import org.isoron.uhabits.activities.common.dialogs.HistoryEditorDialog
import org.isoron.uhabits.activities.common.dialogs.NumberPickerFactory import org.isoron.uhabits.activities.common.dialogs.NumberPopup
import org.isoron.uhabits.core.commands.Command import org.isoron.uhabits.core.commands.Command
import org.isoron.uhabits.core.commands.CommandRunner import org.isoron.uhabits.core.commands.CommandRunner
import org.isoron.uhabits.core.models.Habit import org.isoron.uhabits.core.models.Habit
@@ -47,6 +49,7 @@ import org.isoron.uhabits.core.ui.screens.habits.show.ShowHabitMenuPresenter
import org.isoron.uhabits.core.ui.screens.habits.show.ShowHabitPresenter import org.isoron.uhabits.core.ui.screens.habits.show.ShowHabitPresenter
import org.isoron.uhabits.core.ui.views.OnDateClickedListener import org.isoron.uhabits.core.ui.views.OnDateClickedListener
import org.isoron.uhabits.intents.IntentFactory import org.isoron.uhabits.intents.IntentFactory
import org.isoron.uhabits.utils.currentTheme
import org.isoron.uhabits.utils.showMessage import org.isoron.uhabits.utils.showMessage
import org.isoron.uhabits.utils.showSendFileScreen import org.isoron.uhabits.utils.showSendFileScreen
import org.isoron.uhabits.widgets.WidgetUpdater import org.isoron.uhabits.widgets.WidgetUpdater
@@ -163,32 +166,49 @@ class ShowHabitActivity : AppCompatActivity(), CommandRunner.Listener {
window.decorView.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY) window.decorView.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY)
} }
override fun showNumberPicker( override fun showNumberPopup(
value: Double, value: Double,
unit: String,
notes: String, notes: String,
dateString: String, preferences: Preferences,
callback: ListHabitsBehavior.NumberPickerCallback, callback: ListHabitsBehavior.NumberPickerCallback
) { ) {
NumberPickerFactory(this@ShowHabitActivity).create(value, unit, notes, dateString, callback).show() val anchor = getPopupAnchor() ?: return
NumberPopup(
context = this@ShowHabitActivity,
prefs = preferences,
notes = notes,
anchor = anchor,
value = value,
).apply {
onToggle = { v, n -> callback.onNumberPicked(v, n) }
show()
}
} }
override fun showCheckmarkDialog( override fun showCheckmarkPopup(
value: Int, selectedValue: Int,
notes: String, notes: String,
dateString: String,
preferences: Preferences, preferences: Preferences,
color: PaletteColor, color: PaletteColor,
callback: ListHabitsBehavior.CheckMarkDialogCallback callback: ListHabitsBehavior.CheckMarkDialogCallback
) { ) {
CheckmarkDialog(this@ShowHabitActivity, preferences).create( val anchor = getPopupAnchor() ?: return
value, CheckmarkPopup(
notes, context = this@ShowHabitActivity,
dateString, prefs = preferences,
color, notes = notes,
callback, color = view.currentTheme().color(color).toInt(),
themeSwitcher.currentTheme!!, anchor = anchor,
).show() value = selectedValue,
).apply {
onToggle = { v, n -> callback.onNotesSaved(v, n) }
show()
}
}
private fun getPopupAnchor(): View? {
val dialog = supportFragmentManager.findFragmentByTag("historyEditor") as HistoryEditorDialog?
return dialog?.dataView
} }
override fun showEditHabitScreen(habit: Habit) { override fun showEditHabitScreen(habit: Habit) {

View File

@@ -23,7 +23,7 @@ import android.content.Intent
import android.content.SharedPreferences import android.content.SharedPreferences
import android.content.SharedPreferences.OnSharedPreferenceChangeListener import android.content.SharedPreferences.OnSharedPreferenceChangeListener
import android.os.Build import android.os.Build
import android.os.Build.VERSION import android.os.Build.VERSION.SDK_INT
import android.os.Bundle import android.os.Bundle
import android.provider.Settings import android.provider.Settings
import android.util.Log import android.util.Log
@@ -63,7 +63,7 @@ class SettingsFragment : PreferenceFragmentCompat(), OnSharedPreferenceChangeLis
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
addPreferencesFromResource(R.xml.preferences) addPreferencesFromResource(R.xml.preferences)
val appContext = context!!.applicationContext val appContext = requireContext().applicationContext
if (appContext is HabitsApplication) { if (appContext is HabitsApplication) {
prefs = appContext.component.preferences prefs = appContext.component.preferences
widgetUpdater = appContext.component.widgetUpdater widgetUpdater = appContext.component.widgetUpdater
@@ -90,10 +90,10 @@ class SettingsFragment : PreferenceFragmentCompat(), OnSharedPreferenceChangeLis
showRingtonePicker() showRingtonePicker()
return true return true
} else if (key == "reminderCustomize") { } else if (key == "reminderCustomize") {
if (VERSION.SDK_INT < Build.VERSION_CODES.O) return true if (SDK_INT < Build.VERSION_CODES.O) return true
createAndroidNotificationChannel(context!!) createAndroidNotificationChannel(requireContext())
val intent = Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS) val intent = Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS)
intent.putExtra(Settings.EXTRA_APP_PACKAGE, context!!.packageName) intent.putExtra(Settings.EXTRA_APP_PACKAGE, requireContext().packageName)
intent.putExtra(Settings.EXTRA_CHANNEL_ID, NotificationTray.REMINDERS_CHANNEL_ID) intent.putExtra(Settings.EXTRA_CHANNEL_ID, NotificationTray.REMINDERS_CHANNEL_ID)
startActivity(intent) startActivity(intent)
return true return true
@@ -103,7 +103,7 @@ class SettingsFragment : PreferenceFragmentCompat(), OnSharedPreferenceChangeLis
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
ringtoneManager = RingtoneManager(activity!!) ringtoneManager = RingtoneManager(requireActivity())
sharedPrefs = preferenceManager.sharedPreferences sharedPrefs = preferenceManager.sharedPreferences
sharedPrefs!!.registerOnSharedPreferenceChangeListener(this) sharedPrefs!!.registerOnSharedPreferenceChangeListener(this)
if (!prefs.isDeveloper) { if (!prefs.isDeveloper) {
@@ -112,7 +112,7 @@ class SettingsFragment : PreferenceFragmentCompat(), OnSharedPreferenceChangeLis
} }
updateWeekdayPreference() updateWeekdayPreference()
if (VERSION.SDK_INT < Build.VERSION_CODES.O) if (SDK_INT < Build.VERSION_CODES.O)
findPreference("reminderCustomize").isVisible = false findPreference("reminderCustomize").isVisible = false
else { else {
findPreference("reminderSound").isVisible = false findPreference("reminderSound").isVisible = false
@@ -146,8 +146,8 @@ class SettingsFragment : PreferenceFragmentCompat(), OnSharedPreferenceChangeLis
val pref = findPreference(key) val pref = findPreference(key)
pref.onPreferenceClickListener = pref.onPreferenceClickListener =
Preference.OnPreferenceClickListener { Preference.OnPreferenceClickListener {
activity!!.setResult(result) requireActivity().setResult(result)
activity!!.finish() requireActivity().finish()
true true
} }
} }

View File

@@ -25,7 +25,6 @@ import android.app.NotificationChannel
import android.app.NotificationManager import android.app.NotificationManager
import android.content.Context import android.content.Context
import android.graphics.BitmapFactory.decodeResource import android.graphics.BitmapFactory.decodeResource
import android.graphics.Color
import android.os.Build import android.os.Build
import android.os.Build.VERSION.SDK_INT import android.os.Build.VERSION.SDK_INT
import android.util.Log import android.util.Log
@@ -150,9 +149,6 @@ class AndroidNotificationTray
if (!disableSound) if (!disableSound)
builder.setSound(ringtoneManager.getURI()) builder.setSound(ringtoneManager.getURI())
if (preferences.shouldMakeNotificationsLed())
builder.setLights(Color.RED, 1000, 1000)
if (SDK_INT < Build.VERSION_CODES.S) { if (SDK_INT < Build.VERSION_CODES.S) {
val snoozeAction = Action( val snoozeAction = Action(
R.drawable.ic_action_snooze, R.drawable.ic_action_snooze,

View File

@@ -90,8 +90,6 @@ class SharedPreferencesStorage
preferences.isMidnightDelayEnabled = getBoolean(key, false) preferences.isMidnightDelayEnabled = getBoolean(key, false)
"pref_sticky_notifications" -> "pref_sticky_notifications" ->
preferences.setNotificationsSticky(getBoolean(key, false)) preferences.setNotificationsSticky(getBoolean(key, false))
"pref_led_notifications" ->
preferences.setNotificationsLed(getBoolean(key, false))
"pref_unknown_enabled" -> { "pref_unknown_enabled" -> {
preferences.areQuestionMarksEnabled = getBoolean(key, false) preferences.areQuestionMarksEnabled = getBoolean(key, false)
} }

View File

@@ -22,14 +22,13 @@ import android.app.Activity
import android.app.KeyguardManager import android.app.KeyguardManager
import android.content.Context import android.content.Context
import android.os.Build import android.os.Build
import android.os.Build.VERSION.SDK_INT
import android.view.WindowManager import android.view.WindowManager
object SystemUtils { object SystemUtils {
val isAndroidOOrLater: Boolean
get() = Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
fun unlockScreen(activity: Activity) { fun unlockScreen(activity: Activity) {
if (isAndroidOOrLater) { if (SDK_INT >= Build.VERSION_CODES.O) {
val km = activity.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager val km = activity.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
km.requestDismissKeyguard(activity, null) km.requestDismissKeyguard(activity, null)
} else { } else {

View File

@@ -20,6 +20,7 @@
package org.isoron.uhabits.utils package org.isoron.uhabits.utils
import android.app.Activity import android.app.Activity
import android.app.Dialog
import android.content.ActivityNotFoundException import android.content.ActivityNotFoundException
import android.content.Intent import android.content.Intent
import android.graphics.Canvas import android.graphics.Canvas
@@ -27,11 +28,14 @@ import android.graphics.Color
import android.graphics.Paint import android.graphics.Paint
import android.graphics.drawable.ColorDrawable import android.graphics.drawable.ColorDrawable
import android.os.Handler import android.os.Handler
import android.os.SystemClock
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.MotionEvent
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.view.ViewGroup.LayoutParams.MATCH_PARENT import android.view.ViewGroup.LayoutParams.MATCH_PARENT
import android.view.ViewGroup.LayoutParams.WRAP_CONTENT import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
import android.view.WindowManager
import android.widget.RelativeLayout import android.widget.RelativeLayout
import android.widget.RelativeLayout.ALIGN_PARENT_BOTTOM import android.widget.RelativeLayout.ALIGN_PARENT_BOTTOM
import android.widget.RelativeLayout.ALIGN_PARENT_TOP import android.widget.RelativeLayout.ALIGN_PARENT_TOP
@@ -202,10 +206,10 @@ fun View.sp(value: Float) = InterfaceUtils.spToPixels(context, value)
fun View.dp(value: Float) = InterfaceUtils.dpToPixels(context, value) fun View.dp(value: Float) = InterfaceUtils.dpToPixels(context, value)
fun View.str(id: Int) = resources.getString(id) fun View.str(id: Int) = resources.getString(id)
fun View.drawNotesIndicator(canvas: Canvas, color: Int, size: Float, hasNotes: Boolean) { fun View.drawNotesIndicator(canvas: Canvas, color: Int, size: Float, notes: String) {
val pNotesIndicator = Paint() val pNotesIndicator = Paint()
pNotesIndicator.color = color pNotesIndicator.color = color
if (hasNotes) { if (notes.isNotBlank()) {
val cy = 0.8f * size val cy = 0.8f * size
canvas.drawCircle(width.toFloat() - cy, cy, 8f, pNotesIndicator) canvas.drawCircle(width.toFloat() - cy, cy, 8f, pNotesIndicator)
} }
@@ -213,3 +217,21 @@ fun View.drawNotesIndicator(canvas: Canvas, color: Int, size: Float, hasNotes: B
val View.sres: StyledResources val View.sres: StyledResources
get() = StyledResources(context) get() = StyledResources(context)
fun Dialog.dimBehind() {
window?.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
window?.setDimAmount(0.5f)
}
fun View.requestFocusWithKeyboard() {
// For some reason, Android does not open the soft keyboard by default when view.requestFocus
// is called. Several online solutions suggest using InputMethodManager, but these solutions
// are not reliable; sometimes the keyboard does not show, and sometimes it does not go away
// after focus is lost. Here, we simulate a click on the view, which triggers the keyboard.
// Based on: https://stackoverflow.com/a/7699556
postDelayed({
val time = SystemClock.uptimeMillis()
dispatchTouchEvent(MotionEvent.obtain(time, time, MotionEvent.ACTION_DOWN, 0f, 0f, 0))
dispatchTouchEvent(MotionEvent.obtain(time, time, MotionEvent.ACTION_UP, 0f, 0f, 0))
}, 250)
}

View File

@@ -22,11 +22,12 @@ package org.isoron.uhabits.widgets.activities
import android.app.Activity import android.app.Activity
import android.content.Context import android.content.Context
import android.os.Bundle import android.os.Bundle
import android.view.Window import android.view.View
import android.view.ViewGroup.LayoutParams.MATCH_PARENT
import android.widget.FrameLayout import android.widget.FrameLayout
import org.isoron.uhabits.HabitsApplication import org.isoron.uhabits.HabitsApplication
import org.isoron.uhabits.activities.AndroidThemeSwitcher import org.isoron.uhabits.activities.AndroidThemeSwitcher
import org.isoron.uhabits.activities.common.dialogs.NumberPickerFactory import org.isoron.uhabits.activities.common.dialogs.NumberPopup
import org.isoron.uhabits.core.ui.screens.habits.list.ListHabitsBehavior import org.isoron.uhabits.core.ui.screens.habits.list.ListHabitsBehavior
import org.isoron.uhabits.core.ui.widgets.WidgetBehavior import org.isoron.uhabits.core.ui.widgets.WidgetBehavior
import org.isoron.uhabits.core.utils.DateUtils import org.isoron.uhabits.core.utils.DateUtils
@@ -39,11 +40,13 @@ class NumericalCheckmarkWidgetActivity : Activity(), ListHabitsBehavior.NumberPi
private lateinit var behavior: WidgetBehavior private lateinit var behavior: WidgetBehavior
private lateinit var data: IntentParser.CheckmarkIntentData private lateinit var data: IntentParser.CheckmarkIntentData
private lateinit var widgetUpdater: WidgetUpdater private lateinit var widgetUpdater: WidgetUpdater
private lateinit var rootView: View
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
requestWindowFeature(Window.FEATURE_NO_TITLE) rootView = FrameLayout(this)
setContentView(FrameLayout(this)) rootView.layoutParams = FrameLayout.LayoutParams(MATCH_PARENT, MATCH_PARENT)
setContentView(rootView)
val app = this.applicationContext as HabitsApplication val app = this.applicationContext as HabitsApplication
val component = app.component val component = app.component
val parser = app.component.intentParser val parser = app.component.intentParser
@@ -55,8 +58,9 @@ class NumericalCheckmarkWidgetActivity : Activity(), ListHabitsBehavior.NumberPi
component.preferences component.preferences
) )
widgetUpdater = component.widgetUpdater widgetUpdater = component.widgetUpdater
showNumberSelector(this) rootView.post {
showNumberSelector(this)
}
SystemUtils.unlockScreen(this) SystemUtils.unlockScreen(this)
} }
@@ -73,16 +77,22 @@ class NumericalCheckmarkWidgetActivity : Activity(), ListHabitsBehavior.NumberPi
private fun showNumberSelector(context: Context) { private fun showNumberSelector(context: Context) {
val app = this.applicationContext as HabitsApplication val app = this.applicationContext as HabitsApplication
AndroidThemeSwitcher(this, app.component.preferences).apply() AndroidThemeSwitcher(this, app.component.preferences).apply()
val numberPickerFactory = NumberPickerFactory(context)
val today = DateUtils.getTodayWithOffset() val today = DateUtils.getTodayWithOffset()
val entry = data.habit.computedEntries.get(today) val entry = data.habit.computedEntries.get(today)
numberPickerFactory.create( NumberPopup(
entry.value / 1000.0, context = context,
data.habit.unit, prefs = app.component.preferences,
entry.notes, anchor = rootView,
today.toDialogDateString(), notes = entry.notes,
this value = entry.value / 1000.0,
).show() ).apply {
onToggle = { value, notes ->
onNumberPicked(value, notes)
finish()
overridePendingTransition(0, 0)
}
show()
}
} }
companion object { companion object {

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Copyright (C) 2016-2021 Álinson Santos Xavier <git@axavier.org>
~
~ This file is part of Loop Habit Tracker.
~
~ Loop Habit Tracker is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by the
~ Free Software Foundation, either version 3 of the License, or (at your
~ option) any later version.
~
~ Loop Habit Tracker is distributed in the hope that it will be useful, but
~ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
~ more details.
~
~ You should have received a copy of the GNU General Public License along
~ with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="?attr/contrast0" />
<stroke
android:width="2dp"
android:color="?contrast40" />
<corners android:radius="5dp" />
</shape>

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2016-2021 Álinson Santos Xavier <git@axavier.org>
~
~ This file is part of Loop Habit Tracker.
~
~ Loop Habit Tracker is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by the
~ Free Software Foundation, either version 3 of the License, or (at your
~ option) any later version.
~
~ Loop Habit Tracker is distributed in the hope that it will be useful, but
~ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
~ more details.
~
~ You should have received a copy of the GNU General Public License along
~ with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<size android:width="1dip"/>
<size android:height="1dip"/>
<solid android:color="?contrast40"/>
</shape>

View File

@@ -1,95 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="12dp"
android:paddingStart="10dp"
android:paddingEnd="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="8dp"
android:baselineAligned="false">
<FrameLayout
style="@style/FormOuterBox"
android:layout_width="0dp"
android:layout_weight="1">
<LinearLayout style="@style/DialogFormInnerBox">
<TextView
style="@style/DialogFormLabel"
android:text="@string/value" />
<LinearLayout
android:orientation="horizontal"
android:gravity="center_horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="8dp">
<Button
android:id="@+id/yesBtn"
android:text="@string/fa_check"
style="@style/CheckmarkDialogBtn"/>
<Button
android:id="@+id/skippedBtn"
android:text="@string/fa_skipped"
android:visibility="gone"
style="@style/CheckmarkDialogBtn"/>
<Button
android:id="@+id/noBtn"
android:text="@string/fa_times"
style="@style/CheckmarkDialogBtn"/>
<Button
android:id="@+id/questionBtn"
android:text="@string/fa_question"
android:visibility="gone"
style="@style/CheckmarkDialogBtn"/>
</LinearLayout>
</LinearLayout>
</FrameLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="5dp"
android:baselineAligned="false">
<FrameLayout
style="@style/FormOuterBox"
android:layout_width="0dp"
android:layout_weight="1">
<LinearLayout style="@style/DialogFormInnerBox">
<TextView
style="@style/DialogFormLabel"
android:text="@string/notes" />
<EditText
android:id="@+id/etNotes"
android:inputType="textCapSentences|textMultiLine"
style="@style/FormInput"
android:scrollbars="vertical"
android:hint="@string/example_notes"/>
</LinearLayout>
</FrameLayout>
</LinearLayout>
</LinearLayout>

View File

@@ -0,0 +1,104 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Copyright (C) 2016-2021 Álinson Santos Xavier <git@axavier.org>
~
~ This file is part of Loop Habit Tracker.
~
~ Loop Habit Tracker is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by the
~ Free Software Foundation, either version 3 of the License, or (at your
~ option) any later version.
~
~ Loop Habit Tracker is distributed in the hope that it will be useful, but
~ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
~ more details.
~
~ You should have received a copy of the GNU General Public License along
~ with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:divider="@drawable/checkmark_dialog_divider"
app:showDividers="middle"
android:orientation="vertical"
android:background="@drawable/checkmark_dialog_bg">
<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/notes"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center"
android:inputType="textCapSentences|textMultiLine"
android:textSize="@dimen/smallTextSize"
android:padding="4dp"
android:background="@color/transparent"
android:hint="@string/notes"
android:text="" />
<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/booleanButtons"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="48dp"
android:orientation="horizontal"
app:divider="@drawable/checkmark_dialog_divider"
app:showDividers="middle">
<TextView
android:id="@+id/yesBtn"
style="@style/CheckmarkPopupBtn"
android:text="@string/fa_check" />
<TextView
android:id="@+id/skipBtn"
style="@style/CheckmarkPopupBtn"
android:text="@string/fa_skipped" />
<TextView
android:id="@+id/noBtn"
style="@style/CheckmarkPopupBtn"
android:text="@string/fa_times" />
<TextView
android:id="@+id/unknownBtn"
style="@style/CheckmarkPopupBtn"
android:text="@string/fa_question" />
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/numberButtons"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="48dp"
android:orientation="horizontal"
app:divider="@drawable/checkmark_dialog_divider"
app:showDividers="middle">
<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/value"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@color/transparent"
android:textAlignment="center"
android:inputType="numberDecimal"
android:selectAllOnFocus="true"
android:textSize="@dimen/smallTextSize" />
<TextView
android:id="@+id/skipBtnNumber"
style="@style/NumericalPopupBtn"
android:text="@string/skip_day" />
<TextView
android:id="@+id/saveBtn"
style="@style/NumericalPopupBtn"
android:text="@string/save" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>

View File

@@ -28,7 +28,6 @@
android:id="@+id/habitNotes" android:id="@+id/habitNotes"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center"
android:textColor="?attr/contrast100" android:textColor="?attr/contrast100"
tools:text="This is some example text for the notes" /> tools:text="This is some example text for the notes" />
</merge> </merge>

View File

@@ -23,7 +23,7 @@
<string name="action_settings">إعدادات</string> <string name="action_settings">إعدادات</string>
<string name="edit">تعديل</string> <string name="edit">تعديل</string>
<string name="delete">حذف</string> <string name="delete">حذف</string>
<string name="archive">أرشفة</string> <string name="archive">أرشيف</string>
<string name="unarchive">إزالة من الأرشيف</string> <string name="unarchive">إزالة من الأرشيف</string>
<string name="add_habit">إضافة عادة</string> <string name="add_habit">إضافة عادة</string>
<string name="color_picker_default_title">تغيير اللون</string> <string name="color_picker_default_title">تغيير اللون</string>
@@ -48,22 +48,22 @@
<string name="intro_title_2">إنشاء بعض عادات جديدة</string> <string name="intro_title_2">إنشاء بعض عادات جديدة</string>
<string name="intro_description_2">كل يوم، بعد أداء عادتك، ضع علامة عليها في التطبيق.</string> <string name="intro_description_2">كل يوم، بعد أداء عادتك، ضع علامة عليها في التطبيق.</string>
<string name="intro_title_4">تتبع تقدمك</string> <string name="intro_title_4">تتبع تقدمك</string>
<string name="intro_description_4">رسوم بيانية مفصلة تُريك كيف تحسنت عاداتك مع مرور الوقت.</string> <string name="intro_description_4">رسوم بيانية مفصلة تُريك كيف تحسنت عاداتك مع مرور الوقت. </string>
<string name="interval_15_minutes">15 دقيقة</string> <string name="interval_15_minutes">15 دقيقة</string>
<string name="interval_30_minutes">30 دقيقة</string> <string name="interval_30_minutes">30 دقيقة</string>
<string name="interval_1_hour">ساعة واحدة</string> <string name="interval_1_hour">ساعة واحدة</string>
<string name="interval_2_hour">ساعتان</string> <string name="interval_2_hour">ساعتان</string>
<string name="interval_4_hour">أربع ساعات</string> <string name="interval_4_hour">أربع ساعات</string>
<string name="interval_8_hour">8 ساعات</string> <string name="interval_8_hour">8 ساعات</string>
<string name="interval_24_hour">٢٤ ساعة</string> <string name="interval_24_hour">24 ساعة</string>
<string name="interval_always_ask">اسأل دائماً </string> <string name="interval_always_ask">اسأل دائماً </string>
<string name="interval_custom">مخصص... </string> <string name="interval_custom">مخصص... </string>
<string name="pref_toggle_title">تبديل وضعية العادة بضغطة قصيرة </string> <string name="pref_toggle_title">تبديل وضعية العادة بضغطة قصيرة </string>
<string name="pref_toggle_description">وضع علامات الاختيار الموجودة بنقرة واحدة بدلاً من الصحافة وعقد. أكثر ملاءمة، ولكن قد يتسبب في تبديل عرضي. </string> <string name="pref_toggle_description_2">ضع علامات اختيار بنقرة واحدة بدلاً من الضغط مع الاستمرار.</string>
<string name="pref_rate_this_app">تقييم هذا التطبيق على جوجل بلاي </string> <string name="pref_rate_this_app">تقييم هذا التطبيق على جوجل بلاي </string>
<string name="pref_send_feedback">أرسل الملاحظات إلى المطور </string> <string name="pref_send_feedback">أرسل الملاحظات إلى المطور </string>
<string name="pref_view_source_code">إفحص التعليمات البرمجية على GitHub </string> <string name="pref_view_source_code">إفحص التعليمات البرمجية على GitHub </string>
<string name="links">روابط </string> <string name="links">روابط </string>
<string name="name">اسم </string> <string name="name">اسم </string>
<string name="settings">إعدادات</string> <string name="settings">إعدادات</string>
<string name="select_snooze_delay">حدد تأخير الغفوة </string> <string name="select_snooze_delay">حدد تأخير الغفوة </string>
@@ -103,7 +103,7 @@
<string name="generate_bug_report">توليد تقرير الاعطال. </string> <string name="generate_bug_report">توليد تقرير الاعطال. </string>
<string name="troubleshooting">استكشاف الأخطاء وإصلاحها. </string> <string name="troubleshooting">استكشاف الأخطاء وإصلاحها. </string>
<string name="help_translate">المساعدة في ترجمة هذا البرنامج. </string> <string name="help_translate">المساعدة في ترجمة هذا البرنامج. </string>
<string name="night_mode" comment="dark_theme">الوضع الليلي. </string> <string name="night_mode">الوضع الليلي. </string>
<string name="use_pure_black">استخدام أسود نقي في الوضع الليلي. </string> <string name="use_pure_black">استخدام أسود نقي في الوضع الليلي. </string>
<string name="pure_black_description">يستبدل خلفيات رمادية مع أسود نقي في الوضع الليلي. يقلل من استهلاك البطارية في الهواتف مع شاشة AMOLED. .</string> <string name="pure_black_description">يستبدل خلفيات رمادية مع أسود نقي في الوضع الليلي. يقلل من استهلاك البطارية في الهواتف مع شاشة AMOLED. .</string>
<string name="interface_preferences">السطح البيني. </string> <string name="interface_preferences">السطح البيني. </string>
@@ -113,7 +113,7 @@
<string name="week">أسبوع. </string> <string name="week">أسبوع. </string>
<string name="month">شهر. </string> <string name="month">شهر. </string>
<string name="quarter">ربع سنه. </string> <string name="quarter">ربع سنه. </string>
<string name="year">عام. </string> <string name="year">عام</string>
<string name="total">المجموع. </string> <string name="total">المجموع. </string>
<string name="yes_or_no">نعم أو لا </string> <string name="yes_or_no">نعم أو لا </string>
<string name="every_x_days">كل %d أيام </string> <string name="every_x_days">كل %d أيام </string>
@@ -123,6 +123,7 @@
<string name="none">صامت </string> <string name="none">صامت </string>
<string name="filter">تصنيف </string> <string name="filter">تصنيف </string>
<string name="hide_completed">إخفاء المكتملة </string> <string name="hide_completed">إخفاء المكتملة </string>
<string name="hide_entered">إخفاء المُدخل</string>
<string name="hide_archived">إخفاء المؤرشفة </string> <string name="hide_archived">إخفاء المؤرشفة </string>
<string name="sticky_notifications">جعل الإشعارات ثابتة </string> <string name="sticky_notifications">جعل الإشعارات ثابتة </string>
<string name="sticky_notifications_description">منع الإشعارات من تمريرها بعيداً. </string> <string name="sticky_notifications_description">منع الإشعارات من تمريرها بعيداً. </string>
@@ -142,9 +143,12 @@
<string name="by_status">حسب الحالة</string> <string name="by_status">حسب الحالة</string>
<string name="export">استخراج </string> <string name="export">استخراج </string>
<string name="long_press_to_edit">اضغط مع الاستمرار لتغيرالقيمه</string> <string name="long_press_to_edit">اضغط مع الاستمرار لتغيرالقيمه</string>
<string name="change_value">تغيير القيمة </string> <string name="value">القيمة</string>
<string name="calendar">التقويم </string> <string name="calendar">التقويم </string>
<string name="unit">الوحدة </string> <string name="unit">الوحدة </string>
<string name="target_type">نوع الهدف</string>
<string name="target_type_at_least">على الأقل</string>
<string name="target_type_at_most">على الأكثر</string>
<string name="example_question_boolean">على سبيل المثال هل تمرنت اليوم؟ </string> <string name="example_question_boolean">على سبيل المثال هل تمرنت اليوم؟ </string>
<string name="question">السؤال </string> <string name="question">السؤال </string>
<string name="target">الهدف </string> <string name="target">الهدف </string>
@@ -166,6 +170,7 @@
<string name="measurable_example">مثال، كم ميلاً قطعته اليوم؟ كم عدد الصفحات التي قرأتها؟</string> <string name="measurable_example">مثال، كم ميلاً قطعته اليوم؟ كم عدد الصفحات التي قرأتها؟</string>
<string name="x_times_per_week">%d مرة في الأسبوع</string> <string name="x_times_per_week">%d مرة في الأسبوع</string>
<string name="x_times_per_month">%d مرة في الشهر</string> <string name="x_times_per_month">%d مرة في الشهر</string>
<string name="x_times_per_y_days">%d مرات في %d أيام</string>
<string name="yes_or_no_short_example">مثال: التمرين</string> <string name="yes_or_no_short_example">مثال: التمرين</string>
<string name="color">اللون</string> <string name="color">اللون</string>
<string name="example_target">مثال: 15</string> <string name="example_target">مثال: 15</string>
@@ -184,6 +189,7 @@
<string name="pref_skip_title">تمكين أيام التخطي</string> <string name="pref_skip_title">تمكين أيام التخطي</string>
<string name="pref_skip_description">بدّل مرتين لإضافة تخطي بدلاً من علامة اختيار. التخطيات تحافظ على درجاتك دون تغيير أو خسارة سلسلة الانتصارات.</string> <string name="pref_skip_description">بدّل مرتين لإضافة تخطي بدلاً من علامة اختيار. التخطيات تحافظ على درجاتك دون تغيير أو خسارة سلسلة الانتصارات.</string>
<string name="pref_unknown_title">إظهار علامات الاستفهام للبيانات المفقودة</string> <string name="pref_unknown_title">إظهار علامات الاستفهام للبيانات المفقودة</string>
<string name="pref_unknown_description">التفريق بين الأيام التي لا تحتوي على بيانات من الهفوات الفعلية. للدخول في اللقطات المتتابعة ، قم بالتبديل مرتين.</string>
<string name="you_are_now_a_developer">أنت الآن مطوَِر برمجيات!</string> <string name="you_are_now_a_developer">أنت الآن مطوَِر برمجيات!</string>
<string name="activity_not_found">لم يتم العثور على تطبيق لإتمام هذا الإجراء</string> <string name="activity_not_found">لم يتم العثور على تطبيق لإتمام هذا الإجراء</string>
<string name="pref_midnight_delay_title">تمديد اليوم بضع ساعات بعد منتصف الليل</string> <string name="pref_midnight_delay_title">تمديد اليوم بضع ساعات بعد منتصف الليل</string>

View File

@@ -56,7 +56,6 @@
<string name="interval_8_hour">8 часа</string> <string name="interval_8_hour">8 часа</string>
<string name="interval_24_hour">24 часа</string> <string name="interval_24_hour">24 часа</string>
<string name="pref_toggle_title">Маркиране с кратко натискане</string> <string name="pref_toggle_title">Маркиране с кратко натискане</string>
<string name="pref_toggle_description">Поставяне на отметки с кратко натискане вместо с натискане и задържане. По-удобно, но може да доведе до неволно маркиране.</string>
<string name="pref_rate_this_app">Оценяване на това приложение в Google Play</string> <string name="pref_rate_this_app">Оценяване на това приложение в Google Play</string>
<string name="pref_send_feedback">Изпращане на отзиви към разработчика</string> <string name="pref_send_feedback">Изпращане на отзиви към разработчика</string>
<string name="pref_view_source_code">Преглед на програмния код в GitHub</string> <string name="pref_view_source_code">Преглед на програмния код в GitHub</string>
@@ -99,7 +98,7 @@
<string name="generate_bug_report">Генериране на доклад за грешки</string> <string name="generate_bug_report">Генериране на доклад за грешки</string>
<string name="troubleshooting">Отстраняване на проблеми</string> <string name="troubleshooting">Отстраняване на проблеми</string>
<string name="help_translate">Помагане за превода на това приложение</string> <string name="help_translate">Помагане за превода на това приложение</string>
<string name="night_mode" comment="dark_theme">Нощен режим</string> <string name="night_mode">Нощен режим</string>
<string name="use_pure_black">Използване на чисто черно при нощен режим</string> <string name="use_pure_black">Използване на чисто черно при нощен режим</string>
<string name="pure_black_description">Заменя сивите фонове с чисто черни при нощен режим. Намаля разхода на батерията при телефони с AMOLED дисплеи.</string> <string name="pure_black_description">Заменя сивите фонове с чисто черни при нощен режим. Намаля разхода на батерията при телефони с AMOLED дисплеи.</string>
<string name="interface_preferences">Интерфейс</string> <string name="interface_preferences">Интерфейс</string>
@@ -133,4 +132,5 @@
<string name="by_color">По цвят</string> <string name="by_color">По цвят</string>
<string name="by_score">По сила</string> <string name="by_score">По сила</string>
<string name="export">Експортиране</string> <string name="export">Експортиране</string>
<string name="x_times_per_y_days">%d пъти в период от %d дни</string>
</resources> </resources>

View File

@@ -26,7 +26,7 @@
<string name="archive">Arxivar</string> <string name="archive">Arxivar</string>
<string name="unarchive">Treure de l\'arxiu</string> <string name="unarchive">Treure de l\'arxiu</string>
<string name="add_habit">Afegir hàbit</string> <string name="add_habit">Afegir hàbit</string>
<string name="color_picker_default_title">Canviar color</string> <string name="color_picker_default_title">Canviar el color</string>
<string name="toast_habit_created">Hàbit creat.</string> <string name="toast_habit_created">Hàbit creat.</string>
<plurals name="toast_habits_changed"> <plurals name="toast_habits_changed">
<item quantity="one">Hàbit modificat.</item> <item quantity="one">Hàbit modificat.</item>
@@ -67,7 +67,6 @@
<string name="interval_always_ask">Pregunta sempre</string> <string name="interval_always_ask">Pregunta sempre</string>
<string name="interval_custom">Personalitza...</string> <string name="interval_custom">Personalitza...</string>
<string name="pref_toggle_title">Activar/desactivar repeticions prement curt</string> <string name="pref_toggle_title">Activar/desactivar repeticions prement curt</string>
<string name="pref_toggle_description">Posar les marques de verificació amb un sol toc enlloc de prémer i mantenir. Més adequat, però pot causar activacions accidentals.</string>
<string name="pref_rate_this_app">Valora aquesta app a Google Play</string> <string name="pref_rate_this_app">Valora aquesta app a Google Play</string>
<string name="pref_send_feedback">Enviar resposta al desenvolupador</string> <string name="pref_send_feedback">Enviar resposta al desenvolupador</string>
<string name="pref_view_source_code">Veure codi font a Github</string> <string name="pref_view_source_code">Veure codi font a Github</string>
@@ -82,6 +81,10 @@
<item quantity="one">Esborrar hàbit</item> <item quantity="one">Esborrar hàbit</item>
<item quantity="other">Esborrar hàbit</item> <item quantity="other">Esborrar hàbit</item>
</plurals> </plurals>
<plurals name="delete_habits_message">
<item quantity="one">L\' hàbit serà esborrat permanentment. Aquesta acció no es pot desfer.</item>
<item quantity="other">Els hàbits seran esborrats permanentment. Aquesta acció no es pot desfer.</item>
</plurals>
<string name="habit_not_found">Hàbit suprimit / no trobat</string> <string name="habit_not_found">Hàbit suprimit / no trobat</string>
<string name="weekends">Caps de setmana</string> <string name="weekends">Caps de setmana</string>
<string name="any_weekday">Dilluns a divendres</string> <string name="any_weekday">Dilluns a divendres</string>
@@ -115,7 +118,7 @@
<string name="generate_bug_report">Generar informe d\'error</string> <string name="generate_bug_report">Generar informe d\'error</string>
<string name="troubleshooting">Resolució de problemes</string> <string name="troubleshooting">Resolució de problemes</string>
<string name="help_translate">Ajuda a traduïr aquesta app</string> <string name="help_translate">Ajuda a traduïr aquesta app</string>
<string name="night_mode" comment="dark_theme">Mode nocturn</string> <string name="night_mode">Mode nocturn</string>
<string name="use_pure_black">Utilitzar negre pur en el mode nocturn</string> <string name="use_pure_black">Utilitzar negre pur en el mode nocturn</string>
<string name="pure_black_description">Reemplaça fons grisos per negre pur en el mode nocturn. Redueix consum de bateria en telèfons amb pantalla AMOLED.</string> <string name="pure_black_description">Reemplaça fons grisos per negre pur en el mode nocturn. Redueix consum de bateria en telèfons amb pantalla AMOLED.</string>
<string name="interface_preferences">Interfície</string> <string name="interface_preferences">Interfície</string>
@@ -154,7 +157,6 @@
<string name="by_status">Per estat</string> <string name="by_status">Per estat</string>
<string name="export">Exportar</string> <string name="export">Exportar</string>
<string name="long_press_to_edit">Prémer i mantenir per a canviar el valor</string> <string name="long_press_to_edit">Prémer i mantenir per a canviar el valor</string>
<string name="change_value">Canviar el valor</string>
<string name="calendar">Calendari</string> <string name="calendar">Calendari</string>
<string name="unit">Unitat</string> <string name="unit">Unitat</string>
<string name="example_question_boolean">p.e. Has fet exercici avui?</string> <string name="example_question_boolean">p.e. Has fet exercici avui?</string>
@@ -175,8 +177,10 @@
<string name="example_notes">Opcional</string> <string name="example_notes">Opcional</string>
<string name="yes_or_no_example">Per exemple, us heu despertat aviat? Heu fet exercici? Heu jugat a escacs?</string> <string name="yes_or_no_example">Per exemple, us heu despertat aviat? Heu fet exercici? Heu jugat a escacs?</string>
<string name="measurable">Mesurable</string> <string name="measurable">Mesurable</string>
<string name="measurable_example">p.e. Quants quilòmetres has fet hui? Quantes pàgines has llegit?</string>
<string name="x_times_per_week">%d vegades per setmana</string> <string name="x_times_per_week">%d vegades per setmana</string>
<string name="x_times_per_month">%d vegades al mes</string> <string name="x_times_per_month">%d vegades al mes</string>
<string name="x_times_per_y_days">%d vegades en %d dies</string>
<string name="yes_or_no_short_example">Ex. Exercici</string> <string name="yes_or_no_short_example">Ex. Exercici</string>
<string name="color">Color</string> <string name="color">Color</string>
<string name="example_target">ex. 15</string> <string name="example_target">ex. 15</string>
@@ -186,4 +190,18 @@
<string name="every_month">Cada mes</string> <string name="every_month">Cada mes</string>
<string name="validation_cannot_be_blank">No es pot deixar en blanc</string> <string name="validation_cannot_be_blank">No es pot deixar en blanc</string>
<string name="today">Avui</string> <string name="today">Avui</string>
<string name="enter">Introduïr</string>
<string name="no_habits">No s\'han trobat hàbits.</string>
<string name="no_numerical_habits">No s\'han trobat hàbits mesurables</string>
<string name="no_boolean_habits">No s\'han trobat hàbits de sí o no</string>
<string name="increment">Increment</string>
<string name="decrement">Disminueix</string>
<string name="pref_skip_title">Activa omitir dies</string>
<string name="pref_skip_description">Toca dues vegades per a afegir una omissió en compte d\'una marca de verificació. Les omissions mantenen la teua puntuació sense canvis i no trenquen la ratxa.</string>
<string name="pref_unknown_title">Mostra signes d\'interrogació per a les dades que falten</string>
<string name="pref_unknown_description">Diferenciar els dies sense dades dels lapses reals. Per introduir un lapse, canvia dues vegades.</string>
<string name="you_are_now_a_developer">Ara eres un desenvolupador</string>
<string name="activity_not_found">No s\'ha trobat cap aplicació per a gestionar aquesta acció</string>
<string name="pref_midnight_delay_title">Ampliar el dia unes hores després de la mitjanit</string>
<string name="pref_midnight_delay_description">Esperar fins a les 3:00 per mostrar un nou dia. Útil si normalment vas a dormir després de la mitjanit. Requereix el reinici de l\'aplicació.</string>
</resources> </resources>

View File

@@ -35,7 +35,8 @@
<string name="reminder">Připomenutí</string> <string name="reminder">Připomenutí</string>
<string name="save">Uložit</string> <string name="save">Uložit</string>
<string name="streaks">Série</string> <string name="streaks">Série</string>
<string name="no_habits_found">Nemáte žádné nedokončené zvyky</string> <string name="no_habits_found">Nemáte zapsané žádné zvyky</string>
<string name="no_habits_left_to_do">Splnili jste vše pro dnešní den!</string>
<string name="long_press_to_toggle">Stiskni a drž pro označení</string> <string name="long_press_to_toggle">Stiskni a drž pro označení</string>
<string name="reminder_off">Vyp.</string> <string name="reminder_off">Vyp.</string>
<string name="create_habit">Vytvořit zvyk</string> <string name="create_habit">Vytvořit zvyk</string>
@@ -43,11 +44,11 @@
<string name="check">Hotovo</string> <string name="check">Hotovo</string>
<string name="snooze">Odložit</string> <string name="snooze">Odložit</string>
<string name="intro_title_1">Vítejte</string> <string name="intro_title_1">Vítejte</string>
<string name="intro_description_1">Sledování zvyků ti pomůže vytvořit a dosáhnout dobrých návyků.</string> <string name="intro_description_1">Sledování zvyků Vám pomůže vytvořit a dosáhnout dobrých návyků.</string>
<string name="intro_title_2">Vytvoř si nové zvyky</string> <string name="intro_title_2">Vytvoř si nové zvyky</string>
<string name="intro_description_2">Každý den po splnění zvyku, si ho v aplikaci zaškrtni.</string> <string name="intro_description_2">Každý den po splnění zvyku si ho v aplikaci zaškrtněte.</string>
<string name="intro_title_4">Sleduj svůj postup</string> <string name="intro_title_4">Sledujte svůj pokrok</string>
<string name="intro_description_4">Detailní grafy ti ukážou, jak se tvé zvyky v průběhu času zlepšily.</string> <string name="intro_description_4">Detailní grafy Vám ukážou, jak se Vaše zvyky v průběhu času zlepšily. </string>
<string name="interval_15_minutes">15 minut</string> <string name="interval_15_minutes">15 minut</string>
<string name="interval_30_minutes">30 minut</string> <string name="interval_30_minutes">30 minut</string>
<string name="interval_1_hour">Hodina</string> <string name="interval_1_hour">Hodina</string>
@@ -58,7 +59,6 @@
<string name="interval_always_ask">Vždy se ptát</string> <string name="interval_always_ask">Vždy se ptát</string>
<string name="interval_custom">Vlastní...</string> <string name="interval_custom">Vlastní...</string>
<string name="pref_toggle_title">Označte opakování krátkým stisknutím</string> <string name="pref_toggle_title">Označte opakování krátkým stisknutím</string>
<string name="pref_toggle_description">Praktičtější, ale může způsobit nechtěné označení.</string>
<string name="pref_rate_this_app">Ohodnoťte nás v Google Play</string> <string name="pref_rate_this_app">Ohodnoťte nás v Google Play</string>
<string name="pref_send_feedback">Zpětná vazba vývojáři</string> <string name="pref_send_feedback">Zpětná vazba vývojáři</string>
<string name="pref_view_source_code">Zobrazit zdroj. kód na GitHub</string> <string name="pref_view_source_code">Zobrazit zdroj. kód na GitHub</string>
@@ -67,66 +67,66 @@
<string name="settings">Nastavení</string> <string name="settings">Nastavení</string>
<string name="select_snooze_delay">Nastavit délku odložení</string> <string name="select_snooze_delay">Nastavit délku odložení</string>
<string name="hint_title">Věděli jste?</string> <string name="hint_title">Věděli jste?</string>
<string name="hint_drag">Přeřazení záznamů proveď stisknutím a podržením názvu zvyku a poté přesunutím na správné místo.</string> <string name="hint_drag">Přeřazení záznamů proveďte stisknutím a podržením názvu zvyku a poté přesunutím na správné místo.</string>
<string name="hint_landscape">Můžeš vidět více dnů otočením telefonu na šířku.</string> <string name="hint_landscape">Můžete vidět více dnů otočením telefonu na šířku.</string>
<string name="habit_not_found">Zvyk smazán / nenalezen</string> <string name="habit_not_found">Zvyk smazán / nenalezen</string>
<string name="weekends">Víkendy</string> <string name="weekends">Víkendy</string>
<string name="any_weekday">Pondělí až pátek</string> <string name="any_weekday">Pondělí až pátek</string>
<string name="any_day">Jakýkoliv den v týdnu</string> <string name="any_day">Jakýkoliv den v týdnu</string>
<string name="select_weekdays">Vyber dny</string> <string name="select_weekdays">Vyberte dny</string>
<string name="export_to_csv">Exportovat CSV</string> <string name="export_to_csv">Exportovat CSV</string>
<string name="done_label">Hotovo</string> <string name="done_label">Hotovo</string>
<string name="clear_label">Smazat</string> <string name="clear_label">Smazat</string>
<string name="select_hours">Vyber hodiny</string> <string name="select_hours">Vyberte hodiny</string>
<string name="select_minutes">Vyber minuty</string> <string name="select_minutes">Vyberte minuty</string>
<string name="about">O nás</string> <string name="about">O nás</string>
<string name="translators">Překladatelé</string> <string name="translators">Překladatelé</string>
<string name="developers">Vývojáři</string> <string name="developers">Vývojáři</string>
<string name="version_n">Verze %s</string> <string name="version_n">Verze %s</string>
<string name="frequency">Frekvence</string> <string name="frequency">Frekvence</string>
<string name="checkmark">Zatržítko</string> <string name="checkmark">Fajfka</string>
<string name="best_streaks">Nejlepší serie</string> <string name="best_streaks">Nejlepší série</string>
<string name="every_day">Každý den</string> <string name="every_day">Každý den</string>
<string name="every_week">Každý týden</string> <string name="every_week">Každý týden</string>
<string name="help">Pomoc a FAQ</string> <string name="help">Pomoc a FAQ</string>
<string name="could_not_export">Export selhal.</string> <string name="could_not_export">Export selhal.</string>
<string name="could_not_import">Import selhal.</string> <string name="could_not_import">Import selhal.</string>
<string name="file_not_recognized">Soubor netozpoznán.</string> <string name="file_not_recognized">Soubor nerozpoznán.</string>
<string name="habits_imported">Zvyky úspěšně importovány.</string> <string name="habits_imported">Zvyky úspěšně importovány.</string>
<string name="import_data">Importovat</string> <string name="import_data">Importovat</string>
<string name="export_full_backup">Kompletní export</string> <string name="export_full_backup">Kompletní export</string>
<string name="import_data_summary">Podpora exportů z této aplikace, ale také souborů vygenerovaných aplikacemi od Tickmate, HabitBull nebo Rewire. Pro více info si prečti FAQ.</string> <string name="import_data_summary">Podporuje exporty z této aplikace, ale také soubory vygenerované aplikacemi od Tickmate, HabitBull nebo Rewire. Pro více informací si prečtěte FAQ.</string>
<string name="export_as_csv_summary">Generuje soubory, které můžeš otevřít v tabulkových editorech, jako jsou Microsoft Excel nebo OpenOffice Calc. Tyto soubory nelze importovat zpět.</string> <string name="export_as_csv_summary">Generuje soubory, které mohou být otevřeny v tabulkových editorech jako jsou Microsoft Excel nebo OpenOffice Calc. Tyto soubory nelze importovat zpět.</string>
<string name="export_full_backup_summary">Generuje soubor, který obsahuje všechna tvoje data. Tento soubor můžeš importovat zpět.</string> <string name="export_full_backup_summary">Generuje soubor, který obsahuje všechna Vaše data. Tento soubor může být importován zpět.</string>
<string name="bug_report_failed">Generace výpisu chyb selhala.</string> <string name="bug_report_failed">Generace výpisu chyb selhala.</string>
<string name="generate_bug_report">Generovat výpis chyb</string> <string name="generate_bug_report">Generovat výpis chyb</string>
<string name="troubleshooting">Řešení problémů</string> <string name="troubleshooting">Řešení problémů</string>
<string name="help_translate">Pomozte s překladem aplikace</string> <string name="help_translate">Pomozte s překladem aplikace</string>
<string name="night_mode" comment="dark_theme">Noční téma</string> <string name="night_mode">Temný motiv</string>
<string name="use_pure_black">Zobrazit čistě černou v nočním tématu</string> <string name="use_pure_black">Zobrazit čistě černou v temném motivu</string>
<string name="pure_black_description">Nahra šedé pozadí čistou černou v nočním tématu. Snižuje spotřebu baterie v telefonech s AMOLED displejem.</string> <string name="pure_black_description">Nahrazuje v temném motivu šedé pozadí čistou černou. Snižuje spotřebu baterie v telefonech s AMOLED displejem.</string>
<string name="interface_preferences">Rozhraní</string> <string name="interface_preferences">Rozhraní</string>
<string name="reverse_days">Otočit pořadí dnů</string> <string name="reverse_days">Otočit pořadí dnů</string>
<string name="reverse_days_description">Zobrazí dny na úvodní stránce v obráceném pořadí</string> <string name="reverse_days_description">Zobrazit dny na úvodní stránce v obráceném pořadí.</string>
<string name="day">Den</string> <string name="day">Den</string>
<string name="week">Týden</string> <string name="week">Týden</string>
<string name="month">Měsíc</string> <string name="month">Měsíc</string>
<string name="quarter">Čtvrtletí</string> <string name="quarter">Čtvrtletí</string>
<string name="year">Rok</string> <string name="year">Rok</string>
<string name="total">Celkem</string> <string name="total">Celkem</string>
<string name="yes_or_no">Ano, či Ne</string> <string name="yes_or_no">Ano nebo Ne</string>
<string name="every_x_days">Každých %d dní</string> <string name="every_x_days">Každých %d dní</string>
<string name="every_x_weeks">Každých %d týdnů</string> <string name="every_x_weeks">Každých %d týdnů</string>
<string name="score">Skóre</string> <string name="score">Skóre</string>
<string name="reminder_sound">Zvuk upomínky</string> <string name="reminder_sound">Zvuk připomínky</string>
<string name="none">Žádný</string> <string name="none">Žádný</string>
<string name="filter">Filtr</string> <string name="filter">Filtr</string>
<string name="hide_completed">Skrýt dokončené</string> <string name="hide_completed">Skrýt dokončené</string>
<string name="hide_archived">Skrýt archivované</string> <string name="hide_archived">Skrýt archivované</string>
<string name="sticky_notifications">Připnout notifikaci</string> <string name="sticky_notifications">Připnout upozornění</string>
<string name="sticky_notifications_description">Zabraňuje notifikaci její odstranění odsunutím.</string> <string name="sticky_notifications_description">Zabraňuje odstranění upozornění přejetím. </string>
<string name="led_notifications">Světelná notifikace</string> <string name="led_notifications">Světelné upozornění</string>
<string name="led_notifications_description">Telefon zabliká při upozornění. Fungující pouze na telefonech s notifikační LED diodou.</string> <string name="led_notifications_description">Blikání diody při upozornění. Funkční pouze na telefonech s notifikační LED diodou.</string>
<string name="repair_database">Opravit databázi</string> <string name="repair_database">Opravit databázi</string>
<string name="database_repaired">Databáze opravena.</string> <string name="database_repaired">Databáze opravena.</string>
<string name="uncheck">Odznačit</string> <string name="uncheck">Odznačit</string>
@@ -138,39 +138,54 @@
<string name="by_name">Abecedně</string> <string name="by_name">Abecedně</string>
<string name="by_color">Podle barvy</string> <string name="by_color">Podle barvy</string>
<string name="by_score">Podle skóre</string> <string name="by_score">Podle skóre</string>
<string name="by_status">Podle statusu</string>
<string name="export">Export</string> <string name="export">Export</string>
<string name="long_press_to_edit">Stiskni a drž pro změnu hodnoty</string> <string name="long_press_to_edit">Stiskněte a držte pro změnu hodnoty</string>
<string name="change_value">Změnit hodnotu</string>
<string name="calendar">Kalendář</string> <string name="calendar">Kalendář</string>
<string name="unit">Jednotka</string> <string name="unit">Jednotka</string>
<string name="example_question_boolean">např. Cvičil jsi dnes?</string> <string name="example_question_boolean">Např. Cvičil jsi dnes?</string>
<string name="question">Otázka</string> <string name="question">Otázka</string>
<string name="target">Cíl</string> <string name="target">Cíl</string>
<string name="yes">Ano</string> <string name="yes">Ano</string>
<string name="no">Ne</string> <string name="no">Ne</string>
<string name="customize_notification_summary">Změnit zvuk, vibrace, světlo a další nastavení notifikací</string> <string name="customize_notification_summary">Změnit zvuk, vibrace, světlo a další nastavení upozornění</string>
<string name="customize_notification">Přizpůsobit oznáme</string> <string name="customize_notification">Přizpůsobit upozorně</string>
<string name="pref_view_privacy">Zobrazit zásady ochrany osobních údajů</string> <string name="pref_view_privacy">Zobrazit zásady ochrany osobních údajů</string>
<string name="view_all_contributors">Zobrazit všechny přispěvatele&#8230;</string> <string name="view_all_contributors">Zobrazit všechny přispěvatele&#8230;</string>
<string name="database">Databáze</string> <string name="database">Databáze</string>
<string name="widget_opacity_title">Neprůhlednost widgetu</string> <string name="widget_opacity_title">Průhlednost widgetu</string>
<string name="widget_opacity_description">Udělá widgety průhlednější nebo neprůhlednější na domovské obrazovce.</string> <string name="widget_opacity_description">Upravuje průhlednost pozadí widgetu na domovské obrazovce.</string>
<string name="first_day_of_the_week">První den v týdnu</string> <string name="first_day_of_the_week">První den v týdnu</string>
<string name="default_reminder_question">Dokončili jste dnes tento vyk?</string> <string name="default_reminder_question">Dokončili jste dnes tento zvyk?</string>
<string name="notes">Poznámky</string> <string name="notes">Poznámky</string>
<string name="example_notes">(nepovinné)</string> <string name="example_notes">(nepovinné)</string>
<string name="yes_or_no_example">např. Vzbudil ses dnes brzy? Cvičil jsi dnes? Hrál jsi šachy?</string> <string name="yes_or_no_example">Např. Vzbudil ses dnes brzy? Cvičil jsi dnes? Hrál jsi šachy?</string>
<string name="measurable">Měřitelný</string> <string name="measurable">Měřitelný</string>
<string name="measurable_example">Např. Kolik kilometrů jsi dnes uběhl? Kolik stránek jsi dnes přečetl?</string>
<string name="x_times_per_week">%d krát týdně</string> <string name="x_times_per_week">%d krát týdně</string>
<string name="x_times_per_month">%d krát za měsíc</string> <string name="x_times_per_month">%d krát za měsíc</string>
<string name="yes_or_no_short_example">např. Cviče</string> <string name="x_times_per_y_days">%d krát za %d d</string>
<string name="yes_or_no_short_example">Např. Cvičení</string>
<string name="color">Barva</string> <string name="color">Barva</string>
<string name="example_target">např. 15</string> <string name="example_target">Např. 15</string>
<string name="measurable_short_example">např. Běh</string> <string name="measurable_short_example">Např. Běh</string>
<string name="measurable_question_example">Např. kolik mil jste dnes uběhl?</string> <string name="measurable_question_example">Např. Kolik kilometrů jste dnes uběhl?</string>
<string name="measurable_units_example">např. míle</string> <string name="measurable_units_example">Např. Kilometry</string>
<string name="every_month">Každý měsíc</string> <string name="every_month">Každý měsíc</string>
<string name="validation_cannot_be_blank">Musíte vyplnit</string> <string name="validation_cannot_be_blank">Musíte vyplnit</string>
<string name="today">Dnes</string> <string name="today">Dnes</string>
<string name="enter">Vyplnit</string>
<string name="no_habits">Nenalezeny žádné zvyky</string>
<string name="no_numerical_habits">Nenalezeny žádné měřitelné zvyky</string>
<string name="no_boolean_habits">Nenalezeny žádné \"ano/ne\" zvyky</string>
<string name="increment">Zvětšit</string>
<string name="decrement">Zmenšit</string>
<string name="pref_skip_title">Povolit přeskakování dnů</string>
<string name="pref_skip_description">Klikněte dvakrát pro přidání pomlčky (přeskočení dne) místo fajfky. Pomlčka nezmění Vaše skóre, ani nepřeruší Vaši výzvu. </string>
<string name="pref_unknown_title">Při chybějícím údaji zobrazit otazník</string>
<string name="pref_unknown_description">Odlište dny bez údajů od nesplněného zvyku. Pro zadání \"nesplněno\" klikněte dvakrát. </string>
<string name="you_are_now_a_developer">Nyní jste vývojář</string> <string name="you_are_now_a_developer">Nyní jste vývojář</string>
<string name="activity_not_found">Pro daný krok nebyla nalezena aplikace</string>
<string name="pref_midnight_delay_title">Po půlnoci prodloužit den o několik hodin</string>
<string name="pref_midnight_delay_description">Počkat do 3:00 ráno pro zobrazení nového dne. Užitečné, pokud chodíte spát po půlnoci. Vyžaduje restartování aplikace. </string>
</resources> </resources>

View File

@@ -75,7 +75,6 @@
<string name="interval_always_ask">Spørg altid</string> <string name="interval_always_ask">Spørg altid</string>
<string name="interval_custom">Brugerdefineret...</string> <string name="interval_custom">Brugerdefineret...</string>
<string name="pref_toggle_title">Tjek vaner med kort tryk</string> <string name="pref_toggle_title">Tjek vaner med kort tryk</string>
<string name="pref_toggle_description">Sæt tjekmærker med et enkelt tryk i stedet for tryk-og-hold. Mere bekvemmeligt, men kan forårsage uhensigtede tryk.</string>
<string name="pref_rate_this_app">Bedøm denne app på Google Play</string> <string name="pref_rate_this_app">Bedøm denne app på Google Play</string>
<string name="pref_send_feedback">Send feedback til udvikleren</string> <string name="pref_send_feedback">Send feedback til udvikleren</string>
<string name="pref_view_source_code">Se kildekoden på GitHub</string> <string name="pref_view_source_code">Se kildekoden på GitHub</string>
@@ -136,7 +135,7 @@
<string name="generate_bug_report">Generer fejlrapport</string> <string name="generate_bug_report">Generer fejlrapport</string>
<string name="troubleshooting">Fejlfinding</string> <string name="troubleshooting">Fejlfinding</string>
<string name="help_translate">Hjælpe med at oversætte denne app</string> <string name="help_translate">Hjælpe med at oversætte denne app</string>
<string name="night_mode" comment="dark_theme">Nat-tilstand</string> <string name="night_mode">Nat-tilstand</string>
<string name="use_pure_black">Brug ren sort i nat-tilstand</string> <string name="use_pure_black">Brug ren sort i nat-tilstand</string>
<string name="pure_black_description">Erstatter grå baggrunde med ren sort i nat-tilstand. Reducerer batteriforbruget i telefoner med AMOLED skærm.</string> <string name="pure_black_description">Erstatter grå baggrunde med ren sort i nat-tilstand. Reducerer batteriforbruget i telefoner med AMOLED skærm.</string>
<string name="interface_preferences">Grænseflade</string> <string name="interface_preferences">Grænseflade</string>
@@ -175,7 +174,6 @@
<string name="by_status">Efter status</string> <string name="by_status">Efter status</string>
<string name="export">Eksporter</string> <string name="export">Eksporter</string>
<string name="long_press_to_edit">Tryk-og-hold for at ændre værdien</string> <string name="long_press_to_edit">Tryk-og-hold for at ændre værdien</string>
<string name="change_value">Skift værdi</string>
<string name="calendar">Kalender</string> <string name="calendar">Kalender</string>
<string name="unit">Enhed</string> <string name="unit">Enhed</string>
<string name="example_question_boolean">f.eks. Har du trænet i dag?</string> <string name="example_question_boolean">f.eks. Har du trænet i dag?</string>
@@ -199,6 +197,7 @@
<string name="measurable_example">f.eks Hvor mange kilometer kørte du i dag? Hvor mange sider læste du?</string> <string name="measurable_example">f.eks Hvor mange kilometer kørte du i dag? Hvor mange sider læste du?</string>
<string name="x_times_per_week">%d gange om ugen</string> <string name="x_times_per_week">%d gange om ugen</string>
<string name="x_times_per_month">%d gange om måneden</string> <string name="x_times_per_month">%d gange om måneden</string>
<string name="x_times_per_y_days">%d gange på %d dage</string>
<string name="yes_or_no_short_example">f.eks. Motion</string> <string name="yes_or_no_short_example">f.eks. Motion</string>
<string name="color">Farve</string> <string name="color">Farve</string>
<string name="example_target">f.eks. 15</string> <string name="example_target">f.eks. 15</string>

View File

@@ -75,7 +75,6 @@
<string name="interval_always_ask">Immer fragen</string> <string name="interval_always_ask">Immer fragen</string>
<string name="interval_custom">Benutzerdefiniert...</string> <string name="interval_custom">Benutzerdefiniert...</string>
<string name="pref_toggle_title">Markierung durch kurzes Tippen ändern</string> <string name="pref_toggle_title">Markierung durch kurzes Tippen ändern</string>
<string name="pref_toggle_description">Abhaken durch einfaches Tippen, anstatt durch Tippen und Halten. Bequemer, kann aber eine falsche Auswahl verursachen.</string>
<string name="pref_rate_this_app">Bewerte diese App auf Google Play</string> <string name="pref_rate_this_app">Bewerte diese App auf Google Play</string>
<string name="pref_send_feedback">Sende dem Entwickler Feedback</string> <string name="pref_send_feedback">Sende dem Entwickler Feedback</string>
<string name="pref_view_source_code">Zeige den Quellcode auf GitHub</string> <string name="pref_view_source_code">Zeige den Quellcode auf GitHub</string>
@@ -127,7 +126,7 @@
<string name="generate_bug_report">Erstelle einen Fehlerbericht</string> <string name="generate_bug_report">Erstelle einen Fehlerbericht</string>
<string name="troubleshooting">Fehlerbehebung</string> <string name="troubleshooting">Fehlerbehebung</string>
<string name="help_translate">Hilf mit, diese App zu übersetzen</string> <string name="help_translate">Hilf mit, diese App zu übersetzen</string>
<string name="night_mode" comment="dark_theme">Nachtmodus</string> <string name="night_mode">Nachtmodus</string>
<string name="use_pure_black">Verwende reines Schwarz im Nachtmodus</string> <string name="use_pure_black">Verwende reines Schwarz im Nachtmodus</string>
<string name="pure_black_description">Ersetzt im Nachtmodus das Grau des Hintergrunds durch Schwarz. Reduziert den Stromverbrauch von Smartphones mit AMOLED Displays.</string> <string name="pure_black_description">Ersetzt im Nachtmodus das Grau des Hintergrunds durch Schwarz. Reduziert den Stromverbrauch von Smartphones mit AMOLED Displays.</string>
<string name="interface_preferences">Oberfläche</string> <string name="interface_preferences">Oberfläche</string>
@@ -166,7 +165,6 @@
<string name="by_status">Nach Zustand</string> <string name="by_status">Nach Zustand</string>
<string name="export">Exportieren</string> <string name="export">Exportieren</string>
<string name="long_press_to_edit">Gedrückt halten, um den Wert zu ändern</string> <string name="long_press_to_edit">Gedrückt halten, um den Wert zu ändern</string>
<string name="change_value">Wert ändern</string>
<string name="calendar">Kalender</string> <string name="calendar">Kalender</string>
<string name="unit">Einheit</string> <string name="unit">Einheit</string>
<string name="example_question_boolean">z.B. Hast du heute trainiert?</string> <string name="example_question_boolean">z.B. Hast du heute trainiert?</string>
@@ -190,6 +188,7 @@
<string name="measurable_example">z.B. Wie viele Kilometer bist du heute gelaufen? Wie viele Seiten hast du gelesen?</string> <string name="measurable_example">z.B. Wie viele Kilometer bist du heute gelaufen? Wie viele Seiten hast du gelesen?</string>
<string name="x_times_per_week">%d mal pro Woche</string> <string name="x_times_per_week">%d mal pro Woche</string>
<string name="x_times_per_month">%d mal pro Monat</string> <string name="x_times_per_month">%d mal pro Monat</string>
<string name="x_times_per_y_days">%d Mal in %d Tagen</string>
<string name="yes_or_no_short_example">z.B. Übung</string> <string name="yes_or_no_short_example">z.B. Übung</string>
<string name="color">Farbe</string> <string name="color">Farbe</string>
<string name="example_target">z.B. 15</string> <string name="example_target">z.B. 15</string>

View File

@@ -58,7 +58,6 @@
<string name="interval_always_ask">Να ερωτούμαι πάντα</string> <string name="interval_always_ask">Να ερωτούμαι πάντα</string>
<string name="interval_custom">Προσαρμογή</string> <string name="interval_custom">Προσαρμογή</string>
<string name="pref_toggle_title">Κάντε εναλλαγή των επαναλήψεων με σύντομο πάτημα</string> <string name="pref_toggle_title">Κάντε εναλλαγή των επαναλήψεων με σύντομο πάτημα</string>
<string name="pref_toggle_description">Βολικότερο, αλλά ίσως προκαλέσει ακούσιες εναλλαγές.</string>
<string name="pref_rate_this_app">Βαθμολογήστε αυτή την εφαρμογή στο Google Play</string> <string name="pref_rate_this_app">Βαθμολογήστε αυτή την εφαρμογή στο Google Play</string>
<string name="pref_send_feedback">Στείλετε σχόλια</string> <string name="pref_send_feedback">Στείλετε σχόλια</string>
<string name="pref_view_source_code">Δείτε τον πηγαίο κώδικα στο GitHub</string> <string name="pref_view_source_code">Δείτε τον πηγαίο κώδικα στο GitHub</string>
@@ -102,7 +101,7 @@
<string name="generate_bug_report">Παραγωγή αναφοράς bug.</string> <string name="generate_bug_report">Παραγωγή αναφοράς bug.</string>
<string name="troubleshooting">Αντιμετ.Προβλημάτων</string> <string name="troubleshooting">Αντιμετ.Προβλημάτων</string>
<string name="help_translate">Βοηθήστε στην μετάφραση</string> <string name="help_translate">Βοηθήστε στην μετάφραση</string>
<string name="night_mode" comment="dark_theme">Νυχτ.Λειτ.</string> <string name="night_mode">Νυχτ.Λειτ.</string>
<string name="use_pure_black">Χρήση απόλυτου μαύρου στη νυχτ.λειτουργία</string> <string name="use_pure_black">Χρήση απόλυτου μαύρου στη νυχτ.λειτουργία</string>
<string name="pure_black_description">Αντικαθιστά τα γκρί υπόβαθρα με απόλυτα μαύρα σε νυχτ.λειτουργία. Μειώνει την κατανάλωση μπαταρίας σε συσκευές με οθόνη AMOLED.</string> <string name="pure_black_description">Αντικαθιστά τα γκρί υπόβαθρα με απόλυτα μαύρα σε νυχτ.λειτουργία. Μειώνει την κατανάλωση μπαταρίας σε συσκευές με οθόνη AMOLED.</string>
<string name="interface_preferences">Διεπιφάνεια</string> <string name="interface_preferences">Διεπιφάνεια</string>
@@ -140,7 +139,6 @@
<string name="by_score">Με σκορ</string> <string name="by_score">Με σκορ</string>
<string name="export">Εξαγωγή</string> <string name="export">Εξαγωγή</string>
<string name="long_press_to_edit">Πατήστε και κρατήστε πατημένο για να αλλάξετε την τιμή</string> <string name="long_press_to_edit">Πατήστε και κρατήστε πατημένο για να αλλάξετε την τιμή</string>
<string name="change_value">Αλλαγή τιμής</string>
<string name="calendar">Ημερολόγιο</string> <string name="calendar">Ημερολόγιο</string>
<string name="unit">Μονάδα</string> <string name="unit">Μονάδα</string>
<string name="example_question_boolean">π.χ. Ασκήθηκες σήμερα;</string> <string name="example_question_boolean">π.χ. Ασκήθηκες σήμερα;</string>
@@ -163,6 +161,7 @@
<string name="measurable">Μετρήσιμο</string> <string name="measurable">Μετρήσιμο</string>
<string name="x_times_per_week">%d φορές την εβδομάδα</string> <string name="x_times_per_week">%d φορές την εβδομάδα</string>
<string name="x_times_per_month">%d φορές το μήνα</string> <string name="x_times_per_month">%d φορές το μήνα</string>
<string name="x_times_per_y_days">%d φορές την %d ημέρες</string>
<string name="yes_or_no_short_example">π.χ. Σωματική άσκηση</string> <string name="yes_or_no_short_example">π.χ. Σωματική άσκηση</string>
<string name="color">Χρώμα</string> <string name="color">Χρώμα</string>
<string name="example_target">π.χ. 15</string> <string name="example_target">π.χ. 15</string>

View File

@@ -58,7 +58,6 @@
<string name="interval_always_ask">Ĉiam demandu</string> <string name="interval_always_ask">Ĉiam demandu</string>
<string name="interval_custom">Kutimo</string> <string name="interval_custom">Kutimo</string>
<string name="pref_toggle_title">Ŝalti per mallonga gazetaro</string> <string name="pref_toggle_title">Ŝalti per mallonga gazetaro</string>
<string name="pref_toggle_description">Metu markilojn per sola frapeto anstataŭ premi kaj teni. Pli oportune, sed eble kaŭzas hazardajn ŝanĝojn.</string>
<string name="pref_rate_this_app">Taksu ĉi tiun aplikaĵon en Google Play</string> <string name="pref_rate_this_app">Taksu ĉi tiun aplikaĵon en Google Play</string>
<string name="pref_send_feedback">Sendu reagojn al programisto</string> <string name="pref_send_feedback">Sendu reagojn al programisto</string>
<string name="pref_view_source_code">Vidu fontkodon ĉe GitHub</string> <string name="pref_view_source_code">Vidu fontkodon ĉe GitHub</string>
@@ -102,7 +101,7 @@
<string name="generate_bug_report">Generu raporton pri eraroj</string> <string name="generate_bug_report">Generu raporton pri eraroj</string>
<string name="troubleshooting">Problemserĉado</string> <string name="troubleshooting">Problemserĉado</string>
<string name="help_translate">Helpu traduki ĉi tiun aplikon</string> <string name="help_translate">Helpu traduki ĉi tiun aplikon</string>
<string name="night_mode" comment="dark_theme">Nokta reĝimo</string> <string name="night_mode">Nokta reĝimo</string>
<string name="use_pure_black">Uzu puran nigron en malhela temo</string> <string name="use_pure_black">Uzu puran nigron en malhela temo</string>
<string name="pure_black_description">Anstataŭigas grizajn fonojn per pura nigra en malhela temo. Reduktas baterian uzon en telefonoj kun AMOLED-ekrano.</string> <string name="pure_black_description">Anstataŭigas grizajn fonojn per pura nigra en malhela temo. Reduktas baterian uzon en telefonoj kun AMOLED-ekrano.</string>
<string name="interface_preferences">Intervizago</string> <string name="interface_preferences">Intervizago</string>
@@ -140,7 +139,6 @@
<string name="by_score">Laŭ poentaro</string> <string name="by_score">Laŭ poentaro</string>
<string name="export">Eksporti</string> <string name="export">Eksporti</string>
<string name="long_press_to_edit">Premu kaj tenu por ŝanĝi la valoron</string> <string name="long_press_to_edit">Premu kaj tenu por ŝanĝi la valoron</string>
<string name="change_value">Ŝanĝi valoron</string>
<string name="calendar">Kalendaro:</string> <string name="calendar">Kalendaro:</string>
<string name="unit">Unueco</string> <string name="unit">Unueco</string>
<string name="example_question_boolean">ekz. Ĉu vi ekzercis hodiaŭ?</string> <string name="example_question_boolean">ekz. Ĉu vi ekzercis hodiaŭ?</string>

View File

@@ -75,7 +75,7 @@
<string name="interval_always_ask">Preguntar siempre</string> <string name="interval_always_ask">Preguntar siempre</string>
<string name="interval_custom">Personalizar...</string> <string name="interval_custom">Personalizar...</string>
<string name="pref_toggle_title">Marca las repeticiones con una pulsación corta</string> <string name="pref_toggle_title">Marca las repeticiones con una pulsación corta</string>
<string name="pref_toggle_description">Más cómodo, pero puede causar marcas accidentales.</string> <string name="pref_toggle_description_2">Ponga marcas de verificación con un solo toque en lugar de mantener presionado.</string>
<string name="pref_rate_this_app">Valora esta aplicación en Google Play</string> <string name="pref_rate_this_app">Valora esta aplicación en Google Play</string>
<string name="pref_send_feedback">Enviar sugerencias al desarrollador</string> <string name="pref_send_feedback">Enviar sugerencias al desarrollador</string>
<string name="pref_view_source_code">Ver código fuente en GitHub</string> <string name="pref_view_source_code">Ver código fuente en GitHub</string>
@@ -127,7 +127,7 @@
<string name="generate_bug_report">Generar reporte de errores</string> <string name="generate_bug_report">Generar reporte de errores</string>
<string name="troubleshooting">Solución de problemas</string> <string name="troubleshooting">Solución de problemas</string>
<string name="help_translate">Ayuda a traducir esta app</string> <string name="help_translate">Ayuda a traducir esta app</string>
<string name="night_mode" comment="dark_theme">Modo nocturno</string> <string name="night_mode">Modo nocturno</string>
<string name="use_pure_black">Utilizar color negro en modo nocturno</string> <string name="use_pure_black">Utilizar color negro en modo nocturno</string>
<string name="pure_black_description">Reemplaza fondos grises por color negro en modo nocturno. Reduce el consumo de batería en teléfonos con pantalla AMOLED.</string> <string name="pure_black_description">Reemplaza fondos grises por color negro en modo nocturno. Reduce el consumo de batería en teléfonos con pantalla AMOLED.</string>
<string name="interface_preferences">Interfície</string> <string name="interface_preferences">Interfície</string>
@@ -147,6 +147,7 @@
<string name="none">Ninguno</string> <string name="none">Ninguno</string>
<string name="filter">Filtrar</string> <string name="filter">Filtrar</string>
<string name="hide_completed">Ocultar completos</string> <string name="hide_completed">Ocultar completos</string>
<string name="hide_entered">Ocultar ingresado</string>
<string name="hide_archived">Ocultar archivados</string> <string name="hide_archived">Ocultar archivados</string>
<string name="sticky_notifications">Hacer notificaciones fijas</string> <string name="sticky_notifications">Hacer notificaciones fijas</string>
<string name="sticky_notifications_description">Evita que las notificaciones sean descartadas.</string> <string name="sticky_notifications_description">Evita que las notificaciones sean descartadas.</string>
@@ -166,9 +167,12 @@
<string name="by_status">Por estado</string> <string name="by_status">Por estado</string>
<string name="export">Exportar</string> <string name="export">Exportar</string>
<string name="long_press_to_edit">Mantenga presionado para cambiar el valor</string> <string name="long_press_to_edit">Mantenga presionado para cambiar el valor</string>
<string name="change_value">Cambiar valor</string> <string name="value">Valor</string>
<string name="calendar">Calendario</string> <string name="calendar">Calendario</string>
<string name="unit">Unidad</string> <string name="unit">Unidad</string>
<string name="target_type">Tipo de objetivo</string>
<string name="target_type_at_least">Al menos</string>
<string name="target_type_at_most">Como máximo</string>
<string name="example_question_boolean">ej. ¿Has ejercitado hoy?</string> <string name="example_question_boolean">ej. ¿Has ejercitado hoy?</string>
<string name="question">Pregunta</string> <string name="question">Pregunta</string>
<string name="target">Objetivo</string> <string name="target">Objetivo</string>
@@ -190,6 +194,7 @@
<string name="measurable_example">ej. ¿Cuántas millas ha corrido hoy? ¿Cuántas páginas ha leído?</string> <string name="measurable_example">ej. ¿Cuántas millas ha corrido hoy? ¿Cuántas páginas ha leído?</string>
<string name="x_times_per_week">%d veces por semana</string> <string name="x_times_per_week">%d veces por semana</string>
<string name="x_times_per_month">%d veces al mes</string> <string name="x_times_per_month">%d veces al mes</string>
<string name="x_times_per_y_days">%d veces en %d días</string>
<string name="yes_or_no_short_example">ej. Ejercicio</string> <string name="yes_or_no_short_example">ej. Ejercicio</string>
<string name="color">Color</string> <string name="color">Color</string>
<string name="example_target">ej. 15</string> <string name="example_target">ej. 15</string>

View File

@@ -36,6 +36,7 @@
<string name="save">Gorde</string> <string name="save">Gorde</string>
<string name="streaks">Boladak</string> <string name="streaks">Boladak</string>
<string name="no_habits_found">Ez duzu ohitura aktiborik</string> <string name="no_habits_found">Ez duzu ohitura aktiborik</string>
<string name="no_habits_left_to_do">Gaurkoz amaitu duzu!</string>
<string name="long_press_to_toggle">Sakatu eta mantendu markatu edo desmarkatzeko</string> <string name="long_press_to_toggle">Sakatu eta mantendu markatu edo desmarkatzeko</string>
<string name="reminder_off">Itzalita</string> <string name="reminder_off">Itzalita</string>
<string name="create_habit">Ohitura sortu</string> <string name="create_habit">Ohitura sortu</string>
@@ -58,7 +59,6 @@
<string name="interval_always_ask">Galdetu beti</string> <string name="interval_always_ask">Galdetu beti</string>
<string name="interval_custom">Pertsonalizatua...</string> <string name="interval_custom">Pertsonalizatua...</string>
<string name="pref_toggle_title">Ukitze laburrarekin markatu</string> <string name="pref_toggle_title">Ukitze laburrarekin markatu</string>
<string name="pref_toggle_description">Ukitze bakar batekin marka jartzen du ukitu eta mantendu egin beharrean. Erosoagoa, baina nahi gabeko markak ekar litzake.</string>
<string name="pref_rate_this_app">Aplikazio hau Google Playen puntuatu</string> <string name="pref_rate_this_app">Aplikazio hau Google Playen puntuatu</string>
<string name="pref_send_feedback">Zure iritzia garatzaileari bidali</string> <string name="pref_send_feedback">Zure iritzia garatzaileari bidali</string>
<string name="pref_view_source_code">Iturburu kodea GitHuben ikusi</string> <string name="pref_view_source_code">Iturburu kodea GitHuben ikusi</string>
@@ -69,6 +69,10 @@
<string name="hint_title">Ba al zenekien?</string> <string name="hint_title">Ba al zenekien?</string>
<string name="hint_drag">Sarrerak berrantolatzeko, sakatu eta mantendu ohituraren izena, ondoren mugi ezazu leku aproposera.</string> <string name="hint_drag">Sarrerak berrantolatzeko, sakatu eta mantendu ohituraren izena, ondoren mugi ezazu leku aproposera.</string>
<string name="hint_landscape">Egun gehiago ikus ditzakezu zure gailua paisai moduan jarriz.</string> <string name="hint_landscape">Egun gehiago ikus ditzakezu zure gailua paisai moduan jarriz.</string>
<plurals name="delete_habits_title">
<item quantity="one">Ohiturak ezabatu</item>
<item quantity="other">Ohiturak ezabatu</item>
</plurals>
<string name="habit_not_found">Ohitura ezabatua / ez aurkitua</string> <string name="habit_not_found">Ohitura ezabatua / ez aurkitua</string>
<string name="weekends">Asteburuak</string> <string name="weekends">Asteburuak</string>
<string name="any_weekday">Astelehenetik ostiralera</string> <string name="any_weekday">Astelehenetik ostiralera</string>
@@ -102,7 +106,7 @@
<string name="generate_bug_report">Akats txostena sortu</string> <string name="generate_bug_report">Akats txostena sortu</string>
<string name="troubleshooting">Arazoen konponketa</string> <string name="troubleshooting">Arazoen konponketa</string>
<string name="help_translate">Lagundu aplikazio hau itzultzen</string> <string name="help_translate">Lagundu aplikazio hau itzultzen</string>
<string name="night_mode" comment="dark_theme">Azal iluna</string> <string name="night_mode">Azal iluna</string>
<string name="use_pure_black">erabili beltz hutsa azal ilunean</string> <string name="use_pure_black">erabili beltz hutsa azal ilunean</string>
<string name="pure_black_description">Atzeko plano grisak beltz hutsez aldatzen ditu azal ilunean. Bateriaren erabilera gutxitzen du AMOLED duten gailuetan.</string> <string name="pure_black_description">Atzeko plano grisak beltz hutsez aldatzen ditu azal ilunean. Bateriaren erabilera gutxitzen du AMOLED duten gailuetan.</string>
<string name="interface_preferences">Interfazea</string> <string name="interface_preferences">Interfazea</string>
@@ -138,11 +142,13 @@
<string name="by_name">Izenaren arabera</string> <string name="by_name">Izenaren arabera</string>
<string name="by_color">Kolorearen arabera</string> <string name="by_color">Kolorearen arabera</string>
<string name="by_score">Puntuen arabera</string> <string name="by_score">Puntuen arabera</string>
<string name="by_status">Egoeraren arabera</string>
<string name="export">Esportatu</string> <string name="export">Esportatu</string>
<string name="long_press_to_edit">Sakatu luze balioa aldatzeko</string> <string name="long_press_to_edit">Sakatu luze balioa aldatzeko</string>
<string name="change_value">Aldatu balioa</string> <string name="value">Balioa</string>
<string name="calendar">Egutegia</string> <string name="calendar">Egutegia</string>
<string name="unit">Unitatea</string> <string name="unit">Unitatea</string>
<string name="target_type_at_most">Gehienez</string>
<string name="example_question_boolean">adib. ariketa egin al duzu gaur?</string> <string name="example_question_boolean">adib. ariketa egin al duzu gaur?</string>
<string name="question">Galdera</string> <string name="question">Galdera</string>
<string name="target">Helburua</string> <string name="target">Helburua</string>
@@ -163,6 +169,7 @@
<string name="measurable">Neurgarria</string> <string name="measurable">Neurgarria</string>
<string name="x_times_per_week">Astean %d aldiz</string> <string name="x_times_per_week">Astean %d aldiz</string>
<string name="x_times_per_month">Hilean %d aldiz</string> <string name="x_times_per_month">Hilean %d aldiz</string>
<string name="x_times_per_y_days">%d aldiz %d egunetan</string>
<string name="yes_or_no_short_example">adib. Ariketa</string> <string name="yes_or_no_short_example">adib. Ariketa</string>
<string name="color">Kolorea</string> <string name="color">Kolorea</string>
<string name="example_target">adib. 15</string> <string name="example_target">adib. 15</string>
@@ -172,4 +179,8 @@
<string name="every_month">Hilabetero</string> <string name="every_month">Hilabetero</string>
<string name="validation_cannot_be_blank">Ezin da hutsik egon</string> <string name="validation_cannot_be_blank">Ezin da hutsik egon</string>
<string name="today">Gaur</string> <string name="today">Gaur</string>
<string name="no_habits">Ez da ohiturarik aurkitu</string>
<string name="pref_unknown_title">Adierazi galdera ikurra falta diren datuetan</string>
<string name="you_are_now_a_developer">Garatzailea zara!</string>
<string name="activity_not_found">Ez da aurkitu akzio hau gauzatu dezakeen aplikaziorik</string>
</resources> </resources>

View File

@@ -75,7 +75,7 @@
<string name="interval_always_ask">همیشه پرسیده شود </string> <string name="interval_always_ask">همیشه پرسیده شود </string>
<string name="interval_custom">سفارشی‌سازی </string> <string name="interval_custom">سفارشی‌سازی </string>
<string name="pref_toggle_title">با اشاره‌ی کوتاه‌مدت وضعیت عادت را تغییر بده</string> <string name="pref_toggle_title">با اشاره‌ی کوتاه‌مدت وضعیت عادت را تغییر بده</string>
<string name="pref_toggle_description">تیک زدن با تک‌ضربه در مقابل ضربه‌زدن و نگه‌داشتن راحت‌تر است ولی ممکن است باعث شود اشتباهی عادتی را تیک بزنید. </string> <string name="pref_toggle_description_2">به جای فشار دادن و نگه‌داشتن، با یک ضربه تیک بزنید.</string>
<string name="pref_rate_this_app">به این برنامه در گوگل‌پلی امتیاز بدهید </string> <string name="pref_rate_this_app">به این برنامه در گوگل‌پلی امتیاز بدهید </string>
<string name="pref_send_feedback">ارسال بازخورد به توسعه‌دهنده</string> <string name="pref_send_feedback">ارسال بازخورد به توسعه‌دهنده</string>
<string name="pref_view_source_code">دیدن منبع برنامه در گیت‌هاب </string> <string name="pref_view_source_code">دیدن منبع برنامه در گیت‌هاب </string>
@@ -127,7 +127,7 @@
<string name="generate_bug_report">ایجاد گزارش مشکلات</string> <string name="generate_bug_report">ایجاد گزارش مشکلات</string>
<string name="troubleshooting">ایرادیابی</string> <string name="troubleshooting">ایرادیابی</string>
<string name="help_translate">کمک برای ترجمه این برنامه</string> <string name="help_translate">کمک برای ترجمه این برنامه</string>
<string name="night_mode" comment="dark_theme">حالت تیره</string> <string name="night_mode">حالت تیره</string>
<string name="use_pure_black">استفاده از رنگ سیاه خالص در حالت تیره</string> <string name="use_pure_black">استفاده از رنگ سیاه خالص در حالت تیره</string>
<string name="pure_black_description">جایگزینی پس‌زمینه خاکستری با سیاه خالص در حالت تیره. استفاده از باتری را در گوشی‌های با صفحه نمایش AMOLED کاهش می‌دهد.</string> <string name="pure_black_description">جایگزینی پس‌زمینه خاکستری با سیاه خالص در حالت تیره. استفاده از باتری را در گوشی‌های با صفحه نمایش AMOLED کاهش می‌دهد.</string>
<string name="interface_preferences">رابط کاربری</string> <string name="interface_preferences">رابط کاربری</string>
@@ -147,6 +147,7 @@
<string name="none">هیچ‌کدام</string> <string name="none">هیچ‌کدام</string>
<string name="filter">فیلتر</string> <string name="filter">فیلتر</string>
<string name="hide_completed">مخفی کردن کامل‌شده‌ها</string> <string name="hide_completed">مخفی کردن کامل‌شده‌ها</string>
<string name="hide_entered">پنهان کردن مقادیر</string>
<string name="hide_archived">مخفی کردن بایگانی‌شده‌ها</string> <string name="hide_archived">مخفی کردن بایگانی‌شده‌ها</string>
<string name="sticky_notifications">چسبناک کردن اعلان‌ها</string> <string name="sticky_notifications">چسبناک کردن اعلان‌ها</string>
<string name="sticky_notifications_description">از رد کردن اعلان با کشیدن جلوگیری می‌کند.</string> <string name="sticky_notifications_description">از رد کردن اعلان با کشیدن جلوگیری می‌کند.</string>
@@ -166,9 +167,12 @@
<string name="by_status">براساس وضعیت</string> <string name="by_status">براساس وضعیت</string>
<string name="export">خروجی گرفتن</string> <string name="export">خروجی گرفتن</string>
<string name="long_press_to_edit">فشار دهید و نگه دارید تا مقدار را تغییر دهید</string> <string name="long_press_to_edit">فشار دهید و نگه دارید تا مقدار را تغییر دهید</string>
<string name="change_value">تغییر مقدار</string> <string name="value">مقدار</string>
<string name="calendar">تقویم</string> <string name="calendar">تقویم</string>
<string name="unit">واحد</string> <string name="unit">واحد</string>
<string name="target_type">نوع داده هدف</string>
<string name="target_type_at_least">حداقل</string>
<string name="target_type_at_most">حداکثر</string>
<string name="example_question_boolean">مثلا آیا امروز ورزش کردید؟</string> <string name="example_question_boolean">مثلا آیا امروز ورزش کردید؟</string>
<string name="question">سوال</string> <string name="question">سوال</string>
<string name="target">هدف</string> <string name="target">هدف</string>
@@ -190,6 +194,7 @@
<string name="measurable_example">مثلاً امروز چند کیلومتر دویدید؟ چند صفحه مطالعه کردید؟</string> <string name="measurable_example">مثلاً امروز چند کیلومتر دویدید؟ چند صفحه مطالعه کردید؟</string>
<string name="x_times_per_week">%d بار در هفته</string> <string name="x_times_per_week">%d بار در هفته</string>
<string name="x_times_per_month">%d بار در ماه</string> <string name="x_times_per_month">%d بار در ماه</string>
<string name="x_times_per_y_days">%d بار در هر %d روز</string>
<string name="yes_or_no_short_example">مثلاً ورزش کنید</string> <string name="yes_or_no_short_example">مثلاً ورزش کنید</string>
<string name="color">رنگ</string> <string name="color">رنگ</string>
<string name="example_target">مثلاً 15</string> <string name="example_target">مثلاً 15</string>

View File

@@ -75,7 +75,7 @@
<string name="interval_always_ask">Kysy aina</string> <string name="interval_always_ask">Kysy aina</string>
<string name="interval_custom">Muu</string> <string name="interval_custom">Muu</string>
<string name="pref_toggle_title">Vaihda merkintää lyhyellä painalluksella</string> <string name="pref_toggle_title">Vaihda merkintää lyhyellä painalluksella</string>
<string name="pref_toggle_description">Tee merkit yhdellä painalluksella pitkän painalluksen sijaan. Kätevämpi, mutta saattaa aiheuttaa vahingossa painamista.</string> <string name="pref_toggle_description_2">Lisää valinnat yhdellä napautuksella pitkään painettuna pitämisen sijaan.</string>
<string name="pref_rate_this_app">Arvostele Google Playssä</string> <string name="pref_rate_this_app">Arvostele Google Playssä</string>
<string name="pref_send_feedback">Lähetä palautetta kehittäjälle</string> <string name="pref_send_feedback">Lähetä palautetta kehittäjälle</string>
<string name="pref_view_source_code">Katso lähdekoodi GitHubissa</string> <string name="pref_view_source_code">Katso lähdekoodi GitHubissa</string>
@@ -127,7 +127,7 @@
<string name="generate_bug_report">Luo virheraportti</string> <string name="generate_bug_report">Luo virheraportti</string>
<string name="troubleshooting">Apua</string> <string name="troubleshooting">Apua</string>
<string name="help_translate">Auta kääntämään tämä sovellus</string> <string name="help_translate">Auta kääntämään tämä sovellus</string>
<string name="night_mode" comment="dark_theme">Yötila</string> <string name="night_mode">Yötila</string>
<string name="use_pure_black">Käytä puhdasta mustaa yötilassa</string> <string name="use_pure_black">Käytä puhdasta mustaa yötilassa</string>
<string name="pure_black_description">Korvaa harmaat taustat puhtaalla mustalla tummalla teemalla. Vähentää akun käyttöä puhelimissa AMOLED-näytöllä.</string> <string name="pure_black_description">Korvaa harmaat taustat puhtaalla mustalla tummalla teemalla. Vähentää akun käyttöä puhelimissa AMOLED-näytöllä.</string>
<string name="interface_preferences">Käyttöliittymä</string> <string name="interface_preferences">Käyttöliittymä</string>
@@ -147,6 +147,7 @@
<string name="none">Ei mitään</string> <string name="none">Ei mitään</string>
<string name="filter">Suodata</string> <string name="filter">Suodata</string>
<string name="hide_completed">Piilota suoritetut</string> <string name="hide_completed">Piilota suoritetut</string>
<string name="hide_entered">Piilota syötetty</string>
<string name="hide_archived">Piilota arkistoidut</string> <string name="hide_archived">Piilota arkistoidut</string>
<string name="sticky_notifications">Tee ilmoituksesta kiinnitettyjä</string> <string name="sticky_notifications">Tee ilmoituksesta kiinnitettyjä</string>
<string name="sticky_notifications_description">Estää ilmoitusten pois pyyhkäisemisen.</string> <string name="sticky_notifications_description">Estää ilmoitusten pois pyyhkäisemisen.</string>
@@ -166,9 +167,12 @@
<string name="by_status">Tilan mukaan</string> <string name="by_status">Tilan mukaan</string>
<string name="export">Vie</string> <string name="export">Vie</string>
<string name="long_press_to_edit">Pidä painettuna muuttaaksesi arvoa</string> <string name="long_press_to_edit">Pidä painettuna muuttaaksesi arvoa</string>
<string name="change_value">Muuta arvo</string> <string name="value">Arvo</string>
<string name="calendar">Kalenteri</string> <string name="calendar">Kalenteri</string>
<string name="unit">Yksikkö</string> <string name="unit">Yksikkö</string>
<string name="target_type">Kohdetyyppi</string>
<string name="target_type_at_least">Vähintään</string>
<string name="target_type_at_most">Enintään</string>
<string name="example_question_boolean">esim. Harrastitko tänään liikuntaa?</string> <string name="example_question_boolean">esim. Harrastitko tänään liikuntaa?</string>
<string name="question">Kysymys</string> <string name="question">Kysymys</string>
<string name="target">Tavoite</string> <string name="target">Tavoite</string>
@@ -190,6 +194,7 @@
<string name="measurable_example">esim. Montako kilometriä juoksit tänään? Montako sivua luit?</string> <string name="measurable_example">esim. Montako kilometriä juoksit tänään? Montako sivua luit?</string>
<string name="x_times_per_week">%d kertaa viikossa</string> <string name="x_times_per_week">%d kertaa viikossa</string>
<string name="x_times_per_month">%d kertaa kuukaudessa</string> <string name="x_times_per_month">%d kertaa kuukaudessa</string>
<string name="x_times_per_y_days">%d kertaa %d päivässä</string>
<string name="yes_or_no_short_example">Esim. kuntoilu</string> <string name="yes_or_no_short_example">Esim. kuntoilu</string>
<string name="color">Väri</string> <string name="color">Väri</string>
<string name="example_target">Esim. 15</string> <string name="example_target">Esim. 15</string>

View File

@@ -75,7 +75,7 @@
<string name="interval_always_ask">Toujours demander</string> <string name="interval_always_ask">Toujours demander</string>
<string name="interval_custom">Personnaliser...</string> <string name="interval_custom">Personnaliser...</string>
<string name="pref_toggle_title">Valider l\'habitude avec un appui court</string> <string name="pref_toggle_title">Valider l\'habitude avec un appui court</string>
<string name="pref_toggle_description">Valide l\'habitude avec un appui court plutôt qu\'un appuie long. Plus pratique, mais peut causer des activations accidentelles.</string> <string name="pref_toggle_description_2">Cochez les cases d\'un simple appuie au lieu de les maintenir</string>
<string name="pref_rate_this_app">Notez cette app sur le Google Play Store</string> <string name="pref_rate_this_app">Notez cette app sur le Google Play Store</string>
<string name="pref_send_feedback">Envoyez un avis au développeur</string> <string name="pref_send_feedback">Envoyez un avis au développeur</string>
<string name="pref_view_source_code">Voir le code source sur GitHub</string> <string name="pref_view_source_code">Voir le code source sur GitHub</string>
@@ -127,7 +127,7 @@
<string name="generate_bug_report">Générer un rapport de bug.</string> <string name="generate_bug_report">Générer un rapport de bug.</string>
<string name="troubleshooting">Résolution de problèmes</string> <string name="troubleshooting">Résolution de problèmes</string>
<string name="help_translate">Aider à traduire cette application</string> <string name="help_translate">Aider à traduire cette application</string>
<string name="night_mode" comment="dark_theme">Mode Nuit</string> <string name="night_mode">Mode Nuit</string>
<string name="use_pure_black">Utiliser un noir pur dans le mode nuit</string> <string name="use_pure_black">Utiliser un noir pur dans le mode nuit</string>
<string name="pure_black_description">Remplace le fond gris par un noir pur dans le mode nuit ; cela réduit lusage de la batterie des appareils ayant un écran AMOLED.</string> <string name="pure_black_description">Remplace le fond gris par un noir pur dans le mode nuit ; cela réduit lusage de la batterie des appareils ayant un écran AMOLED.</string>
<string name="interface_preferences">Interface</string> <string name="interface_preferences">Interface</string>
@@ -147,6 +147,7 @@
<string name="none">Aucun</string> <string name="none">Aucun</string>
<string name="filter">Filtre</string> <string name="filter">Filtre</string>
<string name="hide_completed">Cacher les habitudes complétées</string> <string name="hide_completed">Cacher les habitudes complétées</string>
<string name="hide_entered">Cacher les entrées</string>
<string name="hide_archived">Cacher les habitudes archivées</string> <string name="hide_archived">Cacher les habitudes archivées</string>
<string name="sticky_notifications">Rendre les notifications persistantes</string> <string name="sticky_notifications">Rendre les notifications persistantes</string>
<string name="sticky_notifications_description">Évite que les notifications ne soient enlevées.</string> <string name="sticky_notifications_description">Évite que les notifications ne soient enlevées.</string>
@@ -166,9 +167,12 @@
<string name="by_status">Par statut</string> <string name="by_status">Par statut</string>
<string name="export">Exporter</string> <string name="export">Exporter</string>
<string name="long_press_to_edit">Appuyez et maintenez pour changer la valeur</string> <string name="long_press_to_edit">Appuyez et maintenez pour changer la valeur</string>
<string name="change_value">Modifier la valeur</string> <string name="value">Valeur</string>
<string name="calendar">Calendrier</string> <string name="calendar">Calendrier</string>
<string name="unit">Unité</string> <string name="unit">Unité</string>
<string name="target_type">Type d\'objectif</string>
<string name="target_type_at_least">Au moins</string>
<string name="target_type_at_most">Au plus</string>
<string name="example_question_boolean">Par ex., avez-vous fait de l\'exercice aujourd\'hui?</string> <string name="example_question_boolean">Par ex., avez-vous fait de l\'exercice aujourd\'hui?</string>
<string name="question">Question</string> <string name="question">Question</string>
<string name="target">Cible</string> <string name="target">Cible</string>
@@ -191,6 +195,7 @@
Combien de pages avez-vous lu ?</string> Combien de pages avez-vous lu ?</string>
<string name="x_times_per_week">%d fois par semaine</string> <string name="x_times_per_week">%d fois par semaine</string>
<string name="x_times_per_month">%d fois par mois</string> <string name="x_times_per_month">%d fois par mois</string>
<string name="x_times_per_y_days">%d fois en %d jours</string>
<string name="yes_or_no_short_example">Par ex, Entrainement</string> <string name="yes_or_no_short_example">Par ex, Entrainement</string>
<string name="color">Couleur</string> <string name="color">Couleur</string>
<string name="example_target">Par ex, 15</string> <string name="example_target">Par ex, 15</string>

View File

@@ -75,8 +75,6 @@
<string name="interval_always_ask">हमेशा पूछें</string> <string name="interval_always_ask">हमेशा पूछें</string>
<string name="interval_custom">अपने तरीके से बनाएं</string> <string name="interval_custom">अपने तरीके से बनाएं</string>
<string name="pref_toggle_title">टॉगल पुनरावृत्ति हल्का दबाने से</string> <string name="pref_toggle_title">टॉगल पुनरावृत्ति हल्का दबाने से</string>
<string name="pref_toggle_description">\"
अधिक सुविधाजनक है, लेकिन आकस्मिक टॉगल हो सकता है ।\"</string>
<string name="pref_rate_this_app">\" <string name="pref_rate_this_app">\"
गूगले प्ले पर इस ऐप्लिकेशन को रेट करें\"</string> गूगले प्ले पर इस ऐप्लिकेशन को रेट करें\"</string>
<string name="pref_send_feedback">डेवेलपर को प्रतिक्रिया भेजें </string> <string name="pref_send_feedback">डेवेलपर को प्रतिक्रिया भेजें </string>
@@ -149,7 +147,7 @@
समस्या निवारण\"</string> समस्या निवारण\"</string>
<string name="help_translate">\" <string name="help_translate">\"
इस एप्लिकेशन का अनुवाद करने में मदद करें\"</string> इस एप्लिकेशन का अनुवाद करने में मदद करें\"</string>
<string name="night_mode" comment="dark_theme">नाइट मोड</string> <string name="night_mode">नाइट मोड</string>
<string name="use_pure_black">नाइट मोड मे पूरा काला यूज़ करें</string> <string name="use_pure_black">नाइट मोड मे पूरा काला यूज़ करें</string>
<string name="pure_black_description">\" <string name="pure_black_description">\"
रात मोड में शुद्ध काले रंग के साथ ग्रे पृष्ठभूमि में बदलें. अमोलेड प्रदर्शन के साथ फोन में बैटरी उपयोग कम कर देता है ।\"</string> रात मोड में शुद्ध काले रंग के साथ ग्रे पृष्ठभूमि में बदलें. अमोलेड प्रदर्शन के साथ फोन में बैटरी उपयोग कम कर देता है ।\"</string>
@@ -193,7 +191,6 @@
<string name="by_status">स्थिति से</string> <string name="by_status">स्थिति से</string>
<string name="export">एक्सपोर्ट करे</string> <string name="export">एक्सपोर्ट करे</string>
<string name="long_press_to_edit">बदलने के लिए दबाकर रखें</string> <string name="long_press_to_edit">बदलने के लिए दबाकर रखें</string>
<string name="change_value">वैल्यू बदलें</string>
<string name="calendar">कैलेंडर</string> <string name="calendar">कैलेंडर</string>
<string name="unit">इकाई</string> <string name="unit">इकाई</string>
<string name="example_question_boolean">जैसे आपने आज व्यायाम किया?</string> <string name="example_question_boolean">जैसे आपने आज व्यायाम किया?</string>
@@ -219,6 +216,7 @@
प्रति सप्ताह %d बार\"</string> प्रति सप्ताह %d बार\"</string>
<string name="x_times_per_month">\" <string name="x_times_per_month">\"
प्रति माह %d बार\"</string> प्रति माह %d बार\"</string>
<string name="x_times_per_y_days">%d बार %d दिन</string>
<string name="yes_or_no_short_example">जैसे व्यायाम</string> <string name="yes_or_no_short_example">जैसे व्यायाम</string>
<string name="color">रंग</string> <string name="color">रंग</string>
<string name="example_target">जैसे १५</string> <string name="example_target">जैसे १५</string>

View File

@@ -56,7 +56,6 @@
<string name="interval_8_hour">8 sati</string> <string name="interval_8_hour">8 sati</string>
<string name="interval_24_hour">24 sata</string> <string name="interval_24_hour">24 sata</string>
<string name="pref_toggle_title">Označi ponavljanja sa kratkim pritisk.</string> <string name="pref_toggle_title">Označi ponavljanja sa kratkim pritisk.</string>
<string name="pref_toggle_description">Zgodnije je, no može uzrokovati slučajna označavanja.</string>
<string name="pref_rate_this_app">Ocijeni ovu aplikaciju na Google Playu</string> <string name="pref_rate_this_app">Ocijeni ovu aplikaciju na Google Playu</string>
<string name="pref_send_feedback">Pošalji povratne informacije raz. programeru</string> <string name="pref_send_feedback">Pošalji povratne informacije raz. programeru</string>
<string name="pref_view_source_code">Pogledaj izvorni kod na GitHubu</string> <string name="pref_view_source_code">Pogledaj izvorni kod na GitHubu</string>
@@ -99,7 +98,7 @@
<string name="generate_bug_report">Generiraj izvješće o pogreški</string> <string name="generate_bug_report">Generiraj izvješće o pogreški</string>
<string name="troubleshooting">Rješavanje problema</string> <string name="troubleshooting">Rješavanje problema</string>
<string name="help_translate">Pomozi prevesti ovu aplikaciju</string> <string name="help_translate">Pomozi prevesti ovu aplikaciju</string>
<string name="night_mode" comment="dark_theme">Noćni način</string> <string name="night_mode">Noćni način</string>
<string name="use_pure_black">Koristi crnu boju za noćni način</string> <string name="use_pure_black">Koristi crnu boju za noćni način</string>
<string name="pure_black_description">Zamjenjuje sivu pozadinu sa crnom u noćnom načinu. To smanjuje potrošnju bateriju na uređajima s AMOLED zaslonima.</string> <string name="pure_black_description">Zamjenjuje sivu pozadinu sa crnom u noćnom načinu. To smanjuje potrošnju bateriju na uređajima s AMOLED zaslonima.</string>
<string name="interface_preferences">Sučelje</string> <string name="interface_preferences">Sučelje</string>
@@ -133,4 +132,5 @@
<string name="by_color">Po boji</string> <string name="by_color">Po boji</string>
<string name="by_score">Po rezultatu</string> <string name="by_score">Po rezultatu</string>
<string name="export">Izvezi</string> <string name="export">Izvezi</string>
<string name="x_times_per_y_days">%d puta u %d dani</string>
</resources> </resources>

View File

@@ -28,6 +28,22 @@
<string name="add_habit">Új szokás</string> <string name="add_habit">Új szokás</string>
<string name="color_picker_default_title">Szín módosítása</string> <string name="color_picker_default_title">Szín módosítása</string>
<string name="toast_habit_created">Szokás létrehozva</string> <string name="toast_habit_created">Szokás létrehozva</string>
<plurals name="toast_habits_changed">
<item quantity="one">Szokás módosítva</item>
<item quantity="other">Szokások módosítva</item>
</plurals>
<plurals name="toast_habits_deleted">
<item quantity="one">Szokás törölve</item>
<item quantity="other">Szokások törölve</item>
</plurals>
<plurals name="toast_habits_archived">
<item quantity="one">Szokás archiválva</item>
<item quantity="other">Szokások archiválva</item>
</plurals>
<plurals name="toast_habits_unarchived">
<item quantity="one">Szokás újraaktiválva</item>
<item quantity="other">Szokások újraaktiválva</item>
</plurals>
<string name="overview">Áttekintés</string> <string name="overview">Áttekintés</string>
<string name="habit_strength">Szokás erőssége</string> <string name="habit_strength">Szokás erőssége</string>
<string name="history">Napló</string> <string name="history">Napló</string>
@@ -36,6 +52,7 @@
<string name="save">Mentés</string> <string name="save">Mentés</string>
<string name="streaks">Szériák</string> <string name="streaks">Szériák</string>
<string name="no_habits_found">Nincs aktív szokásod</string> <string name="no_habits_found">Nincs aktív szokásod</string>
<string name="no_habits_left_to_do">Mára minden kész!</string>
<string name="long_press_to_toggle">Tartsd lenyomva a bejelöléshez, vagy a jelölés törléséhez</string> <string name="long_press_to_toggle">Tartsd lenyomva a bejelöléshez, vagy a jelölés törléséhez</string>
<string name="reminder_off">Kikapcsolva</string> <string name="reminder_off">Kikapcsolva</string>
<string name="create_habit">Szokás rögzítése</string> <string name="create_habit">Szokás rögzítése</string>
@@ -58,7 +75,6 @@
<string name="interval_always_ask">Mindig rákérdez</string> <string name="interval_always_ask">Mindig rákérdez</string>
<string name="interval_custom">Egyedi...</string> <string name="interval_custom">Egyedi...</string>
<string name="pref_toggle_title">Bejelölés rövid koppintással</string> <string name="pref_toggle_title">Bejelölés rövid koppintással</string>
<string name="pref_toggle_description">Bejelölés koppintással nyomva tartás helyett. Kényelmesebb, de véletlen bejelöléseket okozhat.</string>
<string name="pref_rate_this_app">Értékeld az alkalmazást a Google Play-en</string> <string name="pref_rate_this_app">Értékeld az alkalmazást a Google Play-en</string>
<string name="pref_send_feedback">Visszajelzés küldése a fejlesztőnek</string> <string name="pref_send_feedback">Visszajelzés küldése a fejlesztőnek</string>
<string name="pref_view_source_code">Forráskód megtekintése a GitHub-on</string> <string name="pref_view_source_code">Forráskód megtekintése a GitHub-on</string>
@@ -69,6 +85,14 @@
<string name="hint_title">Tudtad?</string> <string name="hint_title">Tudtad?</string>
<string name="hint_drag">Az elemek újrarendezéséhez a koppints a szokás nevére, majd húzd a megfelelő helyre.</string> <string name="hint_drag">Az elemek újrarendezéséhez a koppints a szokás nevére, majd húzd a megfelelő helyre.</string>
<string name="hint_landscape">Több nap válik láthatóvá, ha fekvő módba állítod a telefonod kijelzőjét.</string> <string name="hint_landscape">Több nap válik láthatóvá, ha fekvő módba állítod a telefonod kijelzőjét.</string>
<plurals name="delete_habits_title">
<item quantity="one">Törli a szokást?</item>
<item quantity="other">Törli a szokásokat?</item>
</plurals>
<plurals name="delete_habits_message">
<item quantity="one">A szokás véglegesen törölve lesz. A műveletet nem lehet visszavonni.</item>
<item quantity="other">A szokások véglegesen törölve lesznek. A műveletet nem lehet visszavonni.</item>
</plurals>
<string name="habit_not_found">Szokás törölve / nem található</string> <string name="habit_not_found">Szokás törölve / nem található</string>
<string name="weekends">Hétvégente</string> <string name="weekends">Hétvégente</string>
<string name="any_weekday">Hétfőtől péntekig</string> <string name="any_weekday">Hétfőtől péntekig</string>
@@ -107,7 +131,7 @@
<string name="generate_bug_report">Hibabejelentés generálása</string> <string name="generate_bug_report">Hibabejelentés generálása</string>
<string name="troubleshooting">Hibaelhárítás</string> <string name="troubleshooting">Hibaelhárítás</string>
<string name="help_translate">Segíts lefordítani ezt az alkalmazást</string> <string name="help_translate">Segíts lefordítani ezt az alkalmazást</string>
<string name="night_mode" comment="dark_theme">Éjszakai mód</string> <string name="night_mode">Éjszakai mód</string>
<string name="use_pure_black">Fekete használata éjszakai módban</string> <string name="use_pure_black">Fekete használata éjszakai módban</string>
<string name="pure_black_description">A szürke hátteret tiszta feketére cseréli éjszakai módban. Csökkenti az energiafelhasználást AMOLED kijelzős telefonokon.</string> <string name="pure_black_description">A szürke hátteret tiszta feketére cseréli éjszakai módban. Csökkenti az energiafelhasználást AMOLED kijelzős telefonokon.</string>
<string name="interface_preferences">Kezelőfelület</string> <string name="interface_preferences">Kezelőfelület</string>
@@ -143,9 +167,9 @@
<string name="by_name">Megnevezés szerint</string> <string name="by_name">Megnevezés szerint</string>
<string name="by_color">Színek szerint</string> <string name="by_color">Színek szerint</string>
<string name="by_score">Pont szerint</string> <string name="by_score">Pont szerint</string>
<string name="by_status">Állapot szerint</string>
<string name="export">Exportálás</string> <string name="export">Exportálás</string>
<string name="long_press_to_edit">Az érték módosításához tartsd lenyomva</string> <string name="long_press_to_edit">Az érték módosításához tartsd lenyomva</string>
<string name="change_value">Érték módosítása</string>
<string name="calendar">Naptár</string> <string name="calendar">Naptár</string>
<string name="unit">Egység</string> <string name="unit">Egység</string>
<string name="example_question_boolean">pl. Edzettél ma?</string> <string name="example_question_boolean">pl. Edzettél ma?</string>
@@ -166,8 +190,10 @@
<string name="example_notes">(opcionális)</string> <string name="example_notes">(opcionális)</string>
<string name="yes_or_no_example">pl. Korán keltél ma fel? Edzettél? Sakkoztál?</string> <string name="yes_or_no_example">pl. Korán keltél ma fel? Edzettél? Sakkoztál?</string>
<string name="measurable">Mérhető</string> <string name="measurable">Mérhető</string>
<string name="measurable_example">pl. Hány kilométert futottál ma? Hány oldalt olvastál el?</string>
<string name="x_times_per_week">Heti %d alkalommal</string> <string name="x_times_per_week">Heti %d alkalommal</string>
<string name="x_times_per_month">Havi %d alkalommal</string> <string name="x_times_per_month">Havi %d alkalommal</string>
<string name="x_times_per_y_days">%d alk. / %d nap</string>
<string name="yes_or_no_short_example">pl. Edzés</string> <string name="yes_or_no_short_example">pl. Edzés</string>
<string name="color">Szín</string> <string name="color">Szín</string>
<string name="example_target">pl. 15</string> <string name="example_target">pl. 15</string>
@@ -177,4 +203,18 @@
<string name="every_month">Minden hónapban</string> <string name="every_month">Minden hónapban</string>
<string name="validation_cannot_be_blank">Nem lehet üres</string> <string name="validation_cannot_be_blank">Nem lehet üres</string>
<string name="today">Ma</string> <string name="today">Ma</string>
<string name="enter">Bevitel</string>
<string name="no_habits">Nem találhatók szokások</string>
<string name="no_numerical_habits">Nem található mérhető szokás</string>
<string name="no_boolean_habits">Nem található igen-vagy-nem szokás</string>
<string name="increment">Növelés</string>
<string name="decrement">Csökkentés</string>
<string name="pref_skip_title">Napok kihagyásának engedélyezése</string>
<string name="pref_skip_description">Váltás kétszer, ha kihagyást szeretne hozzáadni a pipa helyett. A kihagyások változatlanul tartják a pontszámot, és nem szakítják meg a sorozatot.</string>
<string name="pref_unknown_title">Kérdőjelek megjelenítése a hiányzó adatoknál</string>
<string name="pref_unknown_description">Az adatok nélküli napok megkülönböztetése a tényleges kihagyásoktól. Kihagyás megadásához váltson kétszer.</string>
<string name="you_are_now_a_developer">Ön mostantól már fejlesztő!</string>
<string name="activity_not_found">Ezen művelet elvégzéséhez nem található alkalmazás.</string>
<string name="pref_midnight_delay_title">A nap meghosszabbítása éjfél után néhány órával</string>
<string name="pref_midnight_delay_description">Várjon hajnali 3 -ig, hogy új napot mutasson. Hasznos, ha általában éjfél után fekszik le. Az alkalmazás újraindítását igényli.</string>
</resources> </resources>

View File

@@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2016-2021 Álinson Santos Xavier <git@axavier.org>
~
~ This file is part of Loop Habit Tracker.
~
~ Loop Habit Tracker is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by the
~ Free Software Foundation, either version 3 of the License, or (at your
~ option) any later version.
~
~ Loop Habit Tracker is distributed in the hope that it will be useful, but
~ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
~ more details.
~
~ You should have received a copy of the GNU General Public License along
~ with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
<string name="app_name">Loop Habit Tracker</string>
<string name="main_activity_title">Սովորություններ</string>
<string name="action_settings">Կարգավորումներ</string>
<string name="edit">Փոփոխել</string>
<string name="delete">Ջնջել</string>
<string name="archive">Արխիվ</string>
<string name="unarchive">Անարխիվ</string>
<string name="add_habit">Ավելացնել սովորություն</string>
<string name="color_picker_default_title">Փոխել գույնը</string>
<string name="toast_habit_created">Սովորությունը ստեղծեց</string>
<string name="history">Պատմություն</string>
<string name="clear">Մաքրել</string>
<string name="reminder">Հիշեցում</string>
<string name="save">Պահել</string>
<string name="reminder_off">Անջ.</string>
<string name="create_habit">Ստեղծել սովորությունը</string>
<string name="edit_habit">Փոփոխել սովորությունը</string>
<string name="snooze">Հետո</string>
<string name="intro_title_1">Բարի գալուստ</string>
<string name="interval_15_minutes">15 րոպե</string>
<string name="interval_30_minutes">30 րոպե</string>
<string name="interval_1_hour">1 ժամ</string>
<string name="interval_2_hour">2 ժամ</string>
<string name="interval_4_hour">4 ժամ</string>
<string name="interval_8_hour">8 ժամ</string>
<string name="interval_24_hour">24 ժամ</string>
<string name="interval_always_ask">Միշտ հարցնել</string>
<string name="links">Հղումներ</string>
<string name="name">Անուն</string>
<string name="settings">Կարգավորումներ</string>
<string name="hint_title">Գիտե՞ք</string>
<string name="weekends">Հանգստյան օրեր</string>
<string name="select_weekdays">Նշել օրեր</string>
<string name="done_label">Պատրաստ է</string>
<string name="clear_label">Մաքրել</string>
<string name="about">Մասին</string>
<string name="translators">Թարգմանիչներ</string>
<string name="version_n">Տարբերակ %s</string>
<string name="frequency">Հաճախություն</string>
<string name="every_day">Ամեն օր</string>
<string name="every_week">Ամեն շաբաթ</string>
<string name="night_mode">Մուգ տեսք</string>
<string name="day">Օր</string>
<string name="week">Շաբաթ</string>
<string name="month">Ամիս</string>
<string name="year">Տարի</string>
<string name="yes_or_no">Այո կամ ոչ</string>
<string name="every_x_days">Ամեն %d օրը մեկ</string>
<string name="every_x_weeks">Ամեն %d շաբաթը մեկ</string>
<string name="filter">Զտել</string>
<string name="habit">Սովորություն</string>
<string name="manually">Ձեռքով</string>
<string name="by_name">Անունով</string>
<string name="by_color">Գույնով</string>
<string name="calendar">Օրացույց</string>
<string name="unit">Միավոր</string>
<string name="question">Հարց</string>
<string name="yes">Այո</string>
<string name="no">Ոչ</string>
<string name="measurable">Չափելի</string>
<string name="x_times_per_week">Շաբաթական %d անգամ</string>
<string name="x_times_per_month">Ամսական %d անգամ</string>
<string name="color">Գույն</string>
<string name="today">Այսօր</string>
</resources>

View File

@@ -71,7 +71,7 @@
<string name="interval_always_ask">Selalu bertanya</string> <string name="interval_always_ask">Selalu bertanya</string>
<string name="interval_custom">Kustom...</string> <string name="interval_custom">Kustom...</string>
<string name="pref_toggle_title">Tandai dengan cepat</string> <string name="pref_toggle_title">Tandai dengan cepat</string>
<string name="pref_toggle_description">Beri tanda centang dengan sekali ketuk bukan tekan-dan-tahan. Lebih nyaman, tapi dapat menyebabkan kesalahan penandaan.</string> <string name="pref_toggle_description_2">Beri tanda centang dengan satu ketukan alih-alih tekan dan tahan.</string>
<string name="pref_rate_this_app">Berikan rating aplikasi ini di Google Play</string> <string name="pref_rate_this_app">Berikan rating aplikasi ini di Google Play</string>
<string name="pref_send_feedback">Kirimkan umpan balik kepada Developer</string> <string name="pref_send_feedback">Kirimkan umpan balik kepada Developer</string>
<string name="pref_view_source_code">Lihat kode program di GitHub</string> <string name="pref_view_source_code">Lihat kode program di GitHub</string>
@@ -130,7 +130,7 @@
<string name="generate_bug_report">Membuat laporan masalah</string> <string name="generate_bug_report">Membuat laporan masalah</string>
<string name="troubleshooting">Troubleshoot</string> <string name="troubleshooting">Troubleshoot</string>
<string name="help_translate">Bantu menerjemahkan aplikasi ini</string> <string name="help_translate">Bantu menerjemahkan aplikasi ini</string>
<string name="night_mode" comment="dark_theme">Mode malam</string> <string name="night_mode">Mode malam</string>
<string name="use_pure_black">Gunakan warna hitam pekat pada mode malam</string> <string name="use_pure_black">Gunakan warna hitam pekat pada mode malam</string>
<string name="pure_black_description">Ganti warna latar abu-abu dengan warna hitam pada mode malam. Mengurangi penggunaan baterai pada layar AMOLED.</string> <string name="pure_black_description">Ganti warna latar abu-abu dengan warna hitam pada mode malam. Mengurangi penggunaan baterai pada layar AMOLED.</string>
<string name="interface_preferences">Antarmuka</string> <string name="interface_preferences">Antarmuka</string>
@@ -169,7 +169,6 @@
<string name="by_status">Berdasarkan status</string> <string name="by_status">Berdasarkan status</string>
<string name="export">Ekspor</string> <string name="export">Ekspor</string>
<string name="long_press_to_edit">Tekan-dan-tahan untuk mengubah nilai</string> <string name="long_press_to_edit">Tekan-dan-tahan untuk mengubah nilai</string>
<string name="change_value">Ubah nilai (value)</string>
<string name="calendar">Kalender</string> <string name="calendar">Kalender</string>
<string name="unit">Unit</string> <string name="unit">Unit</string>
<string name="example_question_boolean">mis. Apakah kamu sudah berolahraga hari ini?</string> <string name="example_question_boolean">mis. Apakah kamu sudah berolahraga hari ini?</string>
@@ -193,6 +192,7 @@
<string name="measurable_example">mis. Berapa km kamu berlari hari ini? Berapa lembar yang sudah kamu baca?</string> <string name="measurable_example">mis. Berapa km kamu berlari hari ini? Berapa lembar yang sudah kamu baca?</string>
<string name="x_times_per_week">%d kali per minggu</string> <string name="x_times_per_week">%d kali per minggu</string>
<string name="x_times_per_month">%d kali per bulan</string> <string name="x_times_per_month">%d kali per bulan</string>
<string name="x_times_per_y_days">%d kali dalam %d hari</string>
<string name="yes_or_no_short_example">mis. Olahraga</string> <string name="yes_or_no_short_example">mis. Olahraga</string>
<string name="color">Warna</string> <string name="color">Warna</string>
<string name="example_target">mis. 15</string> <string name="example_target">mis. 15</string>

View File

@@ -75,7 +75,7 @@
<string name="interval_always_ask">Chiedi sempre</string> <string name="interval_always_ask">Chiedi sempre</string>
<string name="interval_custom">Personalizza...</string> <string name="interval_custom">Personalizza...</string>
<string name="pref_toggle_title">Spunta le ripetizioni velocemente</string> <string name="pref_toggle_title">Spunta le ripetizioni velocemente</string>
<string name="pref_toggle_description">Metti le spunte con un tocco singolo invece che tenendo premuto. Più comodo, ma potrebbe causare delle spunte accidentali.</string> <string name="pref_toggle_description_2">Metti i segni di spunta con un tocco rapido invece di tenere premuto.</string>
<string name="pref_rate_this_app">Valuta quest\'app su Google Play</string> <string name="pref_rate_this_app">Valuta quest\'app su Google Play</string>
<string name="pref_send_feedback">Manda un feedback allo sviluppatore</string> <string name="pref_send_feedback">Manda un feedback allo sviluppatore</string>
<string name="pref_view_source_code">Vedi il codice sorgente su GitHub</string> <string name="pref_view_source_code">Vedi il codice sorgente su GitHub</string>
@@ -127,7 +127,7 @@
<string name="generate_bug_report">Genera bug report</string> <string name="generate_bug_report">Genera bug report</string>
<string name="troubleshooting">Risoluzione dei problemi</string> <string name="troubleshooting">Risoluzione dei problemi</string>
<string name="help_translate">Aiuta a tradurre questa app</string> <string name="help_translate">Aiuta a tradurre questa app</string>
<string name="night_mode" comment="dark_theme">Modalità notte</string> <string name="night_mode">Modalità notte</string>
<string name="use_pure_black">Usa nero puro nella modalità notte</string> <string name="use_pure_black">Usa nero puro nella modalità notte</string>
<string name="pure_black_description">Sostituisce gli sfondi grigi con sfondi neri nella modalità notte. Riduce il consumo di batteria nei dispositivi con schermo AMOLED.</string> <string name="pure_black_description">Sostituisce gli sfondi grigi con sfondi neri nella modalità notte. Riduce il consumo di batteria nei dispositivi con schermo AMOLED.</string>
<string name="interface_preferences">Interfaccia</string> <string name="interface_preferences">Interfaccia</string>
@@ -147,6 +147,7 @@
<string name="none">Nessuno</string> <string name="none">Nessuno</string>
<string name="filter">Filtra</string> <string name="filter">Filtra</string>
<string name="hide_completed">Nascondi completati</string> <string name="hide_completed">Nascondi completati</string>
<string name="hide_entered">Nascondi inserito</string>
<string name="hide_archived">Nascondi archiviati</string> <string name="hide_archived">Nascondi archiviati</string>
<string name="sticky_notifications">Notifiche non rimuovibili</string> <string name="sticky_notifications">Notifiche non rimuovibili</string>
<string name="sticky_notifications_description">Impedisce di poter rimuovere le notifiche.</string> <string name="sticky_notifications_description">Impedisce di poter rimuovere le notifiche.</string>
@@ -166,9 +167,12 @@
<string name="by_status">Per stato</string> <string name="by_status">Per stato</string>
<string name="export">Esporta</string> <string name="export">Esporta</string>
<string name="long_press_to_edit">Tieni premuto per cambiare il valore</string> <string name="long_press_to_edit">Tieni premuto per cambiare il valore</string>
<string name="change_value">Cambia valore</string> <string name="value">Valore</string>
<string name="calendar">Calendario</string> <string name="calendar">Calendario</string>
<string name="unit">Unità</string> <string name="unit">Unità</string>
<string name="target_type">Tipo di destinazione</string>
<string name="target_type_at_least">Almeno</string>
<string name="target_type_at_most">Al massimo</string>
<string name="example_question_boolean">ad es. Ti sei allenato oggi?</string> <string name="example_question_boolean">ad es. Ti sei allenato oggi?</string>
<string name="question">Domanda</string> <string name="question">Domanda</string>
<string name="target">Obiettivo</string> <string name="target">Obiettivo</string>
@@ -190,6 +194,7 @@
<string name="measurable_example">es. Quanti chilometri hai percorso oggi? Quante pagine hai letto?</string> <string name="measurable_example">es. Quanti chilometri hai percorso oggi? Quante pagine hai letto?</string>
<string name="x_times_per_week">%d volte a settimana</string> <string name="x_times_per_week">%d volte a settimana</string>
<string name="x_times_per_month">%d volte al mese</string> <string name="x_times_per_month">%d volte al mese</string>
<string name="x_times_per_y_days">%d volte in %d giorni</string>
<string name="yes_or_no_short_example">ad es. Esercizio</string> <string name="yes_or_no_short_example">ad es. Esercizio</string>
<string name="color">Colore</string> <string name="color">Colore</string>
<string name="example_target">ad es. 15</string> <string name="example_target">ad es. 15</string>

View File

@@ -70,7 +70,7 @@
<string name="intro_title_1">ברוך בואך</string> <string name="intro_title_1">ברוך בואך</string>
<string name="intro_description_1">„Loop למעקב אחר ההרגלים” מסייע לך ביצירה ובשימור הרגלים טובים.</string> <string name="intro_description_1">„Loop למעקב אחר ההרגלים” מסייע לך ביצירה ובשימור הרגלים טובים.</string>
<string name="intro_title_2">יצירת הרגלים חדשים</string> <string name="intro_title_2">יצירת הרגלים חדשים</string>
<string name="intro_description_2">בכל יום, לאחר שביצעת את ההרגל, יש לסמן זאת ביישום.</string> <string name="intro_description_2">בכל יום, לאחר ביצוע ההרגל, יש לסמן זאת ביישום.</string>
<string name="intro_title_4">מעקב אחר ההתקדמות</string> <string name="intro_title_4">מעקב אחר ההתקדמות</string>
<string name="intro_description_4">גרפים מפורטים מציגים כיצד ההרגלים שלך השתפרו לאורך זמן.</string> <string name="intro_description_4">גרפים מפורטים מציגים כיצד ההרגלים שלך השתפרו לאורך זמן.</string>
<string name="interval_15_minutes">15 דקות</string> <string name="interval_15_minutes">15 דקות</string>
@@ -83,7 +83,6 @@
<string name="interval_always_ask">תמיד לשאול</string> <string name="interval_always_ask">תמיד לשאול</string>
<string name="interval_custom">התאמה אישית...</string> <string name="interval_custom">התאמה אישית...</string>
<string name="pref_toggle_title">סימון הרגלים בלחיצה קצרה</string> <string name="pref_toggle_title">סימון הרגלים בלחיצה קצרה</string>
<string name="pref_toggle_description">סימון יעדים בהקשה קצרה במקום בלחיצה ממושכת. זה נוח יותר, אך יכול להוביל לסימוני הרגלים בטעות.</string>
<string name="pref_rate_this_app">דירוג היישום ב־Google Play</string> <string name="pref_rate_this_app">דירוג היישום ב־Google Play</string>
<string name="pref_send_feedback">שליחת משוב למפתחים</string> <string name="pref_send_feedback">שליחת משוב למפתחים</string>
<string name="pref_view_source_code">צפייה בקוד המקור ב־GitHub</string> <string name="pref_view_source_code">צפייה בקוד המקור ב־GitHub</string>
@@ -108,7 +107,7 @@
</plurals> </plurals>
<string name="habit_not_found">ההרגל נמחק / לא נמצא</string> <string name="habit_not_found">ההרגל נמחק / לא נמצא</string>
<string name="weekends">סופי שבוע</string> <string name="weekends">סופי שבוע</string>
<string name="any_weekday">ימי חול</string> <string name="any_weekday">שני עד שישי</string>
<string name="any_day">כל ימות השבוע</string> <string name="any_day">כל ימות השבוע</string>
<string name="select_weekdays">בחירת ימים</string> <string name="select_weekdays">בחירת ימים</string>
<string name="export_to_csv">ייצוא כקובץ CSV</string> <string name="export_to_csv">ייצוא כקובץ CSV</string>
@@ -139,7 +138,7 @@
<string name="generate_bug_report">יצירת דו״ח תקלה</string> <string name="generate_bug_report">יצירת דו״ח תקלה</string>
<string name="troubleshooting">פתרון תקלות</string> <string name="troubleshooting">פתרון תקלות</string>
<string name="help_translate">עזרה בתרגום היישום</string> <string name="help_translate">עזרה בתרגום היישום</string>
<string name="night_mode" comment="dark_theme">ערכת נושא כהה</string> <string name="night_mode">ערכת נושא כהה</string>
<string name="use_pure_black">רקע שחור מוחלט בערכת הנושא הכהה</string> <string name="use_pure_black">רקע שחור מוחלט בערכת הנושא הכהה</string>
<string name="pure_black_description">להחלפת הרקע האפור בערכת הנושא הכהה לשחור מוחלט. זה מפחית את צריכת הסוללה במכשירים עם תצוגת AMOLED.</string> <string name="pure_black_description">להחלפת הרקע האפור בערכת הנושא הכהה לשחור מוחלט. זה מפחית את צריכת הסוללה במכשירים עם תצוגת AMOLED.</string>
<string name="interface_preferences">ממשק</string> <string name="interface_preferences">ממשק</string>
@@ -178,7 +177,6 @@
<string name="by_status">לפי מצב</string> <string name="by_status">לפי מצב</string>
<string name="export">ייצוא</string> <string name="export">ייצוא</string>
<string name="long_press_to_edit">לחיצה והחזקה ישנו את הערך</string> <string name="long_press_to_edit">לחיצה והחזקה ישנו את הערך</string>
<string name="change_value">שינוי ערך</string>
<string name="calendar">לוח שנה</string> <string name="calendar">לוח שנה</string>
<string name="unit">יחידה</string> <string name="unit">יחידה</string>
<string name="example_question_boolean">למשל: האם התעמלת היום?</string> <string name="example_question_boolean">למשל: האם התעמלת היום?</string>
@@ -202,6 +200,7 @@
<string name="measurable_example">למשל: כמה קילומטרים רצת היום? כמה עמודים קראת?</string> <string name="measurable_example">למשל: כמה קילומטרים רצת היום? כמה עמודים קראת?</string>
<string name="x_times_per_week">%d פעמים בשבוע</string> <string name="x_times_per_week">%d פעמים בשבוע</string>
<string name="x_times_per_month">%d פעמים בחודש</string> <string name="x_times_per_month">%d פעמים בחודש</string>
<string name="x_times_per_y_days">%d פעמים ב- %d ימים</string>
<string name="yes_or_no_short_example">למשל: התעמלות</string> <string name="yes_or_no_short_example">למשל: התעמלות</string>
<string name="color">צבע</string> <string name="color">צבע</string>
<string name="example_target">למשל: 15</string> <string name="example_target">למשל: 15</string>

View File

@@ -37,6 +37,9 @@
<plurals name="toast_habits_archived"> <plurals name="toast_habits_archived">
<item quantity="other">習慣をアーカイブしました</item> <item quantity="other">習慣をアーカイブしました</item>
</plurals> </plurals>
<plurals name="toast_habits_unarchived">
<item quantity="other">習慣のアーカイブを解除しました</item>
</plurals>
<string name="overview">概要</string> <string name="overview">概要</string>
<string name="habit_strength">習慣の強さ</string> <string name="habit_strength">習慣の強さ</string>
<string name="history">履歴</string> <string name="history">履歴</string>
@@ -68,7 +71,6 @@
<string name="interval_always_ask">毎回選択する</string> <string name="interval_always_ask">毎回選択する</string>
<string name="interval_custom">カスタム...</string> <string name="interval_custom">カスタム...</string>
<string name="pref_toggle_title">タップでチェックをON/OFF</string> <string name="pref_toggle_title">タップでチェックをON/OFF</string>
<string name="pref_toggle_description">長押しではなくシングルタップでチェックを付けます。より便利ですが、誤って切り替えが起こる可能性があります。</string>
<string name="pref_rate_this_app">Google Play でこのアプリを評価</string> <string name="pref_rate_this_app">Google Play でこのアプリを評価</string>
<string name="pref_send_feedback">開発者にフィードバックを送信</string> <string name="pref_send_feedback">開発者にフィードバックを送信</string>
<string name="pref_view_source_code">GitHub でソースコードを参照</string> <string name="pref_view_source_code">GitHub でソースコードを参照</string>
@@ -118,7 +120,7 @@
<string name="generate_bug_report">バグレポートの作成</string> <string name="generate_bug_report">バグレポートの作成</string>
<string name="troubleshooting">トラブルシューティング</string> <string name="troubleshooting">トラブルシューティング</string>
<string name="help_translate">このアプリの翻訳を支援する</string> <string name="help_translate">このアプリの翻訳を支援する</string>
<string name="night_mode" comment="dark_theme">ダークテーマ</string> <string name="night_mode">ダークテーマ</string>
<string name="use_pure_black">ダークテーマで完全な黒を使用する</string> <string name="use_pure_black">ダークテーマで完全な黒を使用する</string>
<string name="pure_black_description">夜間モードで灰色の背景を完全な黒で置き換えます。AMOLED ディスプレイの電話でバッテリー使用量を抑えます。</string> <string name="pure_black_description">夜間モードで灰色の背景を完全な黒で置き換えます。AMOLED ディスプレイの電話でバッテリー使用量を抑えます。</string>
<string name="interface_preferences">インターフェース</string> <string name="interface_preferences">インターフェース</string>
@@ -157,7 +159,6 @@
<string name="by_status">ステータス順</string> <string name="by_status">ステータス順</string>
<string name="export">エクスポート</string> <string name="export">エクスポート</string>
<string name="long_press_to_edit">長押しすると値を変更できます</string> <string name="long_press_to_edit">長押しすると値を変更できます</string>
<string name="change_value">値を変更する</string>
<string name="calendar">カレンダー</string> <string name="calendar">カレンダー</string>
<string name="unit">単位</string> <string name="unit">単位</string>
<string name="example_question_boolean">例:今日は運動しましたか?</string> <string name="example_question_boolean">例:今日は運動しましたか?</string>
@@ -181,6 +182,7 @@
<string name="measurable_example">例:今日は何キロ走ったの?何ページ読んだの?</string> <string name="measurable_example">例:今日は何キロ走ったの?何ページ読んだの?</string>
<string name="x_times_per_week">1 週間に %d 回</string> <string name="x_times_per_week">1 週間に %d 回</string>
<string name="x_times_per_month">1 か月に %d 回</string> <string name="x_times_per_month">1 か月に %d 回</string>
<string name="x_times_per_y_days">%d 回 %d 日</string>
<string name="yes_or_no_short_example">例:運動</string> <string name="yes_or_no_short_example">例:運動</string>
<string name="color"></string> <string name="color"></string>
<string name="example_target">15</string> <string name="example_target">15</string>
@@ -192,5 +194,7 @@
<string name="today">今日</string> <string name="today">今日</string>
<string name="enter">入力</string> <string name="enter">入力</string>
<string name="no_habits">習慣が見つかりませんでした</string> <string name="no_habits">習慣が見つかりませんでした</string>
<string name="pref_skip_title">スキップ日を有効にする</string>
<string name="you_are_now_a_developer">これで開発者になりました!</string> <string name="you_are_now_a_developer">これで開発者になりました!</string>
<string name="activity_not_found">この操作を行うアプリが見つかりませんでした。</string>
</resources> </resources>

View File

@@ -28,6 +28,18 @@
<string name="add_habit">습관 추가하기</string> <string name="add_habit">습관 추가하기</string>
<string name="color_picker_default_title">색상 변경</string> <string name="color_picker_default_title">색상 변경</string>
<string name="toast_habit_created">습관이 생성되었습니다.</string> <string name="toast_habit_created">습관이 생성되었습니다.</string>
<plurals name="toast_habits_changed">
<item quantity="other">습관이 변경되었습니다</item>
</plurals>
<plurals name="toast_habits_deleted">
<item quantity="other">습관이 삭제되었습니다</item>
</plurals>
<plurals name="toast_habits_archived">
<item quantity="other">습관이 보관 되었습니다 </item>
</plurals>
<plurals name="toast_habits_unarchived">
<item quantity="other">습관 보관이 취소되었습니다 </item>
</plurals>
<string name="overview">한눈에 보기</string> <string name="overview">한눈에 보기</string>
<string name="habit_strength">습관 강도</string> <string name="habit_strength">습관 강도</string>
<string name="history">이력</string> <string name="history">이력</string>
@@ -36,6 +48,7 @@
<string name="save">저장</string> <string name="save">저장</string>
<string name="streaks">연속</string> <string name="streaks">연속</string>
<string name="no_habits_found">활성화된 습관이 없습니다.</string> <string name="no_habits_found">활성화된 습관이 없습니다.</string>
<string name="no_habits_left_to_do">오늘 할 일을 모두 마쳤습니다 </string>
<string name="long_press_to_toggle">체크하거나 해제하려면 길게 누르세요.</string> <string name="long_press_to_toggle">체크하거나 해제하려면 길게 누르세요.</string>
<string name="reminder_off"></string> <string name="reminder_off"></string>
<string name="create_habit">습관 만들기</string> <string name="create_habit">습관 만들기</string>
@@ -58,7 +71,6 @@
<string name="interval_always_ask">항상 묻기</string> <string name="interval_always_ask">항상 묻기</string>
<string name="interval_custom">사용자 지정.</string> <string name="interval_custom">사용자 지정.</string>
<string name="pref_toggle_title">짧게 눌러서 전환하기</string> <string name="pref_toggle_title">짧게 눌러서 전환하기</string>
<string name="pref_toggle_description">길게 누르고 있는 대신에 짧은 탭 한 번으로 체크합니다. 더 편리하지만, 실수로 전환될 수도 있습니다.</string>
<string name="pref_rate_this_app">Google Play에서 평가</string> <string name="pref_rate_this_app">Google Play에서 평가</string>
<string name="pref_send_feedback">개발자에게 피드백 보내기</string> <string name="pref_send_feedback">개발자에게 피드백 보내기</string>
<string name="pref_view_source_code">Github에서 소스보기</string> <string name="pref_view_source_code">Github에서 소스보기</string>
@@ -69,6 +81,12 @@
<string name="hint_title">아시나요?</string> <string name="hint_title">아시나요?</string>
<string name="hint_drag">목록의 순서를 재배치하려면, 습관의 제목을 길게 누르고 다른 위치로 드래그하면 됩니다.</string> <string name="hint_drag">목록의 순서를 재배치하려면, 습관의 제목을 길게 누르고 다른 위치로 드래그하면 됩니다.</string>
<string name="hint_landscape">가로 모드에서는 더 많은 날짜를 볼 수 있습니다.</string> <string name="hint_landscape">가로 모드에서는 더 많은 날짜를 볼 수 있습니다.</string>
<plurals name="delete_habits_title">
<item quantity="other">습관을 삭제하시겠습니까?</item>
</plurals>
<plurals name="delete_habits_message">
<item quantity="other">습관을 영구적으로 삭제합니다. 삭제 후 취소할 수 없습니다.</item>
</plurals>
<string name="habit_not_found">습관 삭제 / 찾을 수 없음</string> <string name="habit_not_found">습관 삭제 / 찾을 수 없음</string>
<string name="weekends">주말</string> <string name="weekends">주말</string>
<string name="any_weekday">주중</string> <string name="any_weekday">주중</string>
@@ -102,7 +120,7 @@
<string name="generate_bug_report">오류보고서 작성하기</string> <string name="generate_bug_report">오류보고서 작성하기</string>
<string name="troubleshooting">문제 해결</string> <string name="troubleshooting">문제 해결</string>
<string name="help_translate">이 앱의 번역을 도와주세요</string> <string name="help_translate">이 앱의 번역을 도와주세요</string>
<string name="night_mode" comment="dark_theme">야간 모드</string> <string name="night_mode">야간 모드</string>
<string name="use_pure_black">야간 모드에서 검정색 사용하기</string> <string name="use_pure_black">야간 모드에서 검정색 사용하기</string>
<string name="pure_black_description">야간 모드의 회색 배경을 검정색으로 대체합니다. AMOLED 디스플레이를 사용하는 기기에서 배터리 사용량을 감소시킵니다.</string> <string name="pure_black_description">야간 모드의 회색 배경을 검정색으로 대체합니다. AMOLED 디스플레이를 사용하는 기기에서 배터리 사용량을 감소시킵니다.</string>
<string name="interface_preferences">인터페이스</string> <string name="interface_preferences">인터페이스</string>
@@ -138,9 +156,9 @@
<string name="by_name">이름 순으로</string> <string name="by_name">이름 순으로</string>
<string name="by_color">색상 순으로</string> <string name="by_color">색상 순으로</string>
<string name="by_score">점수 순으로</string> <string name="by_score">점수 순으로</string>
<string name="by_status">상태별로</string>
<string name="export">내보내기</string> <string name="export">내보내기</string>
<string name="long_press_to_edit">길게 누르면 값이 변경됩니다.</string> <string name="long_press_to_edit">길게 누르면 값이 변경됩니다.</string>
<string name="change_value">값 변경</string>
<string name="calendar">캘린더</string> <string name="calendar">캘린더</string>
<string name="unit">단위</string> <string name="unit">단위</string>
<string name="example_question_boolean">예 : 오늘 운동을 했습니까?</string> <string name="example_question_boolean">예 : 오늘 운동을 했습니까?</string>
@@ -153,11 +171,21 @@
<string name="pref_view_privacy">개인 정보 취급 방침 보기</string> <string name="pref_view_privacy">개인 정보 취급 방침 보기</string>
<string name="view_all_contributors">모든 기여자보기&#8230;</string> <string name="view_all_contributors">모든 기여자보기&#8230;</string>
<string name="database">데이터베이스</string> <string name="database">데이터베이스</string>
<string name="widget_opacity_title">위젯 투명도</string>
<string name="widget_opacity_description">위젯을 홈 화면에서 더 투명하게 또는 더 불투명하게 합니다.</string>
<string name="first_day_of_the_week">첫번째 요일</string> <string name="first_day_of_the_week">첫번째 요일</string>
<string name="default_reminder_question">오늘 습관을 지키셨나요?</string> <string name="default_reminder_question">오늘 습관을 지키셨나요?</string>
<string name="notes">메모</string> <string name="notes">메모</string>
<string name="example_notes">(선택사항)</string> <string name="example_notes">(선택사항)</string>
<string name="yes_or_no_example">예) 오늘 일찍 일어났나요? 운동 하셨나요? 체스를 하셨나요?</string>
<string name="measurable">측정 가능한</string>
<string name="measurable_example">예) 오늘 몇 마일을 달렸습니까? 몇 페이지를 읽었습니까?</string>
<string name="x_times_per_week">일주일에 몇 번</string>
<string name="x_times_per_month">한 달에 몇 번</string>
<string name="x_times_per_y_days">%d 번 %d 일 동안</string>
<string name="yes_or_no_short_example">예) 운동</string>
<string name="color"></string> <string name="color"></string>
<string name="example_target">예) 15</string>
<string name="every_month">매월</string> <string name="every_month">매월</string>
<string name="today">오늘</string> <string name="today">오늘</string>
</resources> </resources>

View File

@@ -71,7 +71,6 @@
<string name="interval_always_ask">Altijd vragen</string> <string name="interval_always_ask">Altijd vragen</string>
<string name="interval_custom">Aangepast...</string> <string name="interval_custom">Aangepast...</string>
<string name="pref_toggle_title">Wijzig herhalingen door kort indrukken</string> <string name="pref_toggle_title">Wijzig herhalingen door kort indrukken</string>
<string name="pref_toggle_description">Zet vinkjes met een enkel tikje in plaats van ingedrukt houden. Handiger, maar kan onbedoelde wijzigingen veroorzaken.</string>
<string name="pref_rate_this_app">Beoordeel deze app in Google Play</string> <string name="pref_rate_this_app">Beoordeel deze app in Google Play</string>
<string name="pref_send_feedback">Stuur feedback aan de ontwikkelaar</string> <string name="pref_send_feedback">Stuur feedback aan de ontwikkelaar</string>
<string name="pref_view_source_code">Bekijk de broncode op GitHub</string> <string name="pref_view_source_code">Bekijk de broncode op GitHub</string>
@@ -115,7 +114,7 @@
<string name="generate_bug_report">Genereer foutenrapport</string> <string name="generate_bug_report">Genereer foutenrapport</string>
<string name="troubleshooting">Probleemoplossing</string> <string name="troubleshooting">Probleemoplossing</string>
<string name="help_translate">Help deze app te vertalen</string> <string name="help_translate">Help deze app te vertalen</string>
<string name="night_mode" comment="dark_theme">Nachtmodus</string> <string name="night_mode">Nachtmodus</string>
<string name="use_pure_black">Gebruik puur zwart bij het donkere thema</string> <string name="use_pure_black">Gebruik puur zwart bij het donkere thema</string>
<string name="pure_black_description">Vervangt grijze achtergronden door puur zwart in het donkere thema. Vermindert batterijgebruik bij telefoons met AMOLED scherm.</string> <string name="pure_black_description">Vervangt grijze achtergronden door puur zwart in het donkere thema. Vermindert batterijgebruik bij telefoons met AMOLED scherm.</string>
<string name="interface_preferences">Interface</string> <string name="interface_preferences">Interface</string>
@@ -154,9 +153,11 @@
<string name="by_status">Per status</string> <string name="by_status">Per status</string>
<string name="export">Exporteren</string> <string name="export">Exporteren</string>
<string name="long_press_to_edit">Ingedrukt houden om de waarde te wijzigen</string> <string name="long_press_to_edit">Ingedrukt houden om de waarde te wijzigen</string>
<string name="change_value">Waarde wijzigen</string> <string name="value">Waarde</string>
<string name="calendar">Kalender</string> <string name="calendar">Kalender</string>
<string name="unit">Eenheid</string> <string name="unit">Eenheid</string>
<string name="target_type_at_least">Minimaal</string>
<string name="target_type_at_most">Maximaal</string>
<string name="example_question_boolean">bijv. Heb je vandaag gesport?</string> <string name="example_question_boolean">bijv. Heb je vandaag gesport?</string>
<string name="question">Vraag</string> <string name="question">Vraag</string>
<string name="target">Doel</string> <string name="target">Doel</string>
@@ -178,6 +179,7 @@
<string name="measurable_example">bijv. Hoeveel kilometer heb je vandaag gelopen? Hoeveel pagina\'s heb je gelezen?</string> <string name="measurable_example">bijv. Hoeveel kilometer heb je vandaag gelopen? Hoeveel pagina\'s heb je gelezen?</string>
<string name="x_times_per_week">%d keer per week</string> <string name="x_times_per_week">%d keer per week</string>
<string name="x_times_per_month">%d keer per maand</string> <string name="x_times_per_month">%d keer per maand</string>
<string name="x_times_per_y_days">%d keer in %d dagen</string>
<string name="yes_or_no_short_example">bijv. Sporten</string> <string name="yes_or_no_short_example">bijv. Sporten</string>
<string name="color">Kleur</string> <string name="color">Kleur</string>
<string name="example_target">bijv. 15</string> <string name="example_target">bijv. 15</string>

View File

@@ -57,7 +57,6 @@
<string name="interval_24_hour">1 døgn</string> <string name="interval_24_hour">1 døgn</string>
<string name="interval_custom">Egendefinert...</string> <string name="interval_custom">Egendefinert...</string>
<string name="pref_toggle_title">Veksl med enkelttrykk</string> <string name="pref_toggle_title">Veksl med enkelttrykk</string>
<string name="pref_toggle_description">Sett på haker med et enkelttrykk i stedet for å tykke og holde. Mer praktisk, men kan forårsake utilsiktede vekslinger.</string>
<string name="pref_rate_this_app">Vurdér denne appen på Google Play</string> <string name="pref_rate_this_app">Vurdér denne appen på Google Play</string>
<string name="pref_send_feedback">Send tilbakemelding til utviklerne</string> <string name="pref_send_feedback">Send tilbakemelding til utviklerne</string>
<string name="pref_view_source_code">Vis kildekode på GitHub</string> <string name="pref_view_source_code">Vis kildekode på GitHub</string>
@@ -100,7 +99,7 @@
<string name="generate_bug_report">Generér feilrapport</string> <string name="generate_bug_report">Generér feilrapport</string>
<string name="troubleshooting">Feilsøkning</string> <string name="troubleshooting">Feilsøkning</string>
<string name="help_translate">Hjelp med å oversette denne appen</string> <string name="help_translate">Hjelp med å oversette denne appen</string>
<string name="night_mode" comment="dark_theme">Nattmodus</string> <string name="night_mode">Nattmodus</string>
<string name="use_pure_black">Bruk batterisparing i nattmodus</string> <string name="use_pure_black">Bruk batterisparing i nattmodus</string>
<string name="pure_black_description">Bytter ut grå bakgunner med helt svarte i nattmodus. Reduserer betteribruk hos telefoner med AMOLED-skjerm.</string> <string name="pure_black_description">Bytter ut grå bakgunner med helt svarte i nattmodus. Reduserer betteribruk hos telefoner med AMOLED-skjerm.</string>
<string name="interface_preferences">Grensesnitt</string> <string name="interface_preferences">Grensesnitt</string>
@@ -135,6 +134,6 @@
<string name="by_color">Etter farge</string> <string name="by_color">Etter farge</string>
<string name="by_score">Etter poengsum</string> <string name="by_score">Etter poengsum</string>
<string name="export">Eksportér</string> <string name="export">Eksportér</string>
<string name="change_value">Endre verdi</string>
<string name="question">Spørsmål</string> <string name="question">Spørsmål</string>
<string name="x_times_per_y_days">%d ganger på %d dager</string>
</resources> </resources>

View File

@@ -83,7 +83,7 @@
<string name="interval_always_ask">Zawsze pytaj</string> <string name="interval_always_ask">Zawsze pytaj</string>
<string name="interval_custom">Własne ustawienia...</string> <string name="interval_custom">Własne ustawienia...</string>
<string name="pref_toggle_title">Przełącz powtarzanie krótkim naciśnięciem</string> <string name="pref_toggle_title">Przełącz powtarzanie krótkim naciśnięciem</string>
<string name="pref_toggle_description">Wygodniejsze, ale może spowodować przypadkowe przełączenia.</string> <string name="pref_toggle_description_2">Umieść znaczniki wyboru jednym dotknięciem zamiast naciśnięcia i przytrzymania.</string>
<string name="pref_rate_this_app">Oceń tę aplikację w Google Play</string> <string name="pref_rate_this_app">Oceń tę aplikację w Google Play</string>
<string name="pref_send_feedback">Prześlij uwagi do programisty</string> <string name="pref_send_feedback">Prześlij uwagi do programisty</string>
<string name="pref_view_source_code">Zobacz kod źródłowy na GitHub\'ie</string> <string name="pref_view_source_code">Zobacz kod źródłowy na GitHub\'ie</string>
@@ -139,7 +139,7 @@
<string name="generate_bug_report">Wygeneruj raport o błędach</string> <string name="generate_bug_report">Wygeneruj raport o błędach</string>
<string name="troubleshooting">Rozwiązywanie problemów</string> <string name="troubleshooting">Rozwiązywanie problemów</string>
<string name="help_translate">Pomóż w tłumaczeniu tej aplikacji</string> <string name="help_translate">Pomóż w tłumaczeniu tej aplikacji</string>
<string name="night_mode" comment="dark_theme">Tryb nocny</string> <string name="night_mode">Tryb nocny</string>
<string name="use_pure_black">Używaj pełnej czerni w trybie nocnym</string> <string name="use_pure_black">Używaj pełnej czerni w trybie nocnym</string>
<string name="pure_black_description">Zamienia szare tła na pełną czerń w trybie nocnym. Zmniejsza zużycie baterii w telefonach z ekranem AMOLED.</string> <string name="pure_black_description">Zamienia szare tła na pełną czerń w trybie nocnym. Zmniejsza zużycie baterii w telefonach z ekranem AMOLED.</string>
<string name="interface_preferences">Interfejs</string> <string name="interface_preferences">Interfejs</string>
@@ -159,6 +159,7 @@
<string name="none">Brak</string> <string name="none">Brak</string>
<string name="filter">Filtruj</string> <string name="filter">Filtruj</string>
<string name="hide_completed">Ukryj zakończone</string> <string name="hide_completed">Ukryj zakończone</string>
<string name="hide_entered">Ukryj wprowadzone</string>
<string name="hide_archived">Ukryj archiwizowane</string> <string name="hide_archived">Ukryj archiwizowane</string>
<string name="sticky_notifications">Przypinaj powiadomienia</string> <string name="sticky_notifications">Przypinaj powiadomienia</string>
<string name="sticky_notifications_description">Zapobiega usunięciu powiadomień.</string> <string name="sticky_notifications_description">Zapobiega usunięciu powiadomień.</string>
@@ -178,9 +179,12 @@
<string name="by_status">Według statusu</string> <string name="by_status">Według statusu</string>
<string name="export">Eksportuj</string> <string name="export">Eksportuj</string>
<string name="long_press_to_edit">Naciśnij i przytrzymaj, aby zmienić wartość</string> <string name="long_press_to_edit">Naciśnij i przytrzymaj, aby zmienić wartość</string>
<string name="change_value">Zmień wartość</string> <string name="value">Wartość</string>
<string name="calendar">Kalendarz</string> <string name="calendar">Kalendarz</string>
<string name="unit">Jednostka</string> <string name="unit">Jednostka</string>
<string name="target_type">Rodzaj celu:</string>
<string name="target_type_at_least">Co najmniej</string>
<string name="target_type_at_most">Maksymalnie</string>
<string name="example_question_boolean">np. Czy ćwiczyłeś dzisiaj?</string> <string name="example_question_boolean">np. Czy ćwiczyłeś dzisiaj?</string>
<string name="question">Pytanie</string> <string name="question">Pytanie</string>
<string name="target">Cel</string> <string name="target">Cel</string>
@@ -202,6 +206,7 @@
<string name="measurable_example">np. Ile mil przejechałeś dzisiaj? Ile stron przeczytałeś?</string> <string name="measurable_example">np. Ile mil przejechałeś dzisiaj? Ile stron przeczytałeś?</string>
<string name="x_times_per_week">%d razy w tygodniu</string> <string name="x_times_per_week">%d razy w tygodniu</string>
<string name="x_times_per_month">%d razy w miesiącu</string> <string name="x_times_per_month">%d razy w miesiącu</string>
<string name="x_times_per_y_days">%d razy w ciągu %d dni</string>
<string name="yes_or_no_short_example">np. ćwiczenia</string> <string name="yes_or_no_short_example">np. ćwiczenia</string>
<string name="color">Kolor</string> <string name="color">Kolor</string>
<string name="example_target">np. 15</string> <string name="example_target">np. 15</string>

View File

@@ -75,7 +75,6 @@
<string name="interval_always_ask">Perguntar sempre</string> <string name="interval_always_ask">Perguntar sempre</string>
<string name="interval_custom">Personalizar...</string> <string name="interval_custom">Personalizar...</string>
<string name="pref_toggle_title">Marcar repetições com um toque curto</string> <string name="pref_toggle_title">Marcar repetições com um toque curto</string>
<string name="pref_toggle_description">Mais conveniente, mas pode causar marcações acidentais</string>
<string name="pref_rate_this_app">Avaliar esse app no Google Play</string> <string name="pref_rate_this_app">Avaliar esse app no Google Play</string>
<string name="pref_send_feedback">Mandar sugestões para o desenvolvedor</string> <string name="pref_send_feedback">Mandar sugestões para o desenvolvedor</string>
<string name="pref_view_source_code">Ver código-fonte no GitHub</string> <string name="pref_view_source_code">Ver código-fonte no GitHub</string>
@@ -127,7 +126,7 @@
<string name="generate_bug_report">Gerar relatório de erros.</string> <string name="generate_bug_report">Gerar relatório de erros.</string>
<string name="troubleshooting">Solução de problemas</string> <string name="troubleshooting">Solução de problemas</string>
<string name="help_translate">Ajude a traduzir este app</string> <string name="help_translate">Ajude a traduzir este app</string>
<string name="night_mode" comment="dark_theme">Modo noturno</string> <string name="night_mode">Modo noturno</string>
<string name="use_pure_black">Usar preto em modo noturno</string> <string name="use_pure_black">Usar preto em modo noturno</string>
<string name="pure_black_description">Substitui os tons de cinza por preto puro em modo noturno. Economiza bateria em telefones com tela AMOLED.</string> <string name="pure_black_description">Substitui os tons de cinza por preto puro em modo noturno. Economiza bateria em telefones com tela AMOLED.</string>
<string name="interface_preferences">Interface</string> <string name="interface_preferences">Interface</string>
@@ -166,7 +165,6 @@
<string name="by_status">Por status</string> <string name="by_status">Por status</string>
<string name="export">Exportar</string> <string name="export">Exportar</string>
<string name="long_press_to_edit">Pressione e segure para alterar o valor</string> <string name="long_press_to_edit">Pressione e segure para alterar o valor</string>
<string name="change_value">Alterar valor</string>
<string name="calendar">Calendário</string> <string name="calendar">Calendário</string>
<string name="unit">Unidade</string> <string name="unit">Unidade</string>
<string name="example_question_boolean">ex.: Você se exercitou hoje?</string> <string name="example_question_boolean">ex.: Você se exercitou hoje?</string>
@@ -190,6 +188,7 @@
<string name="measurable_example">ex.: Quantos km você correu hoje? Quantas páginas você leu?</string> <string name="measurable_example">ex.: Quantos km você correu hoje? Quantas páginas você leu?</string>
<string name="x_times_per_week">%d vezes por semana</string> <string name="x_times_per_week">%d vezes por semana</string>
<string name="x_times_per_month">%d vezes por mês</string> <string name="x_times_per_month">%d vezes por mês</string>
<string name="x_times_per_y_days">%d vezes em %d dias</string>
<string name="yes_or_no_short_example">ex: Exercício</string> <string name="yes_or_no_short_example">ex: Exercício</string>
<string name="color">Cor</string> <string name="color">Cor</string>
<string name="example_target">Ex: 15</string> <string name="example_target">Ex: 15</string>

View File

@@ -58,7 +58,6 @@
<string name="interval_always_ask">Perguntar sempre</string> <string name="interval_always_ask">Perguntar sempre</string>
<string name="interval_custom">Personalizar...</string> <string name="interval_custom">Personalizar...</string>
<string name="pref_toggle_title">Toque para alternar entre repetições</string> <string name="pref_toggle_title">Toque para alternar entre repetições</string>
<string name="pref_toggle_description">Mais conveniente, mas pode causar toques acidentais</string>
<string name="pref_rate_this_app">Avaliar a app no Google Play</string> <string name="pref_rate_this_app">Avaliar a app no Google Play</string>
<string name="pref_send_feedback">Enviar feedback ao programador</string> <string name="pref_send_feedback">Enviar feedback ao programador</string>
<string name="pref_view_source_code">Ver código-fonte no GitHub</string> <string name="pref_view_source_code">Ver código-fonte no GitHub</string>
@@ -102,7 +101,7 @@
<string name="generate_bug_report">Gerar relatório de erros</string> <string name="generate_bug_report">Gerar relatório de erros</string>
<string name="troubleshooting">Resolução de problemas</string> <string name="troubleshooting">Resolução de problemas</string>
<string name="help_translate">Ajude a traduzir esta aplicação</string> <string name="help_translate">Ajude a traduzir esta aplicação</string>
<string name="night_mode" comment="dark_theme">Modo noturno</string> <string name="night_mode">Modo noturno</string>
<string name="use_pure_black">Usar preto puro no modo noturno</string> <string name="use_pure_black">Usar preto puro no modo noturno</string>
<string name="pure_black_description">Substitui os fundos cinzentos por pretos puros no modo noturno. Reduz a utilização da bateria em telemóveis com ecrã AMOLED.</string> <string name="pure_black_description">Substitui os fundos cinzentos por pretos puros no modo noturno. Reduz a utilização da bateria em telemóveis com ecrã AMOLED.</string>
<string name="interface_preferences">Interface</string> <string name="interface_preferences">Interface</string>
@@ -140,7 +139,6 @@
<string name="by_score">Por pontuação</string> <string name="by_score">Por pontuação</string>
<string name="export">Exportar</string> <string name="export">Exportar</string>
<string name="long_press_to_edit">Pressione e segure para alterar o valor</string> <string name="long_press_to_edit">Pressione e segure para alterar o valor</string>
<string name="change_value">Alterar o valor</string>
<string name="calendar">Calendário</string> <string name="calendar">Calendário</string>
<string name="unit">Unidade</string> <string name="unit">Unidade</string>
<string name="example_question_boolean">ex.: Você se exercitou hoje?</string> <string name="example_question_boolean">ex.: Você se exercitou hoje?</string>
@@ -163,6 +161,7 @@
<string name="measurable">Mensurável</string> <string name="measurable">Mensurável</string>
<string name="x_times_per_week">%d vezes por semana</string> <string name="x_times_per_week">%d vezes por semana</string>
<string name="x_times_per_month">%d vezes por mês</string> <string name="x_times_per_month">%d vezes por mês</string>
<string name="x_times_per_y_days">%d vezes em %d dias</string>
<string name="yes_or_no_short_example">ex. Exercício</string> <string name="yes_or_no_short_example">ex. Exercício</string>
<string name="color">Cor</string> <string name="color">Cor</string>
<string name="example_target">ex. 15</string> <string name="example_target">ex. 15</string>

View File

@@ -58,7 +58,6 @@
<string name="interval_always_ask">Intreaba mereu</string> <string name="interval_always_ask">Intreaba mereu</string>
<string name="interval_custom">Diferit...</string> <string name="interval_custom">Diferit...</string>
<string name="pref_toggle_title">Comută repetițiile printr-o apăsare scurtă</string> <string name="pref_toggle_title">Comută repetițiile printr-o apăsare scurtă</string>
<string name="pref_toggle_description">Mai convenabil, dar poate cauza comutări accidentale.</string>
<string name="pref_rate_this_app">Evaluează aplicația pe Magazin Play</string> <string name="pref_rate_this_app">Evaluează aplicația pe Magazin Play</string>
<string name="pref_send_feedback">Trimite păreri dezvoltatorului</string> <string name="pref_send_feedback">Trimite păreri dezvoltatorului</string>
<string name="pref_view_source_code">Vezi codul sursă pe GitHub</string> <string name="pref_view_source_code">Vezi codul sursă pe GitHub</string>
@@ -102,7 +101,7 @@
<string name="generate_bug_report">Generează raport de erori</string> <string name="generate_bug_report">Generează raport de erori</string>
<string name="troubleshooting">Depanare</string> <string name="troubleshooting">Depanare</string>
<string name="help_translate">Ajută la traducerea aplicației</string> <string name="help_translate">Ajută la traducerea aplicației</string>
<string name="night_mode" comment="dark_theme">Mod întunecat</string> <string name="night_mode">Mod întunecat</string>
<string name="use_pure_black">Utilizează modul întunecat</string> <string name="use_pure_black">Utilizează modul întunecat</string>
<string name="pure_black_description">Înlocuiește fundalurile gri cu negru pur în modul întunecat. Reduce utilizarea bateriei la telefoanele cu ecran AMOLED.</string> <string name="pure_black_description">Înlocuiește fundalurile gri cu negru pur în modul întunecat. Reduce utilizarea bateriei la telefoanele cu ecran AMOLED.</string>
<string name="interface_preferences">Interfață</string> <string name="interface_preferences">Interfață</string>
@@ -140,7 +139,6 @@
<string name="by_score">După scor</string> <string name="by_score">După scor</string>
<string name="export">Exportă</string> <string name="export">Exportă</string>
<string name="long_press_to_edit">Ține apăsat pentru a modifica valoarea</string> <string name="long_press_to_edit">Ține apăsat pentru a modifica valoarea</string>
<string name="change_value">Modifică valoarea</string>
<string name="calendar">Calendar</string> <string name="calendar">Calendar</string>
<string name="unit">Unități</string> <string name="unit">Unități</string>
<string name="example_question_boolean">ex.: Ai îndeplinit exerciții fizice azi?</string> <string name="example_question_boolean">ex.: Ai îndeplinit exerciții fizice azi?</string>
@@ -153,4 +151,5 @@
<string name="pref_view_privacy">Consultați politica de confidențialitate</string> <string name="pref_view_privacy">Consultați politica de confidențialitate</string>
<string name="view_all_contributors">Vizualizați toți colaboratorii&#8230;</string> <string name="view_all_contributors">Vizualizați toți colaboratorii&#8230;</string>
<string name="database">Bază de date</string> <string name="database">Bază de date</string>
<string name="x_times_per_y_days">%d ori în %d zile</string>
</resources> </resources>

View File

@@ -83,7 +83,7 @@
<string name="interval_always_ask">Всегда спрашивать</string> <string name="interval_always_ask">Всегда спрашивать</string>
<string name="interval_custom">Настроить...</string> <string name="interval_custom">Настроить...</string>
<string name="pref_toggle_title">Отмечать коротким нажатием</string> <string name="pref_toggle_title">Отмечать коротким нажатием</string>
<string name="pref_toggle_description">Ставить галочки коротким нажатием вместо удержания. Удобнее, но может стать причиной случайных отметок.</string> <string name="pref_toggle_description_2">Ставить галочки одним касанием вместо нажатия и удерживания.</string>
<string name="pref_rate_this_app">Оценить приложение в Google Play</string> <string name="pref_rate_this_app">Оценить приложение в Google Play</string>
<string name="pref_send_feedback">Отправить сообщение разработчику</string> <string name="pref_send_feedback">Отправить сообщение разработчику</string>
<string name="pref_view_source_code">Посмотреть исходный код на GitHub</string> <string name="pref_view_source_code">Посмотреть исходный код на GitHub</string>
@@ -139,7 +139,7 @@
<string name="generate_bug_report">Сгенерировать отчёт об ошибке</string> <string name="generate_bug_report">Сгенерировать отчёт об ошибке</string>
<string name="troubleshooting">Устранение неполадок</string> <string name="troubleshooting">Устранение неполадок</string>
<string name="help_translate">Помогите перевести это приложение</string> <string name="help_translate">Помогите перевести это приложение</string>
<string name="night_mode" comment="dark_theme">Ночной режим</string> <string name="night_mode">Ночной режим</string>
<string name="use_pure_black">Использовать подлинный чёрный в ночном режиме</string> <string name="use_pure_black">Использовать подлинный чёрный в ночном режиме</string>
<string name="pure_black_description">Заменяет серый фон на подлинный чёрный в ночном режиме. Сокращает расход батареи в телефонах с дисплеем AMOLED.</string> <string name="pure_black_description">Заменяет серый фон на подлинный чёрный в ночном режиме. Сокращает расход батареи в телефонах с дисплеем AMOLED.</string>
<string name="interface_preferences">Интерфейс</string> <string name="interface_preferences">Интерфейс</string>
@@ -159,6 +159,7 @@
<string name="none">Без звука</string> <string name="none">Без звука</string>
<string name="filter">Фильтр</string> <string name="filter">Фильтр</string>
<string name="hide_completed">Скрыть завершённые</string> <string name="hide_completed">Скрыть завершённые</string>
<string name="hide_entered">Скрыть введённые</string>
<string name="hide_archived">Скрыть архивированные</string> <string name="hide_archived">Скрыть архивированные</string>
<string name="sticky_notifications">Сделать уведомления \"липкими\"</string> <string name="sticky_notifications">Сделать уведомления \"липкими\"</string>
<string name="sticky_notifications_description">Предотвращает смахивание уведомлений.</string> <string name="sticky_notifications_description">Предотвращает смахивание уведомлений.</string>
@@ -178,9 +179,12 @@
<string name="by_status">По статусу</string> <string name="by_status">По статусу</string>
<string name="export">Экспортировать</string> <string name="export">Экспортировать</string>
<string name="long_press_to_edit">Нажмите и удерживайте, чтобы изменить значение</string> <string name="long_press_to_edit">Нажмите и удерживайте, чтобы изменить значение</string>
<string name="change_value">Изменить значение</string> <string name="value">Значение</string>
<string name="calendar">Календарь</string> <string name="calendar">Календарь</string>
<string name="unit">Ед. изм.</string> <string name="unit">Ед. изм.</string>
<string name="target_type">Тип цели</string>
<string name="target_type_at_least">Не меньше</string>
<string name="target_type_at_most">Не больше</string>
<string name="example_question_boolean">напр.: Вы упражнялись сегодня?</string> <string name="example_question_boolean">напр.: Вы упражнялись сегодня?</string>
<string name="question">Вопрос</string> <string name="question">Вопрос</string>
<string name="target">Цель</string> <string name="target">Цель</string>
@@ -202,6 +206,7 @@
<string name="measurable_example">напр.: Сколько км вы пробежали сегодня? Сколько страниц прочитали?</string> <string name="measurable_example">напр.: Сколько км вы пробежали сегодня? Сколько страниц прочитали?</string>
<string name="x_times_per_week">%d раз в неделю</string> <string name="x_times_per_week">%d раз в неделю</string>
<string name="x_times_per_month">%d раз в месяц</string> <string name="x_times_per_month">%d раз в месяц</string>
<string name="x_times_per_y_days">%d раз в %d дней</string>
<string name="yes_or_no_short_example">напр.: Поупражняться</string> <string name="yes_or_no_short_example">напр.: Поупражняться</string>
<string name="color">Цвет</string> <string name="color">Цвет</string>
<string name="example_target">напр.: 15</string> <string name="example_target">напр.: 15</string>

View File

@@ -28,6 +28,12 @@
<string name="add_habit">Pridaj návyk</string> <string name="add_habit">Pridaj návyk</string>
<string name="color_picker_default_title">Zmeniť farbu</string> <string name="color_picker_default_title">Zmeniť farbu</string>
<string name="toast_habit_created">Návyk vytvorený</string> <string name="toast_habit_created">Návyk vytvorený</string>
<plurals name="toast_habits_changed">
<item quantity="one">Návyk zmenený</item>
<item quantity="few">Návyky zmenené</item>
<item quantity="many">Návykov zmenených</item>
<item quantity="other">Návykov zmenených</item>
</plurals>
<string name="overview">Prehľad</string> <string name="overview">Prehľad</string>
<string name="habit_strength">Sila návyku</string> <string name="habit_strength">Sila návyku</string>
<string name="history">História</string> <string name="history">História</string>
@@ -36,6 +42,7 @@
<string name="save">Uložiť</string> <string name="save">Uložiť</string>
<string name="streaks">Série</string> <string name="streaks">Série</string>
<string name="no_habits_found">Nemáte žiadne aktívne návyky</string> <string name="no_habits_found">Nemáte žiadne aktívne návyky</string>
<string name="no_habits_left_to_do">Na dnes máte všetko hotové!</string>
<string name="long_press_to_toggle">Stlačením a podržaním začiarknite alebo zrušte začiarknutie políčka</string> <string name="long_press_to_toggle">Stlačením a podržaním začiarknite alebo zrušte začiarknutie políčka</string>
<string name="reminder_off">Vypnuté</string> <string name="reminder_off">Vypnuté</string>
<string name="create_habit">Vytvoriť návyk</string> <string name="create_habit">Vytvoriť návyk</string>
@@ -58,7 +65,6 @@
<string name="interval_always_ask">Vždy sa spýtať</string> <string name="interval_always_ask">Vždy sa spýtať</string>
<string name="interval_custom">Vlastné ...</string> <string name="interval_custom">Vlastné ...</string>
<string name="pref_toggle_title">Prepnúť krátkym stlačením</string> <string name="pref_toggle_title">Prepnúť krátkym stlačením</string>
<string name="pref_toggle_description">Pridajte začiarknutie jediným klepnutím namiesto stlačenia a podržania. Je to pohodlnejšie, ale môže dôjsť k náhodným prepnutiam.</string>
<string name="pref_rate_this_app">Ohodnoťte túto aplikáciu na Google Play</string> <string name="pref_rate_this_app">Ohodnoťte túto aplikáciu na Google Play</string>
<string name="pref_send_feedback">Odošlite spätnú väzbu vývojárovi</string> <string name="pref_send_feedback">Odošlite spätnú väzbu vývojárovi</string>
<string name="pref_view_source_code">Zobraziť zdrojový kód na stránke GitHub</string> <string name="pref_view_source_code">Zobraziť zdrojový kód na stránke GitHub</string>
@@ -102,7 +108,7 @@
<string name="generate_bug_report">Vygenerujte hlásenie o chybe</string> <string name="generate_bug_report">Vygenerujte hlásenie o chybe</string>
<string name="troubleshooting">Riešenie problémov</string> <string name="troubleshooting">Riešenie problémov</string>
<string name="help_translate">Pomôžte preložiť túto aplikáciu</string> <string name="help_translate">Pomôžte preložiť túto aplikáciu</string>
<string name="night_mode" comment="dark_theme">Tmavá téma</string> <string name="night_mode">Tmavá téma</string>
<string name="use_pure_black">Použite čisto čiernu farbu v tmavej téme</string> <string name="use_pure_black">Použite čisto čiernu farbu v tmavej téme</string>
<string name="pure_black_description">Nahrádza sivé pozadie čisto čiernym v tmavej téme. Znižuje spotrebu batérie v telefónoch s displejom AMOLED.</string> <string name="pure_black_description">Nahrádza sivé pozadie čisto čiernym v tmavej téme. Znižuje spotrebu batérie v telefónoch s displejom AMOLED.</string>
<string name="interface_preferences">Rozhranie</string> <string name="interface_preferences">Rozhranie</string>
@@ -138,9 +144,9 @@
<string name="by_name">Podľa názvu</string> <string name="by_name">Podľa názvu</string>
<string name="by_color">Podľa farby</string> <string name="by_color">Podľa farby</string>
<string name="by_score">Podľa skóre</string> <string name="by_score">Podľa skóre</string>
<string name="by_status">Podľa stavu</string>
<string name="export">Exportovať</string> <string name="export">Exportovať</string>
<string name="long_press_to_edit">Stlačením a podržaním zmeníte hodnotu</string> <string name="long_press_to_edit">Stlačením a podržaním zmeníte hodnotu</string>
<string name="change_value">Zmeniť hodnotu</string>
<string name="calendar">Kalendár</string> <string name="calendar">Kalendár</string>
<string name="unit">Jednotka</string> <string name="unit">Jednotka</string>
<string name="example_question_boolean">napr. Cvičili ste dnes?</string> <string name="example_question_boolean">napr. Cvičili ste dnes?</string>
@@ -161,15 +167,28 @@
<string name="example_notes">(voliteľné)</string> <string name="example_notes">(voliteľné)</string>
<string name="yes_or_no_example">napr. Zobudili ste sa dnes skoro? Cvičili ste? Hrali ste šach?</string> <string name="yes_or_no_example">napr. Zobudili ste sa dnes skoro? Cvičili ste? Hrali ste šach?</string>
<string name="measurable">Merateľné</string> <string name="measurable">Merateľné</string>
<string name="measurable_example">napr. Koľko kilometrov ste dnes nabehali? Koľko strán ste prečítali?</string>
<string name="x_times_per_week">%d krát týždenne</string> <string name="x_times_per_week">%d krát týždenne</string>
<string name="x_times_per_month">%d krát za mesiac</string> <string name="x_times_per_month">%d krát za mesiac</string>
<string name="yes_or_no_short_example">napr. Cvičenie</string> <string name="yes_or_no_short_example">napr. Cvičenie</string>
<string name="color">Farba</string> <string name="color">Farba</string>
<string name="example_target">napr. 15</string> <string name="example_target">napr. 15</string>
<string name="measurable_short_example">napr. Beh</string> <string name="measurable_short_example">napr. Beh</string>
<string name="measurable_question_example">napr. Koľko míľ ste dnes prešli?</string> <string name="measurable_question_example">napr. Koľko kilometrov ste dnes prešli?</string>
<string name="measurable_units_example">napr. míle</string> <string name="measurable_units_example">napr. kilometre</string>
<string name="every_month">Každý mesiac</string> <string name="every_month">Každý mesiac</string>
<string name="validation_cannot_be_blank">Nemôže byť prázdne</string> <string name="validation_cannot_be_blank">Nemôže byť prázdne</string>
<string name="today">Dnes</string> <string name="today">Dnes</string>
<string name="enter">Zadať</string>
<string name="no_habits">Nenašli sa žiadne návyky</string>
<string name="no_numerical_habits">Nenašli sa žiadne merateľné návyky</string>
<string name="no_boolean_habits">Nenašli sa žiadne áno-alebo-nie návyky</string>
<string name="pref_skip_title">Povoliť preskočenie dní</string>
<string name="pref_skip_description">Dvojitým prepnutím pridáte namiesto začiarknutia preskočenie. Preskočenia udržia vaše skóre nezmenené a neprerušia vašu sériu.</string>
<string name="pref_unknown_title">Zobraziť otázniky pre chýbajúce údaje</string>
<string name="pref_unknown_description">Odlíšte dni bez údajov od skutočných prerušení. Ak chcete zadať prerušenie, dvakrát prepnite.</string>
<string name="you_are_now_a_developer">Teraz ste vývojár</string>
<string name="activity_not_found">Nenašla sa žiadna aplikácia podporujúca túto akciu</string>
<string name="pref_midnight_delay_title">Predĺžte deň o niekoľko hodín po polnoci</string>
<string name="pref_midnight_delay_description">Na zobrazenie nového dňa počkajte do 3:00. Užitočné, ak zvyčajne chodíte spať po polnoci. Vyžaduje reštart aplikácie.</string>
</resources> </resources>

View File

@@ -56,7 +56,6 @@
<string name="interval_8_hour">8 ur</string> <string name="interval_8_hour">8 ur</string>
<string name="interval_24_hour">24 ur</string> <string name="interval_24_hour">24 ur</string>
<string name="pref_toggle_title">Preklopi ponovitve s kratkim pritiskom</string> <string name="pref_toggle_title">Preklopi ponovitve s kratkim pritiskom</string>
<string name="pref_toggle_description">Bolj priročno ampak lahko povzroči nenamerne preklapljanje.</string>
<string name="pref_rate_this_app">Oceni to aplikacijo na Google Play</string> <string name="pref_rate_this_app">Oceni to aplikacijo na Google Play</string>
<string name="pref_send_feedback">Pošlji povratne informacije razvijalcem</string> <string name="pref_send_feedback">Pošlji povratne informacije razvijalcem</string>
<string name="pref_view_source_code">Poglej izvorno kodo na GitHub</string> <string name="pref_view_source_code">Poglej izvorno kodo na GitHub</string>
@@ -99,7 +98,7 @@
<string name="generate_bug_report">Ustvari poročilo o napakah</string> <string name="generate_bug_report">Ustvari poročilo o napakah</string>
<string name="troubleshooting">Odpravljanje napak</string> <string name="troubleshooting">Odpravljanje napak</string>
<string name="help_translate">Pomagajte prevesti to aplikacijo</string> <string name="help_translate">Pomagajte prevesti to aplikacijo</string>
<string name="night_mode" comment="dark_theme">Nočni način</string> <string name="night_mode">Nočni način</string>
<string name="use_pure_black">Uporabite popolno črnino v nočnem načinu</string> <string name="use_pure_black">Uporabite popolno črnino v nočnem načinu</string>
<string name="pure_black_description">Zamenja siva ozadja s popolno črnino v nočnem načinu. Zmanjša porabo baterije na telefonih z AMOLED zasloni.</string> <string name="pure_black_description">Zamenja siva ozadja s popolno črnino v nočnem načinu. Zmanjša porabo baterije na telefonih z AMOLED zasloni.</string>
<string name="interface_preferences">Vmesnik</string> <string name="interface_preferences">Vmesnik</string>
@@ -133,4 +132,5 @@
<string name="by_color">Po barvi</string> <string name="by_color">Po barvi</string>
<string name="by_score">Po rezultatu</string> <string name="by_score">Po rezultatu</string>
<string name="export">Izvozi</string> <string name="export">Izvozi</string>
<string name="x_times_per_y_days">%d krat v %d dni</string>
</resources> </resources>

View File

@@ -79,7 +79,6 @@
<string name="interval_always_ask">Uvek pitaj</string> <string name="interval_always_ask">Uvek pitaj</string>
<string name="interval_custom">Prilagođeno...</string> <string name="interval_custom">Prilagođeno...</string>
<string name="pref_toggle_title">Menjaj stanje dodirom</string> <string name="pref_toggle_title">Menjaj stanje dodirom</string>
<string name="pref_toggle_description">Stavlja kvačice dodirom umesto dugog pritiska. Zgodnije, ali može slučajno doći do prebacivanja.</string>
<string name="pref_rate_this_app">Oceni aplikaciju</string> <string name="pref_rate_this_app">Oceni aplikaciju</string>
<string name="pref_send_feedback">Povratne informacije</string> <string name="pref_send_feedback">Povratne informacije</string>
<string name="pref_view_source_code">Izvorni kôd na Githabu</string> <string name="pref_view_source_code">Izvorni kôd na Githabu</string>
@@ -133,7 +132,7 @@
<string name="generate_bug_report">Napravi izveštaj o grešci</string> <string name="generate_bug_report">Napravi izveštaj o grešci</string>
<string name="troubleshooting">Rešavanje problema</string> <string name="troubleshooting">Rešavanje problema</string>
<string name="help_translate">Pomozite prevođenje</string> <string name="help_translate">Pomozite prevođenje</string>
<string name="night_mode" comment="dark_theme">Tamna tema</string> <string name="night_mode">Tamna tema</string>
<string name="use_pure_black">Čista crna u tamnoj temi</string> <string name="use_pure_black">Čista crna u tamnoj temi</string>
<string name="pure_black_description">Menja sivu pozadinu sa čistom crnom u tamnoj temi. Smanjuje potrošnju baterije kod telefona sa AMOLED ekranom.</string> <string name="pure_black_description">Menja sivu pozadinu sa čistom crnom u tamnoj temi. Smanjuje potrošnju baterije kod telefona sa AMOLED ekranom.</string>
<string name="interface_preferences">Sučelje</string> <string name="interface_preferences">Sučelje</string>
@@ -172,7 +171,6 @@
<string name="by_status">po stanju</string> <string name="by_status">po stanju</string>
<string name="export">Izvoz</string> <string name="export">Izvoz</string>
<string name="long_press_to_edit">Dug pritisak za promenu vrednosti</string> <string name="long_press_to_edit">Dug pritisak za promenu vrednosti</string>
<string name="change_value">Izmeni vrednost</string>
<string name="calendar">Kalendar</string> <string name="calendar">Kalendar</string>
<string name="unit">Jedinica</string> <string name="unit">Jedinica</string>
<string name="example_question_boolean">npr. Da li ste vežbali danas?</string> <string name="example_question_boolean">npr. Da li ste vežbali danas?</string>

View File

@@ -79,7 +79,6 @@
<string name="interval_always_ask">Увек питај</string> <string name="interval_always_ask">Увек питај</string>
<string name="interval_custom">Прилагођено...</string> <string name="interval_custom">Прилагођено...</string>
<string name="pref_toggle_title">Мењај стање додиром</string> <string name="pref_toggle_title">Мењај стање додиром</string>
<string name="pref_toggle_description">Ставља квачице додиром уместо дугог притиска. Згодније, али може случајно доћи до пребацивања.</string>
<string name="pref_rate_this_app">Оцени апликацију</string> <string name="pref_rate_this_app">Оцени апликацију</string>
<string name="pref_send_feedback">Повратне информације</string> <string name="pref_send_feedback">Повратне информације</string>
<string name="pref_view_source_code">Изворни кôд на Гитхабу</string> <string name="pref_view_source_code">Изворни кôд на Гитхабу</string>
@@ -133,7 +132,7 @@
<string name="generate_bug_report">Направи извештај о грешци</string> <string name="generate_bug_report">Направи извештај о грешци</string>
<string name="troubleshooting">Решавање проблема</string> <string name="troubleshooting">Решавање проблема</string>
<string name="help_translate">Помозите превођење</string> <string name="help_translate">Помозите превођење</string>
<string name="night_mode" comment="dark_theme">Тамна тема</string> <string name="night_mode">Тамна тема</string>
<string name="use_pure_black">Чиста црна у тамној теми</string> <string name="use_pure_black">Чиста црна у тамној теми</string>
<string name="pure_black_description">Мења сиву позадину са чистом црном у тамној теми. Смањује потрошњу батерије код телефона са АМОЛЕД екраном.</string> <string name="pure_black_description">Мења сиву позадину са чистом црном у тамној теми. Смањује потрошњу батерије код телефона са АМОЛЕД екраном.</string>
<string name="interface_preferences">Сучеље</string> <string name="interface_preferences">Сучеље</string>
@@ -172,7 +171,6 @@
<string name="by_status">по стању</string> <string name="by_status">по стању</string>
<string name="export">Извоз</string> <string name="export">Извоз</string>
<string name="long_press_to_edit">Дуг притисак за промену вредности</string> <string name="long_press_to_edit">Дуг притисак за промену вредности</string>
<string name="change_value">Измени вредност</string>
<string name="calendar">Календар</string> <string name="calendar">Календар</string>
<string name="unit">Јединица</string> <string name="unit">Јединица</string>
<string name="example_question_boolean">нпр. Да ли сте вежбали данас?</string> <string name="example_question_boolean">нпр. Да ли сте вежбали данас?</string>
@@ -196,6 +194,7 @@
<string name="measurable_example">нпр. Колико сте километара претрчали данас? Колико сте страница прочитали?</string> <string name="measurable_example">нпр. Колико сте километара претрчали данас? Колико сте страница прочитали?</string>
<string name="x_times_per_week">%d пута недељно</string> <string name="x_times_per_week">%d пута недељно</string>
<string name="x_times_per_month">%d пута месечно</string> <string name="x_times_per_month">%d пута месечно</string>
<string name="x_times_per_y_days">%d пута у %d дана</string>
<string name="yes_or_no_short_example">нпр. вежбање</string> <string name="yes_or_no_short_example">нпр. вежбање</string>
<string name="color">Боја</string> <string name="color">Боја</string>
<string name="example_target">нпр. 15</string> <string name="example_target">нпр. 15</string>

View File

@@ -75,7 +75,6 @@
<string name="interval_always_ask">Fråga alltid</string> <string name="interval_always_ask">Fråga alltid</string>
<string name="interval_custom">Anpassad...</string> <string name="interval_custom">Anpassad...</string>
<string name="pref_toggle_title">Växla med snabb tryckning</string> <string name="pref_toggle_title">Växla med snabb tryckning</string>
<string name="pref_toggle_description">Markera genom att trycka snabbt istället för att hålla ner. Mer bekvämt, men kan orsaka oavsiktliga aktiveringar.</string>
<string name="pref_rate_this_app">Betygsätt oss på Google Play</string> <string name="pref_rate_this_app">Betygsätt oss på Google Play</string>
<string name="pref_send_feedback">Skicka feedback till utvecklarna</string> <string name="pref_send_feedback">Skicka feedback till utvecklarna</string>
<string name="pref_view_source_code">Visa källkod på GitHub</string> <string name="pref_view_source_code">Visa källkod på GitHub</string>
@@ -136,7 +135,7 @@
<string name="generate_bug_report">Generera felrapport</string> <string name="generate_bug_report">Generera felrapport</string>
<string name="troubleshooting">Felsökning</string> <string name="troubleshooting">Felsökning</string>
<string name="help_translate">Hjälp till att översätta appen</string> <string name="help_translate">Hjälp till att översätta appen</string>
<string name="night_mode" comment="dark_theme">Nattläge</string> <string name="night_mode">Nattläge</string>
<string name="use_pure_black">Använd svart färg i nattläge</string> <string name="use_pure_black">Använd svart färg i nattläge</string>
<string name="pure_black_description">Ersätter gråa bakgrunder med svart färg i nattläge. Reducerar batterianvändningen för telefoner med AMOLED-skärm.</string> <string name="pure_black_description">Ersätter gråa bakgrunder med svart färg i nattläge. Reducerar batterianvändningen för telefoner med AMOLED-skärm.</string>
<string name="interface_preferences">Gränssnitt</string> <string name="interface_preferences">Gränssnitt</string>
@@ -175,7 +174,6 @@
<string name="by_status">Efter status</string> <string name="by_status">Efter status</string>
<string name="export">Exportera</string> <string name="export">Exportera</string>
<string name="long_press_to_edit">Tryck och håll ned för att ändra värdet</string> <string name="long_press_to_edit">Tryck och håll ned för att ändra värdet</string>
<string name="change_value">Ändra värde</string>
<string name="calendar">Kalender</string> <string name="calendar">Kalender</string>
<string name="unit">Enhet</string> <string name="unit">Enhet</string>
<string name="example_question_boolean">t.ex. Tränade du idag?</string> <string name="example_question_boolean">t.ex. Tränade du idag?</string>
@@ -199,6 +197,7 @@
<string name="measurable_example">t.ex. Hur många kilometer sprang du idag? Hur många sidor läste du?</string> <string name="measurable_example">t.ex. Hur många kilometer sprang du idag? Hur många sidor läste du?</string>
<string name="x_times_per_week">%d gånger per vecka</string> <string name="x_times_per_week">%d gånger per vecka</string>
<string name="x_times_per_month">%d gånger per månad</string> <string name="x_times_per_month">%d gånger per månad</string>
<string name="x_times_per_y_days">%d gånger i %d dagar</string>
<string name="yes_or_no_short_example">t.ex. Träna</string> <string name="yes_or_no_short_example">t.ex. Träna</string>
<string name="color">Färg</string> <string name="color">Färg</string>
<string name="example_target">t.ex. 15</string> <string name="example_target">t.ex. 15</string>

View File

@@ -57,7 +57,6 @@
<string name="interval_24_hour">24 மணி நேரம்</string> <string name="interval_24_hour">24 மணி நேரம்</string>
<string name="interval_always_ask">எப்போதும் கேள்</string> <string name="interval_always_ask">எப்போதும் கேள்</string>
<string name="pref_toggle_title">சிறிய அழுத்தலின் மூலம் தாவு</string> <string name="pref_toggle_title">சிறிய அழுத்தலின் மூலம் தாவு</string>
<string name="pref_toggle_description">சரிப் பார்ப்பு குறி யை இட அழுத்தி பிடிப்பதற்கு பதில் ஒரு முறை தட்டலாம். இது முன்னதை விட எளிமையானது. ஆனால் இது தற்செயலான தாவல்களுக்கு வழி வகுக்கும்.</string>
<string name="pref_rate_this_app">Google Play-ல் இந்த செயலியை மதிப்பிட</string> <string name="pref_rate_this_app">Google Play-ல் இந்த செயலியை மதிப்பிட</string>
<string name="pref_send_feedback">இந்த செயலியை மேம்படுத்த உங்கள் கருத்துகளை பகிர</string> <string name="pref_send_feedback">இந்த செயலியை மேம்படுத்த உங்கள் கருத்துகளை பகிர</string>
<string name="pref_view_source_code">இந்த செயலியின் மூல நிரலை GitHub வலைதளத்தில் பார்க்கவும்</string> <string name="pref_view_source_code">இந்த செயலியின் மூல நிரலை GitHub வலைதளத்தில் பார்க்கவும்</string>
@@ -100,7 +99,7 @@
<string name="generate_bug_report">பிழை அறிக்கை உருவாக்கு</string> <string name="generate_bug_report">பிழை அறிக்கை உருவாக்கு</string>
<string name="troubleshooting">பழுது இடமறிதல்</string> <string name="troubleshooting">பழுது இடமறிதல்</string>
<string name="help_translate">இந்த செயலியை மற்ற மொழிகளில் மொழிபெயர்க்க உதவி செய்யவும்</string> <string name="help_translate">இந்த செயலியை மற்ற மொழிகளில் மொழிபெயர்க்க உதவி செய்யவும்</string>
<string name="night_mode" comment="dark_theme">இருள் வண்ண பாங்கு</string> <string name="night_mode">இருள் வண்ண பாங்கு</string>
<string name="use_pure_black">இருள் பாங்கில் முழு கருப்பு நிறத்தை பயண்படுத்து</string> <string name="use_pure_black">இருள் பாங்கில் முழு கருப்பு நிறத்தை பயண்படுத்து</string>
<string name="pure_black_description">இதன் மூலம் செயலியில் உள்ள பழுப்பு பின்புலங்கள் நீக்கப்பட்டு முழுவதும் கருப்பு நிற பின்புலங்களாக மாற்றப்படும். இது AMOLED திரை கொண்ட கைப்பேசிகளில் மின்கல பயன்பாட்டை குறைக்கும்.</string> <string name="pure_black_description">இதன் மூலம் செயலியில் உள்ள பழுப்பு பின்புலங்கள் நீக்கப்பட்டு முழுவதும் கருப்பு நிற பின்புலங்களாக மாற்றப்படும். இது AMOLED திரை கொண்ட கைப்பேசிகளில் மின்கல பயன்பாட்டை குறைக்கும்.</string>
<string name="interface_preferences">இடைமுகம்</string> <string name="interface_preferences">இடைமுகம்</string>
@@ -135,4 +134,5 @@
<string name="by_color">நிறத்தின் மூலம்</string> <string name="by_color">நிறத்தின் மூலம்</string>
<string name="by_score">மதிப்பெண்களின் மூலம்</string> <string name="by_score">மதிப்பெண்களின் மூலம்</string>
<string name="export">ஏற்றுமதி</string> <string name="export">ஏற்றுமதி</string>
<string name="x_times_per_y_days">%d காலங்களில் %d நாட்கள்</string>
</resources> </resources>

View File

@@ -18,6 +18,7 @@
~ with this program. If not, see <http://www.gnu.org/licenses/>. ~ with this program. If not, see <http://www.gnu.org/licenses/>.
--> -->
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation"> <resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
<string name="app_name">Datasheet </string>
<string name="main_activity_title">అలవాట్లు</string> <string name="main_activity_title">అలవాట్లు</string>
<string name="action_settings">సెట్టింగులు</string> <string name="action_settings">సెట్టింగులు</string>
<string name="edit">మార్చు</string> <string name="edit">మార్చు</string>

View File

@@ -18,7 +18,7 @@
~ with this program. If not, see <http://www.gnu.org/licenses/>. ~ with this program. If not, see <http://www.gnu.org/licenses/>.
--> -->
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation"> <resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
<string name="app_name">Loop Alışkanlık Takibi</string> <string name="app_name">Loop - Alışkanlık Takip Uygulaması</string>
<string name="main_activity_title">Alışkanlıklar</string> <string name="main_activity_title">Alışkanlıklar</string>
<string name="action_settings">Ayarlar</string> <string name="action_settings">Ayarlar</string>
<string name="edit">Düzenle</string> <string name="edit">Düzenle</string>
@@ -52,18 +52,19 @@
<string name="save">Kaydet</string> <string name="save">Kaydet</string>
<string name="streaks">Seriler</string> <string name="streaks">Seriler</string>
<string name="no_habits_found">Etkin alışkanlığın yok</string> <string name="no_habits_found">Etkin alışkanlığın yok</string>
<string name="no_habits_left_to_do">Bugünlük bu kadar!</string>
<string name="long_press_to_toggle">İşaretlemek veya işareti kaldırmak için basılı tut</string> <string name="long_press_to_toggle">İşaretlemek veya işareti kaldırmak için basılı tut</string>
<string name="reminder_off">Kapalı</string> <string name="reminder_off">Kapalı</string>
<string name="create_habit">Alışkanlık oluştur</string> <string name="create_habit">Alışkanlık oluştur</string>
<string name="edit_habit">Alışkanlık düzenle</string> <string name="edit_habit">Alışkanlığı düzenle</string>
<string name="check">İşaretle</string> <string name="check">İşaretle</string>
<string name="snooze">Sonra</string> <string name="snooze">Sonra</string>
<string name="intro_title_1">Hoşgeldin</string> <string name="intro_title_1">Hoşgeldin</string>
<string name="intro_description_1">Loop Alışkanlık Takibi, iyi alışkanlıklar edinmene ve sürdürmene yardımcı olur.</string> <string name="intro_description_1">Loop Alışkanlık Takibi, iyi alışkanlıklar edinmene ve sürdürmene yardımcı olur.</string>
<string name="intro_title_2">Yeni alışkanlıklar oluşturun</string> <string name="intro_title_2">Yeni alışkanlıklar oluştur</string>
<string name="intro_description_2">Alışkanlığınızı gerçekleştirdikten sonra her gün uygulamada yapıldı işareti koyun.</string> <string name="intro_description_2">Alışkanlığın gerçekleştiği günleri işaretle.</string>
<string name="intro_title_4">Gelişimini izle</string> <string name="intro_title_4">Gelişimini takip et</string>
<string name="intro_description_4">Detaylı grafiklerle, zaman içinde alışkanlıklarının nasıl geliştiğini gör.</string> <string name="intro_description_4">Ayrıntılı tablolarla katettiğin ilerlemeyi gör.</string>
<string name="interval_15_minutes">15 dakika</string> <string name="interval_15_minutes">15 dakika</string>
<string name="interval_30_minutes">30 dakika</string> <string name="interval_30_minutes">30 dakika</string>
<string name="interval_1_hour">1 saat</string> <string name="interval_1_hour">1 saat</string>
@@ -73,29 +74,32 @@
<string name="interval_24_hour">24 saat</string> <string name="interval_24_hour">24 saat</string>
<string name="interval_always_ask">Her zaman sor</string> <string name="interval_always_ask">Her zaman sor</string>
<string name="interval_custom">Özel...</string> <string name="interval_custom">Özel...</string>
<string name="pref_toggle_title">Tek dokunuşla işaretle veya işareti kaldır</string> <string name="pref_toggle_title">Tek dokunuşla işaretle</string>
<string name="pref_toggle_description">Alışkanlıklarınızı, uzun dokunuş yerine tek dokunuşla işaretlemenizi sağlar. Kullanımı daha kolaydır ancak hatalı olarak işaretleme yapılmasına neden olabilir.</string>
<string name="pref_rate_this_app">Google Play\'de uygulamayı oyla</string> <string name="pref_rate_this_app">Google Play\'de uygulamayı oyla</string>
<string name="pref_send_feedback">Geliştiriciye geri bildirim gönder</string> <string name="pref_send_feedback">Geliştiriciye geri bildirim gönder</string>
<string name="pref_view_source_code">Github\'da kaynak kodunu gör</string> <string name="pref_view_source_code">Github\'da kaynak kodunu görüntüle</string>
<string name="links">Bağlantılar</string> <string name="links">Bağlantılar</string>
<string name="name">Ad</string> <string name="name">Alışkanlık ismi</string>
<string name="settings">Ayarlar</string> <string name="settings">Ayarlar</string>
<string name="select_snooze_delay">Erteleme süresini ayarla</string> <string name="select_snooze_delay">Erteleme süresini ayarla</string>
<string name="hint_title">Biliyor muydun?</string> <string name="hint_title">Biliyor muydun?</string>
<string name="hint_drag">Girdileri sıralamak için, alışkanlık adının üstüne basılı tut ve doğru yere sürükle.</string> <string name="hint_drag">Girdileri sıralamak için, alışkanlık adının üstüne basılı tut ve doğru yere sürükle.</string>
<string name="hint_landscape">Cihazınızı yatay tutarak daha fazla gün görüntüleyebilirsiniz.</string> <string name="hint_landscape">Daha fazla gün görüntülemek için cihazını yatay tut.</string>
<plurals name="delete_habits_title"> <plurals name="delete_habits_title">
<item quantity="one">Alışkanlık silinsin mi?</item> <item quantity="one">Alışkanlık silinsin mi?</item>
<item quantity="other">Alışkanlıklar silinsin mi?</item> <item quantity="other">Alışkanlıklar silinsin mi?</item>
</plurals> </plurals>
<plurals name="delete_habits_message">
<item quantity="one">Alışkanlık kalıcı olarak silinecek. Bu işlem geri alınamaz.</item>
<item quantity="other">Alışkanlıklar kalıcı olarak silinecek. Bu işlem geri alınamaz.</item>
</plurals>
<string name="habit_not_found">Alışkanlık silinmiş ya da bulunamadı</string> <string name="habit_not_found">Alışkanlık silinmiş ya da bulunamadı</string>
<string name="weekends">Hafta sonları</string> <string name="weekends">Hafta sonları</string>
<string name="any_weekday">Pazartesinden Cumaya</string> <string name="any_weekday">Pazartesinden Cumaya</string>
<string name="any_day">Haftanın herhangi bir günü</string> <string name="any_day">Haftanın herhangi bir günü</string>
<string name="select_weekdays">Günleri seç</string> <string name="select_weekdays">Günleri seç</string>
<string name="export_to_csv">CSV olarak dışa aktar</string> <string name="export_to_csv">CSV olarak dışa aktar</string>
<string name="done_label">Tamam</string> <string name="done_label">Seç</string>
<string name="clear_label">Temizle</string> <string name="clear_label">Temizle</string>
<string name="select_hours">Saat seç</string> <string name="select_hours">Saat seç</string>
<string name="select_minutes">Dakika seç</string> <string name="select_minutes">Dakika seç</string>
@@ -115,14 +119,14 @@
<string name="habits_imported">Alışkanlıklar başarıyla içeri aktarıldı.</string> <string name="habits_imported">Alışkanlıklar başarıyla içeri aktarıldı.</string>
<string name="import_data">İçeri veri aktar</string> <string name="import_data">İçeri veri aktar</string>
<string name="export_full_backup">Tüm yedeği dışarı aktar</string> <string name="export_full_backup">Tüm yedeği dışarı aktar</string>
<string name="import_data_summary">Hem bu uygulama tarafından dışarı aktarılmış tam yedekleri, hem de Tickmate, HabitBull veya Rewire tarafından üretilmiş dosyaları destekler. Daha fazla bilgi için SSS\'a başvurun.</string> <string name="import_data_summary">Loop tarafından oluşturulan yedeklemelerin yanı sıra Tickmate, HabitBull veya Rewire tarafından oluşturulan yedeklemeler da desteklenir. Detaylı bilgi için SSS bölümüne bak.</string>
<string name="export_as_csv_summary">Üretilen dosyalar, Microsoft Excel veya OpenOffice Calc. gibi hesap taplosu uygulamaları ile açılabilir. Bu dosya yeniden içeri aktarılamaz.</string> <string name="export_as_csv_summary">Microsoft Excel veya OpenOffice Calc. tarafından açılabilen bir dosya oluşturur. Bu dosya tekrar içeri aktarılamaz.</string>
<string name="export_full_backup_summary">Tüm verilerini içeren bir dosya üretir. Bu dosya yeniden içeri aktarılabilir.</string> <string name="export_full_backup_summary">Tüm verilerini içeren bir dosya oluştur. Bu dosya tekrar içeri aktarılabilir.</string>
<string name="bug_report_failed">Hata raporu oluşturulamadı.</string> <string name="bug_report_failed">Hata raporu oluşturulamadı.</string>
<string name="generate_bug_report">Hata raporu oluştur</string> <string name="generate_bug_report">Hata raporu oluştur</string>
<string name="troubleshooting">Sorun Giderme</string> <string name="troubleshooting">Sorun Giderme</string>
<string name="help_translate">Bu uygulamanın çevirisine yardım et</string> <string name="help_translate">Bu uygulamanın çevirisinde yardım et</string>
<string name="night_mode" comment="dark_theme">Gece modu</string> <string name="night_mode">Gece modu</string>
<string name="use_pure_black">Gece modunda saf siyah kullan</string> <string name="use_pure_black">Gece modunda saf siyah kullan</string>
<string name="pure_black_description">Gece modunda gri arkaplanı saf siyah ile değiştirir. AMOLED ekranlı cihazlarda pil kullanımını azaltır.</string> <string name="pure_black_description">Gece modunda gri arkaplanı saf siyah ile değiştirir. AMOLED ekranlı cihazlarda pil kullanımını azaltır.</string>
<string name="interface_preferences">Arayüz</string> <string name="interface_preferences">Arayüz</string>
@@ -144,9 +148,9 @@
<string name="hide_completed">Tamamlananları gizle</string> <string name="hide_completed">Tamamlananları gizle</string>
<string name="hide_archived">Arşivlenenleri gizle</string> <string name="hide_archived">Arşivlenenleri gizle</string>
<string name="sticky_notifications">Bildirimleri kalıcı yap</string> <string name="sticky_notifications">Bildirimleri kalıcı yap</string>
<string name="sticky_notifications_description">Bildirimlerin kaydırılarak temizlenmesini engelle.</string> <string name="sticky_notifications_description">Bildirimlerin kaydırılmasını engeller.</string>
<string name="led_notifications">Bildirim ışığı</string> <string name="led_notifications">Bildirim ışığı</string>
<string name="led_notifications_description">Hatırlatıcılar için yanıp sönen bir ışık gösterir. Yalnızca LED bildirim ışıklarına sahip telefonlarda mevcuttur.</string> <string name="led_notifications_description">Hatırlatıcılar için yanıp sönen bir ışık gösterir. Yalnızca LED bildirim ışığı olan telefonlarda kullanılabilir.</string>
<string name="repair_database">Veritabanını onar</string> <string name="repair_database">Veritabanını onar</string>
<string name="database_repaired">Veritabanı onarıldı.</string> <string name="database_repaired">Veritabanı onarıldı.</string>
<string name="uncheck">İşareti kaldır</string> <string name="uncheck">İşareti kaldır</string>
@@ -158,38 +162,54 @@
<string name="by_name">Ada göre</string> <string name="by_name">Ada göre</string>
<string name="by_color">Renge göre</string> <string name="by_color">Renge göre</string>
<string name="by_score">Puana göre</string> <string name="by_score">Puana göre</string>
<string name="by_status">Duruma göre</string>
<string name="export">Dışarı aktar</string> <string name="export">Dışarı aktar</string>
<string name="long_press_to_edit">Değeri değiştirmek için basılı tutun</string> <string name="long_press_to_edit">Değeri değiştirmek için basılı tut</string>
<string name="change_value">Değeri değiştir</string>
<string name="calendar">Takvim</string> <string name="calendar">Takvim</string>
<string name="unit">Birim</string> <string name="unit">Birim</string>
<string name="example_question_boolean">Örneğin, Bugün spor yaptım mı?</string> <string name="example_question_boolean">örn: Bugün egzersiz yaptın mı?</string>
<string name="question">Soru</string> <string name="question">Soru</string>
<string name="target">Hedef</string> <string name="target">Hedef</string>
<string name="yes">Evet</string> <string name="yes">Evet</string>
<string name="no">Hayır</string> <string name="no">Hayır</string>
<string name="customize_notification_summary">Ses, titreşim, ışık ve diğer bildirim ayarlarını değiştirin</string> <string name="customize_notification_summary">Ses, titreşim, ışık ve diğer bildirim ayarlarını değiştir</string>
<string name="customize_notification">Bildirimleri özelleştir</string> <string name="customize_notification">Bildirimleri özelleştir</string>
<string name="pref_view_privacy">Gizlilik politikasını görüntüleyin</string> <string name="pref_view_privacy">Gizlilik politikasını görüntüle</string>
<string name="view_all_contributors">Tüm katkıda bulunanları görüntüle&#8230;</string> <string name="view_all_contributors">Katkıda bulunanları görüntüle&#8230;</string>
<string name="database">Veritabanı</string> <string name="database">Veritabanı</string>
<string name="widget_opacity_title">Widget saydamlığı</string> <string name="widget_opacity_title">Widget saydamlığı</string>
<string name="widget_opacity_description">Ana ekranınızda widget\'ları daha saydam veya daha opak hale getirir.</string> <string name="widget_opacity_description">Ana ekrandaki widget\'ları daha saydam veya daha opak hâle getir.</string>
<string name="first_day_of_the_week">Haftanın ilk günü</string> <string name="first_day_of_the_week">Haftanın ilk günü</string>
<string name="default_reminder_question">Bu alışkanlığı bugün tamamladın mı?</string> <string name="default_reminder_question">Bugün bu alışkanlığı tamamladın mı?</string>
<string name="notes">Notlar</string> <string name="notes">Notlar</string>
<string name="example_notes">(Tercihe bağlı)</string> <string name="example_notes">(isteğe bağlı)</string>
<string name="yes_or_no_example">Örneğin, Bugün erken uyandın mı? Spor yaptın mı? Satranç oynadın mı?</string> <string name="yes_or_no_example">örn: Bugün erken kalktın mı? Egzersiz yaptın mı? Satranç oynadın mı?</string>
<string name="measurable">Ölçülebilir</string> <string name="measurable">Ölçülebilir</string>
<string name="measurable_example">örn: Bugün kaç km koştun? Bugün kaç sayfa kitap okudun?</string>
<string name="x_times_per_week">Haftada %d kez</string> <string name="x_times_per_week">Haftada %d kez</string>
<string name="x_times_per_month">Ayda %d kez</string> <string name="x_times_per_month">Ayda %d kez</string>
<string name="yes_or_no_short_example">Örneğin, Spor</string> <string name="x_times_per_y_days">%d defa / %d gün</string>
<string name="yes_or_no_short_example">örn: Egzersiz</string>
<string name="color">Renk</string> <string name="color">Renk</string>
<string name="example_target">Ör. 15</string> <string name="example_target">örn: 15</string>
<string name="measurable_short_example">Örneğin, Koşu</string> <string name="measurable_short_example">örn: Kitap</string>
<string name="measurable_question_example">Örneğin, Bugün kaç km. koştunuz?</string> <string name="measurable_question_example">örn: Bugün kaç sayfa kitap okudun?</string>
<string name="measurable_units_example">Örneğin, Km.</string> <string name="measurable_units_example">örn: Sayfa</string>
<string name="every_month">Her ay</string> <string name="every_month">Her ay</string>
<string name="validation_cannot_be_blank">Boş bırakılamaz</string> <string name="validation_cannot_be_blank">Boş bırakılamaz</string>
<string name="today">Bugün</string> <string name="today">Bugün</string>
<string name="enter">Değer gir</string>
<string name="no_habits">Alışkanlık bulunamadı</string>
<string name="no_numerical_habits">Ölçülebilir alışkanlık bulunamadı</string>
<string name="no_boolean_habits">İşaretlemeli alışkanlık bulunamadı</string>
<string name="increment">Artış</string>
<string name="decrement">Azalma</string>
<string name="pref_skip_title">Gün atlama özelliğini etkinleştir</string>
<string name="pref_skip_description">Gün atlamak için ikinci kez işaretleme yapın. Atlanmış günler puanınızı etkilemez ve serinizi bozmaz.</string>
<string name="pref_unknown_title">Eksik verileri soru işaretiyle göster</string>
<string name="pref_unknown_description">Eksik verilerle boş günleri ayırt etmenizde yardımcı olur. Boş gün girmek için iki kere işaretleme yapın.</string>
<string name="you_are_now_a_developer">Artık bir geliştiricisin</string>
<string name="activity_not_found">Bu işlemi gerçekleştirebilecek bir uygulama bulunamadı.</string>
<string name="pref_midnight_delay_title">Yeni günü gece yarısından birkaç saat sonra başlat</string>
<string name="pref_midnight_delay_description">Yeni gün saat 03:00\'ten sonra başlar. Geç saatlerde uyuyanlar için kullanışlıdır. Uygulamanın yeniden başlatılmasını gerektirir.</string>
</resources> </resources>

View File

@@ -83,7 +83,6 @@
<string name="interval_always_ask">Завжди запитувати</string> <string name="interval_always_ask">Завжди запитувати</string>
<string name="interval_custom">Налаштувати...</string> <string name="interval_custom">Налаштувати...</string>
<string name="pref_toggle_title">Відзначати коротким натисканням</string> <string name="pref_toggle_title">Відзначати коротким натисканням</string>
<string name="pref_toggle_description">Ставити пташки коротким натисканням, замість утримування. Дещо зручніше, але може стати причиною випадкових натискань.</string>
<string name="pref_rate_this_app">Оцінити цю програму в Google Play</string> <string name="pref_rate_this_app">Оцінити цю програму в Google Play</string>
<string name="pref_send_feedback">Надіслати відгук розробникові</string> <string name="pref_send_feedback">Надіслати відгук розробникові</string>
<string name="pref_view_source_code">Подивитися вихідний код на GitHub</string> <string name="pref_view_source_code">Подивитися вихідний код на GitHub</string>
@@ -148,7 +147,7 @@
<string name="generate_bug_report">Створити звіт про помилку</string> <string name="generate_bug_report">Створити звіт про помилку</string>
<string name="troubleshooting">Усунення несправностей</string> <string name="troubleshooting">Усунення несправностей</string>
<string name="help_translate">Допоможіть перекласти цю програму</string> <string name="help_translate">Допоможіть перекласти цю програму</string>
<string name="night_mode" comment="dark_theme">Нічний режим</string> <string name="night_mode">Нічний режим</string>
<string name="use_pure_black">Користати цілком чорне тло у нічному режимі</string> <string name="use_pure_black">Користати цілком чорне тло у нічному режимі</string>
<string name="pure_black_description">Замінює сіре тло на цілком чорне у нічному режимі. Зменшує використання батареї в телефонах із дисплеєм AMOLED.</string> <string name="pure_black_description">Замінює сіре тло на цілком чорне у нічному режимі. Зменшує використання батареї в телефонах із дисплеєм AMOLED.</string>
<string name="interface_preferences">Оболонка</string> <string name="interface_preferences">Оболонка</string>
@@ -187,7 +186,7 @@
<string name="by_status">За станом</string> <string name="by_status">За станом</string>
<string name="export">Експортувати</string> <string name="export">Експортувати</string>
<string name="long_press_to_edit">Натисніть і утримуйте, аби змінити значення</string> <string name="long_press_to_edit">Натисніть і утримуйте, аби змінити значення</string>
<string name="change_value">Змінити значення</string> <string name="value">Значення</string>
<string name="calendar">Календар</string> <string name="calendar">Календар</string>
<string name="unit">Одиниця</string> <string name="unit">Одиниця</string>
<string name="example_question_boolean">напр.: Ви робили сьогодні вправи?</string> <string name="example_question_boolean">напр.: Ви робили сьогодні вправи?</string>
@@ -211,6 +210,7 @@
<string name="measurable_example">напр.: Скільки кілометрів ви сьогодні пробігли? Скільки сторінок прочитали?</string> <string name="measurable_example">напр.: Скільки кілометрів ви сьогодні пробігли? Скільки сторінок прочитали?</string>
<string name="x_times_per_week">%d разів на тиждень</string> <string name="x_times_per_week">%d разів на тиждень</string>
<string name="x_times_per_month">%d разів на місяць</string> <string name="x_times_per_month">%d разів на місяць</string>
<string name="x_times_per_y_days">%d разів за %d днів</string>
<string name="yes_or_no_short_example">напр., вправа</string> <string name="yes_or_no_short_example">напр., вправа</string>
<string name="color">Колір</string> <string name="color">Колір</string>
<string name="example_target">напр., 15</string> <string name="example_target">напр., 15</string>

View File

@@ -71,7 +71,7 @@
<string name="interval_always_ask">Luôn hỏi</string> <string name="interval_always_ask">Luôn hỏi</string>
<string name="interval_custom">Tùy chỉnh...</string> <string name="interval_custom">Tùy chỉnh...</string>
<string name="pref_toggle_title">Bấm nhanh để chuyển trạng thái</string> <string name="pref_toggle_title">Bấm nhanh để chuyển trạng thái</string>
<string name="pref_toggle_description">Chỉ cần chạm một lần để đánh dấu thay cho việc nhấn giữ. Tiện lợi hơn nhưng có thể đánh dấu sai.</string> <string name="pref_toggle_description_2">Đặt dấu kiểm bằng một lần nhấn thay vì nhấn và giữ.</string>
<string name="pref_rate_this_app">Đánh giá ứng dụng trên Google Play</string> <string name="pref_rate_this_app">Đánh giá ứng dụng trên Google Play</string>
<string name="pref_send_feedback">Gửi phản hồi cho nhà phát triển</string> <string name="pref_send_feedback">Gửi phản hồi cho nhà phát triển</string>
<string name="pref_view_source_code">Xem mã nguồn trên Github</string> <string name="pref_view_source_code">Xem mã nguồn trên Github</string>
@@ -121,7 +121,7 @@
<string name="generate_bug_report">Tạo báo cáo lỗi</string> <string name="generate_bug_report">Tạo báo cáo lỗi</string>
<string name="troubleshooting">Xử lí sự cố</string> <string name="troubleshooting">Xử lí sự cố</string>
<string name="help_translate">Giúp dịch ứng dụng</string> <string name="help_translate">Giúp dịch ứng dụng</string>
<string name="night_mode" comment="dark_theme">Chế độ ban đêm</string> <string name="night_mode">Chế độ ban đêm</string>
<string name="use_pure_black">Sử dụng màu đen thuần trong chế độ ban đêm</string> <string name="use_pure_black">Sử dụng màu đen thuần trong chế độ ban đêm</string>
<string name="pure_black_description">Thay thế nền màu xám bởi màu đen thuần trong chế độ ban đêm. Giảm thiểu việc sử dụng pin của điện thoại có màn hình AMOLED.</string> <string name="pure_black_description">Thay thế nền màu xám bởi màu đen thuần trong chế độ ban đêm. Giảm thiểu việc sử dụng pin của điện thoại có màn hình AMOLED.</string>
<string name="interface_preferences">Giao diện</string> <string name="interface_preferences">Giao diện</string>
@@ -141,6 +141,7 @@
<string name="none">Không có</string> <string name="none">Không có</string>
<string name="filter">Lọc</string> <string name="filter">Lọc</string>
<string name="hide_completed">Ẩn mục đã hoàn thành</string> <string name="hide_completed">Ẩn mục đã hoàn thành</string>
<string name="hide_entered">Ẩn đã nhập</string>
<string name="hide_archived">Ẩn mục đã lưu trữ</string> <string name="hide_archived">Ẩn mục đã lưu trữ</string>
<string name="sticky_notifications">Gửi thông báo cố định</string> <string name="sticky_notifications">Gửi thông báo cố định</string>
<string name="sticky_notifications_description">Không cho các thông báo bị vuốt ngang mất.</string> <string name="sticky_notifications_description">Không cho các thông báo bị vuốt ngang mất.</string>
@@ -160,9 +161,12 @@
<string name="by_status">Theo trạng thái</string> <string name="by_status">Theo trạng thái</string>
<string name="export">Xuất dữ liệu ra</string> <string name="export">Xuất dữ liệu ra</string>
<string name="long_press_to_edit">Nhấn và giữ để thay đổi giá trị</string> <string name="long_press_to_edit">Nhấn và giữ để thay đổi giá trị</string>
<string name="change_value">Thay đổi giá trị</string> <string name="value">Giá trị</string>
<string name="calendar">Lịch</string> <string name="calendar">Lịch</string>
<string name="unit">Đơn vị</string> <string name="unit">Đơn vị</string>
<string name="target_type">Loại mục tiêu</string>
<string name="target_type_at_least">Ít nhất</string>
<string name="target_type_at_most">Nhiều nhất</string>
<string name="example_question_boolean">v.d. Hôm nay bạn đã tập thể dục chưa?</string> <string name="example_question_boolean">v.d. Hôm nay bạn đã tập thể dục chưa?</string>
<string name="question">Câu hỏi</string> <string name="question">Câu hỏi</string>
<string name="target">Mục tiêu</string> <string name="target">Mục tiêu</string>
@@ -184,6 +188,7 @@
<string name="measurable_example">Ví dụ: Hôm nay bạn đã chạy bao nhiêu dặm? Bạn đã đọc bao nhiêu trang?</string> <string name="measurable_example">Ví dụ: Hôm nay bạn đã chạy bao nhiêu dặm? Bạn đã đọc bao nhiêu trang?</string>
<string name="x_times_per_week">%d lần mỗi tuần</string> <string name="x_times_per_week">%d lần mỗi tuần</string>
<string name="x_times_per_month">%d lần mỗi tháng</string> <string name="x_times_per_month">%d lần mỗi tháng</string>
<string name="x_times_per_y_days">%d lần trong %d ngày</string>
<string name="yes_or_no_short_example">Ví dụ: Tập thể dục</string> <string name="yes_or_no_short_example">Ví dụ: Tập thể dục</string>
<string name="color">Màu sắc</string> <string name="color">Màu sắc</string>
<string name="example_target">Ví dụ: 15</string> <string name="example_target">Ví dụ: 15</string>

View File

@@ -71,8 +71,8 @@
<string name="interval_always_ask">总是询问</string> <string name="interval_always_ask">总是询问</string>
<string name="interval_custom">自定义</string> <string name="interval_custom">自定义</string>
<string name="pref_toggle_title">短按切换</string> <string name="pref_toggle_title">短按切换</string>
<string name="pref_toggle_description">更加方便,但有可能造成意外记录</string> <string name="pref_toggle_description_2">只需轻按一下即可放置复选标记,而不是按住。</string>
<string name="pref_rate_this_app">去 Play 商店评价这个应用</string> <string name="pref_rate_this_app">去 Play 商店评价应用</string>
<string name="pref_send_feedback">发送反馈给开发者</string> <string name="pref_send_feedback">发送反馈给开发者</string>
<string name="pref_view_source_code">在 GitHub 上查看源代码</string> <string name="pref_view_source_code">在 GitHub 上查看源代码</string>
<string name="links">链接</string> <string name="links">链接</string>
@@ -120,14 +120,14 @@
<string name="bug_report_failed">错误报告生成失败</string> <string name="bug_report_failed">错误报告生成失败</string>
<string name="generate_bug_report">生成错误报告</string> <string name="generate_bug_report">生成错误报告</string>
<string name="troubleshooting">故障排除</string> <string name="troubleshooting">故障排除</string>
<string name="help_translate">帮助翻译这个应用</string> <string name="help_translate">帮助翻译应用</string>
<string name="night_mode" comment="dark_theme">深色主题</string> <string name="night_mode">深色主题</string>
<string name="use_pure_black">在深色主题中使用纯黑色</string> <string name="use_pure_black">在深色主题中使用纯黑色</string>
<string name="pure_black_description">以纯黑色背景代替深色主题中的灰色背景。 <string name="pure_black_description">以纯黑色背景代替深色主题中的灰色背景。
这可以降低 AMOLED 屏幕手机的耗电量。</string> 这可以降低 AMOLED 屏幕手机的耗电量。</string>
<string name="interface_preferences">界面</string> <string name="interface_preferences">界面</string>
<string name="reverse_days">反向顺序的日子</string> <string name="reverse_days">逆序显示日子</string>
<string name="reverse_days_description">在主界面显示反向顺序的日子</string> <string name="reverse_days_description">在主界面以相反的顺序显示日子</string>
<string name="day"></string> <string name="day"></string>
<string name="week"></string> <string name="week"></string>
<string name="month"></string> <string name="month"></string>
@@ -138,15 +138,16 @@
<string name="every_x_days">每 %d 天</string> <string name="every_x_days">每 %d 天</string>
<string name="every_x_weeks">每 %d 周</string> <string name="every_x_weeks">每 %d 周</string>
<string name="score">成绩</string> <string name="score">成绩</string>
<string name="reminder_sound">提醒</string> <string name="reminder_sound">提醒提示</string>
<string name="none"></string> <string name="none"></string>
<string name="filter">筛选</string> <string name="filter">筛选</string>
<string name="hide_completed">隐藏已完成</string> <string name="hide_completed">隐藏已完成</string>
<string name="hide_entered">隐藏已输入</string>
<string name="hide_archived">隐藏已存档</string> <string name="hide_archived">隐藏已存档</string>
<string name="sticky_notifications">使提醒持久</string> <string name="sticky_notifications">使通知持久</string>
<string name="sticky_notifications_description">防止提醒被滑掉</string> <string name="sticky_notifications_description">防止通知被滑掉</string>
<string name="led_notifications">通知指示</string> <string name="led_notifications">呼吸</string>
<string name="led_notifications_description">通过闪烁指示灯来提醒。仅限于有 LED 通知指示灯的手机。</string> <string name="led_notifications_description">有提醒时,呼吸灯会闪烁提示。仅限于有 LED 通知呼吸灯的手机。</string>
<string name="repair_database">修复数据库</string> <string name="repair_database">修复数据库</string>
<string name="database_repaired">数据库已修复</string> <string name="database_repaired">数据库已修复</string>
<string name="uncheck">取消选中</string> <string name="uncheck">取消选中</string>
@@ -160,31 +161,35 @@
<string name="by_score">按分数</string> <string name="by_score">按分数</string>
<string name="by_status">按状态</string> <string name="by_status">按状态</string>
<string name="export">导出</string> <string name="export">导出</string>
<string name="long_press_to_edit">长按可更改值</string> <string name="long_press_to_edit">长按可更改值</string>
<string name="change_value">更改</string> <string name="value"></string>
<string name="calendar">日历</string> <string name="calendar">日历</string>
<string name="unit">单位</string> <string name="unit">单位</string>
<string name="target_type">目标类型</string>
<string name="target_type_at_least">至少</string>
<string name="target_type_at_most">至多</string>
<string name="example_question_boolean">例如:你今天锻炼了吗?</string> <string name="example_question_boolean">例如:你今天锻炼了吗?</string>
<string name="question">问题</string> <string name="question">问题</string>
<string name="target">目标</string> <string name="target">目标</string>
<string name="yes"></string> <string name="yes"></string>
<string name="no"></string> <string name="no"></string>
<string name="customize_notification_summary">更改声音、振动、灯光和其他通知设置</string> <string name="customize_notification_summary">更改声音、振动、指示灯(呼吸灯)和其他通知设置</string>
<string name="customize_notification">自定义通知</string> <string name="customize_notification">自定义通知</string>
<string name="pref_view_privacy">查看隐私政策</string> <string name="pref_view_privacy">查看隐私政策</string>
<string name="view_all_contributors">查看所有贡献者</string> <string name="view_all_contributors">查看所有贡献者</string>
<string name="database">数据库</string> <string name="database">数据库</string>
<string name="widget_opacity_title">微件不透明度</string> <string name="widget_opacity_title">微件不透明度</string>
<string name="widget_opacity_description">调整主屏幕上微件的不透明度</string> <string name="widget_opacity_description">调整主屏幕上微件的不透明度</string>
<string name="first_day_of_the_week">一周的第一天</string> <string name="first_day_of_the_week">一周的第一天</string>
<string name="default_reminder_question">你今天完成这个习惯了吗?</string> <string name="default_reminder_question">你今天完成这个习惯了吗?</string>
<string name="notes">备注</string> <string name="notes">备注</string>
<string name="example_notes">(选填)</string> <string name="example_notes">(选填)</string>
<string name="yes_or_no_example">例如:你今天早起了吗?你锻炼了吗?你下棋了吗?</string> <string name="yes_or_no_example">例如:你今天早起了吗?你锻炼了吗?你下棋了吗?</string>
<string name="measurable">可量化的</string> <string name="measurable">可量化的</string>
<string name="measurable_example">例如:今天你跑了几公里?你读了几页书?</string> <string name="measurable_example">例如:今天你跑了几公里?你读了几页书?</string>
<string name="x_times_per_week">每周 %d 次</string> <string name="x_times_per_week">每周 %d 次</string>
<string name="x_times_per_month">每月 %d 次</string> <string name="x_times_per_month">每月 %d 次</string>
<string name="x_times_per_y_days">每 %d 天 %d 次</string>
<string name="yes_or_no_short_example">例如:锻炼</string> <string name="yes_or_no_short_example">例如:锻炼</string>
<string name="color">颜色</string> <string name="color">颜色</string>
<string name="example_target">例如15</string> <string name="example_target">例如15</string>
@@ -198,8 +203,8 @@
<string name="no_habits">找不到习惯</string> <string name="no_habits">找不到习惯</string>
<string name="no_numerical_habits">找不到可量化的习惯</string> <string name="no_numerical_habits">找不到可量化的习惯</string>
<string name="no_boolean_habits">找不到“是或不是”类的习惯</string> <string name="no_boolean_habits">找不到“是或不是”类的习惯</string>
<string name="increment"></string> <string name="increment">加(+1</string>
<string name="decrement"></string> <string name="decrement">少(-1</string>
<string name="pref_skip_title">启用跳过天数</string> <string name="pref_skip_title">启用跳过天数</string>
<string name="pref_skip_description">切换两次以添加跳过而不是复选标记。跳过将保持您的得分不变,且不会打破你的连续纪录</string> <string name="pref_skip_description">切换两次以添加跳过而不是复选标记。跳过将保持您的得分不变,且不会打破你的连续纪录</string>
<string name="pref_unknown_title">对丢失的数据显示问号</string> <string name="pref_unknown_title">对丢失的数据显示问号</string>

View File

@@ -71,7 +71,6 @@
<string name="interval_always_ask">每次都詢問</string> <string name="interval_always_ask">每次都詢問</string>
<string name="interval_custom">自訂</string> <string name="interval_custom">自訂</string>
<string name="pref_toggle_title">換成輕碰來記錄習慣</string> <string name="pref_toggle_title">換成輕碰來記錄習慣</string>
<string name="pref_toggle_description">雖然更方便,但有可能變成不小心就點到</string>
<string name="pref_rate_this_app">在 Google Play 上評價這個 App</string> <string name="pref_rate_this_app">在 Google Play 上評價這個 App</string>
<string name="pref_send_feedback">傳送改進意見給開發者</string> <string name="pref_send_feedback">傳送改進意見給開發者</string>
<string name="pref_view_source_code">在 GitHub 上查看原始碼</string> <string name="pref_view_source_code">在 GitHub 上查看原始碼</string>
@@ -125,7 +124,7 @@
<string name="generate_bug_report">製作錯誤報告</string> <string name="generate_bug_report">製作錯誤報告</string>
<string name="troubleshooting">問題排除</string> <string name="troubleshooting">問題排除</string>
<string name="help_translate">協助翻譯本程式</string> <string name="help_translate">協助翻譯本程式</string>
<string name="night_mode" comment="dark_theme">夜間模式</string> <string name="night_mode">夜間模式</string>
<string name="use_pure_black">在夜間模式中使用深色設定</string> <string name="use_pure_black">在夜間模式中使用深色設定</string>
<string name="pure_black_description">在夜間模式中,使用黑色背景取代灰色背景。這樣可以減少 AMOLED 螢幕手機的電量消耗。</string> <string name="pure_black_description">在夜間模式中,使用黑色背景取代灰色背景。這樣可以減少 AMOLED 螢幕手機的電量消耗。</string>
<string name="interface_preferences">介面</string> <string name="interface_preferences">介面</string>
@@ -164,7 +163,6 @@
<string name="by_status">依據狀態</string> <string name="by_status">依據狀態</string>
<string name="export">匯出</string> <string name="export">匯出</string>
<string name="long_press_to_edit">持續按住來改換數值</string> <string name="long_press_to_edit">持續按住來改換數值</string>
<string name="change_value">更改數值</string>
<string name="calendar">日曆</string> <string name="calendar">日曆</string>
<string name="unit">單位</string> <string name="unit">單位</string>
<string name="example_question_boolean">例如:你今天運動了嗎?</string> <string name="example_question_boolean">例如:你今天運動了嗎?</string>
@@ -188,6 +186,7 @@
<string name="measurable_example">例如:今天你跑了幾英哩?你讀了幾頁書?</string> <string name="measurable_example">例如:今天你跑了幾英哩?你讀了幾頁書?</string>
<string name="x_times_per_week">每周 %d 次</string> <string name="x_times_per_week">每周 %d 次</string>
<string name="x_times_per_month">每月 %d 次</string> <string name="x_times_per_month">每月 %d 次</string>
<string name="x_times_per_y_days">%d 次每 %d 日</string>
<string name="yes_or_no_short_example">例如:運動</string> <string name="yes_or_no_short_example">例如:運動</string>
<string name="color">顏色</string> <string name="color">顏色</string>
<string name="example_target">例如15</string> <string name="example_target">例如15</string>

View File

@@ -225,6 +225,7 @@
<string name="increment">Increment</string> <string name="increment">Increment</string>
<string name="decrement">Decrement</string> <string name="decrement">Decrement</string>
<string name="pref_skip_title">Enable skip days</string> <string name="pref_skip_title">Enable skip days</string>
<string name="skip_day">Skip</string>
<string name="pref_skip_description">Toggle twice to add a skip instead of a checkmark. Skips keep your score unchanged and don\'t break your streak.</string> <string name="pref_skip_description">Toggle twice to add a skip instead of a checkmark. Skips keep your score unchanged and don\'t break your streak.</string>
<string name="pref_unknown_title">Show question marks for missing data</string> <string name="pref_unknown_title">Show question marks for missing data</string>
<string name="pref_unknown_description">Differentiate days without data from actual lapses. To enter a lapse, toggle twice.</string> <string name="pref_unknown_description">Differentiate days without data from actual lapses. To enter a lapse, toggle twice.</string>

View File

@@ -387,16 +387,39 @@
<item name="android:textSize">@dimen/smallTextSize</item> <item name="android:textSize">@dimen/smallTextSize</item>
</style> </style>
<style name="CheckmarkDialogBtn"> <style name="CheckmarkPopupBtn">
<item name="android:layout_width">48dp</item> <item name="android:layout_width">0dp</item>
<item name="android:layout_height">48dp</item> <item name="android:layout_weight">1</item>
<item name="android:layout_marginTop">8dp</item> <item name="android:layout_height">match_parent</item>
<item name="android:layout_marginBottom">8dp</item> <item name="android:gravity">center</item>
<item name="android:layout_marginEnd">12dp</item> <item name="android:clickable">true</item>
<item name="android:textSize">@dimen/regularTextSize</item> <item name="android:focusable">true</item>
<item name="backgroundTint">@null</item> <item name="android:background">@drawable/ripple_transparent</item>
<item name="android:background">@drawable/bg_select_button</item> <item name="android:textSize">@dimen/smallerTextSize</item>
<item name="selectable">true</item> </style>
<style name="NumericalPopupBtn">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">match_parent</item>
<item name="android:paddingStart">12dp</item>
<item name="android:paddingEnd">12dp</item>
<item name="android:textStyle">bold</item>
<item name="android:gravity">center</item>
<item name="android:clickable">true</item>
<item name="android:focusable">true</item>
<item name="android:background">@drawable/ripple_transparent</item>
<item name="android:textSize">@dimen/smallerTextSize</item>
<item name="android:textAllCaps">true</item>
</style>
<style name="Theme.Transparent" parent="android:Theme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:backgroundDimEnabled">false</item>
<item name="android:windowAnimationStyle">@null</item>
</style> </style>
</resources> </resources>

View File

@@ -99,13 +99,6 @@
android:title="@string/sticky_notifications" android:title="@string/sticky_notifications"
app:iconSpaceReserved="false" /> app:iconSpaceReserved="false" />
<SwitchPreferenceCompat
android:defaultValue="false"
android:key="pref_led_notifications"
android:summary="@string/led_notifications_description"
android:title="@string/led_notifications"
app:iconSpaceReserved="false" />
<Preference <Preference
android:key="reminderCustomize" android:key="reminderCustomize"
android:summary="@string/customize_notification_summary" android:summary="@string/customize_notification_summary"

View File

@@ -7,5 +7,3 @@ pluginManagement {
} }
} }
} }
enableFeaturePreview("GRADLE_METADATA")

View File

@@ -0,0 +1,11 @@
HabitName,HabitDescription,HabitCategory,CalendarDate,Value,CommentText
Pushups,,Fitness,2021-09-01,30,
Pushups,,Fitness,2022-01-08,100,
Pushups,,Fitness,2022-01-09,100,
Pushups,,Fitness,2022-01-10,100,
Pushups,,Fitness,2022-01-11,100,
Pushups,,Fitness,2022-01-12,100,
Pushups,,Fitness,2022-01-13,100,
run,,Fitness,2022-01-03,1,
run,,Fitness,2022-01-18,1,
run,,Fitness,2022-01-19,1,
1 HabitName HabitDescription HabitCategory CalendarDate Value CommentText
2 Pushups Fitness 2021-09-01 30
3 Pushups Fitness 2022-01-08 100
4 Pushups Fitness 2022-01-09 100
5 Pushups Fitness 2022-01-10 100
6 Pushups Fitness 2022-01-11 100
7 Pushups Fitness 2022-01-12 100
8 Pushups Fitness 2022-01-13 100
9 run Fitness 2022-01-03 1
10 run Fitness 2022-01-18 1
11 run Fitness 2022-01-19 1

View File

@@ -43,13 +43,13 @@ kotlin {
val jvmMain by getting { val jvmMain by getting {
dependencies { dependencies {
implementation(kotlin("stdlib-jdk8")) implementation(kotlin("stdlib-jdk8"))
compileOnly("com.google.dagger:dagger:2.40.3") compileOnly("com.google.dagger:dagger:2.43.2")
implementation("com.google.guava:guava:31.0.1-android") implementation("com.google.guava:guava:31.1-android")
implementation("org.jetbrains.kotlin:kotlin-stdlib:1.6.0") implementation("org.jetbrains.kotlin:kotlin-stdlib:1.7.10")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.2") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4")
implementation("androidx.annotation:annotation:1.3.0") implementation("androidx.annotation:annotation:1.4.0")
implementation("com.google.code.findbugs:jsr305:3.0.2") implementation("com.google.code.findbugs:jsr305:3.0.2")
implementation("com.opencsv:opencsv:5.5.2") implementation("com.opencsv:opencsv:5.6")
implementation("commons-codec:commons-codec:1.15") implementation("commons-codec:commons-codec:1.15")
implementation("org.apache.commons:commons-lang3:3.12.0") implementation("org.apache.commons:commons-lang3:3.12.0")
} }
@@ -59,7 +59,7 @@ kotlin {
dependencies { dependencies {
implementation(kotlin("test")) implementation(kotlin("test"))
implementation(kotlin("test-junit")) implementation(kotlin("test-junit"))
implementation("org.xerial:sqlite-jdbc:3.36.0.3") implementation("org.xerial:sqlite-jdbc:3.39.2.0")
implementation("org.hamcrest:hamcrest:2.2") implementation("org.hamcrest:hamcrest:2.2")
implementation("org.apache.commons:commons-io:1.3.2") implementation("org.apache.commons:commons-io:1.3.2")
implementation("com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0") implementation("com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0")

View File

@@ -29,6 +29,11 @@ enum class Font {
FONT_AWESOME FONT_AWESOME
} }
data class ScreenLocation(
val x: Double,
val y: Double,
)
interface Canvas { interface Canvas {
fun setColor(color: Color) fun setColor(color: Color)
fun drawLine(x1: Double, y1: Double, x2: Double, y2: Double) fun drawLine(x1: Double, y1: Double, x2: Double, y2: Double)

View File

@@ -19,6 +19,7 @@
package org.isoron.platform.time package org.isoron.platform.time
import java.text.DateFormat
import java.util.Calendar.DAY_OF_MONTH import java.util.Calendar.DAY_OF_MONTH
import java.util.Calendar.DAY_OF_WEEK import java.util.Calendar.DAY_OF_WEEK
import java.util.Calendar.HOUR_OF_DAY import java.util.Calendar.HOUR_OF_DAY
@@ -66,4 +67,10 @@ class JavaLocalDateFormatter(private val locale: Locale) : LocalDateFormatter {
val cal = date.toGregorianCalendar() val cal = date.toGregorianCalendar()
return cal.getDisplayName(DAY_OF_WEEK, SHORT, locale) return cal.getDisplayName(DAY_OF_WEEK, SHORT, locale)
} }
fun longFormat(date: LocalDate): String {
val df = DateFormat.getDateInstance(DateFormat.LONG, locale)
df.timeZone = TimeZone.getTimeZone("UTC")
return df.format(date.toGregorianCalendar().time)
}
} }

View File

@@ -33,5 +33,6 @@ data class EditHabitCommand(
habitList.update(habit) habitList.update(habit)
habit.observable.notifyListeners() habit.observable.notifyListeners()
habit.recompute() habit.recompute()
habitList.resort()
} }
} }

View File

@@ -23,6 +23,7 @@ import org.isoron.uhabits.core.models.Entry
import org.isoron.uhabits.core.models.Frequency import org.isoron.uhabits.core.models.Frequency
import org.isoron.uhabits.core.models.Habit import org.isoron.uhabits.core.models.Habit
import org.isoron.uhabits.core.models.HabitList import org.isoron.uhabits.core.models.HabitList
import org.isoron.uhabits.core.models.HabitType
import org.isoron.uhabits.core.models.ModelFactory import org.isoron.uhabits.core.models.ModelFactory
import org.isoron.uhabits.core.models.Timestamp import org.isoron.uhabits.core.models.Timestamp
import java.io.BufferedReader import java.io.BufferedReader
@@ -50,7 +51,7 @@ class HabitBullCSVImporter
logging: Logging, logging: Logging,
) : AbstractImporter() { ) : AbstractImporter() {
val logger = logging.getLogger("HabitBullCSVImporter") private val logger = logging.getLogger("HabitBullCSVImporter")
override fun canHandle(file: File): Boolean { override fun canHandle(file: File): Boolean {
val reader = BufferedReader(FileReader(file)) val reader = BufferedReader(FileReader(file))
@@ -77,10 +78,16 @@ class HabitBullCSVImporter
logger.info("Creating habit: $name") logger.info("Creating habit: $name")
} }
val notes = cols[5] ?: "" val notes = cols[5] ?: ""
if (parseInt(cols[4]) == 1) { when (val value = parseInt(cols[4])) {
h.originalEntries.add(Entry(timestamp, Entry.YES_MANUAL, notes)) 0 -> h.originalEntries.add(Entry(timestamp, Entry.NO, notes))
} else { 1 -> h.originalEntries.add(Entry(timestamp, Entry.YES_MANUAL, notes))
h.originalEntries.add(Entry(timestamp, Entry.NO, notes)) else -> {
if (value > 1 && h.type != HabitType.NUMERICAL) {
logger.info("Found a value of $value, considering this habit as numerical.")
h.type = HabitType.NUMERICAL
}
h.originalEntries.add(Entry(timestamp, value, notes))
}
} }
} }
} }

View File

@@ -276,6 +276,8 @@ open class EntryList {
* For numerical habits, non-positive entry values are converted to zero. For boolean habits, each * For numerical habits, non-positive entry values are converted to zero. For boolean habits, each
* YES_MANUAL value is converted to 1000 and all other values are converted to zero. * YES_MANUAL value is converted to 1000 and all other values are converted to zero.
* *
* SKIP values are converted to zero (if they weren't, each SKIP day would count as 0.003).
*
* The returned list is sorted by timestamp, with the newest entry coming first and the oldest entry * The returned list is sorted by timestamp, with the newest entry coming first and the oldest entry
* coming last. If the original list has gaps in it (for example, weeks or months without any * coming last. If the original list has gaps in it (for example, weeks or months without any
* entries), then the list produced by this method will also have gaps. * entries), then the list produced by this method will also have gaps.
@@ -289,7 +291,10 @@ fun List<Entry>.groupedSum(
): List<Entry> { ): List<Entry> {
return this.map { (timestamp, value) -> return this.map { (timestamp, value) ->
if (isNumerical) { if (isNumerical) {
Entry(timestamp, max(0, value)) if (value == SKIP)
Entry(timestamp, 0)
else
Entry(timestamp, max(0, value))
} else { } else {
Entry(timestamp, if (value == YES_MANUAL) 1000 else 0) Entry(timestamp, if (value == YES_MANUAL) 1000 else 0)
} }
@@ -301,6 +306,31 @@ fun List<Entry>.groupedSum(
}.entries.map { (timestamp, entries) -> }.entries.map { (timestamp, entries) ->
Entry(timestamp, entries.sumOf { it.value }) Entry(timestamp, entries.sumOf { it.value })
}.sortedBy { (timestamp, _) -> }.sortedBy { (timestamp, _) ->
- timestamp.unixTime -timestamp.unixTime
}
}
/**
* Counts the number of days with vaLue SKIP in the given period.
*/
fun List<Entry>.countSkippedDays(
truncateField: DateUtils.TruncateField,
firstWeekday: Int = Calendar.SATURDAY
): List<Entry> {
return this.map { (timestamp, value) ->
if (value == SKIP) {
Entry(timestamp, 1)
} else {
Entry(timestamp, 0)
}
}.groupBy { entry ->
entry.timestamp.truncate(
truncateField,
firstWeekday,
)
}.entries.map { (timestamp, entries) ->
Entry(timestamp, entries.sumOf { it.value })
}.sortedBy { (timestamp, _) ->
-timestamp.unixTime
} }
} }

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