272 Commits
1.0.1 ... main

Author SHA1 Message Date
dependabot[bot]
34dcfa9b65 chore(deps): bump com.google.devtools.ksp from 2.3.3 to 2.3.4 (#318)
Bumps [com.google.devtools.ksp](https://github.com/google/ksp) from 2.3.3 to 2.3.4.
- [Release notes](https://github.com/google/ksp/releases)
- [Commits](https://github.com/google/ksp/compare/2.3.3...2.3.4)

---
updated-dependencies:
- dependency-name: com.google.devtools.ksp
  dependency-version: 2.3.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-23 12:07:33 +05:30
dependabot[bot]
e162ec23d9 chore(deps): bump fastlane from 2.229.1 to 2.230.0 (#316)
Bumps [fastlane](https://github.com/fastlane/fastlane) from 2.229.1 to 2.230.0.
- [Release notes](https://github.com/fastlane/fastlane/releases)
- [Changelog](https://github.com/fastlane/fastlane/blob/master/CHANGELOG.latest.md)
- [Commits](https://github.com/fastlane/fastlane/compare/fastlane/2.229.1...fastlane/2.230.0)

---
updated-dependencies:
- dependency-name: fastlane
  dependency-version: 2.230.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-23 01:57:54 +05:30
dependabot[bot]
0d37825fa8 chore(deps): bump aws-sdk-s3 from 1.205.0 to 1.208.0 (#314)
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.205.0 to 1.208.0.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)

---
updated-dependencies:
- dependency-name: aws-sdk-s3
  dependency-version: 1.208.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-18 19:41:26 +00:00
fossifybot[bot]
f18f65d634 chore(release): v1.7.0 (13) (#303)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-12-16 06:43:27 +05:30
fossifybot[bot]
c9977aee10 chore(deps): bump org.fossify.commons from 5.11.0 to 5.12.0 (#312)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-12-16 01:07:52 +00:00
Naveen Singh
057111000f feat(l10n): remove Valencian translations
Translations for Valencian have been removed from Fossify/Launcher.

Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/ca@valencia/
Via: Weblate
2025-12-16 06:11:17 +05:30
fran secs
db082920c9 feat(l10n): add Valencian translations
Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/ca@valencia/
Via: Weblate
2025-12-16 06:11:17 +05:30
noimzip
acc1f058d2 chore(l10n): update Japanese translations
Currently translated at 88.8% (16 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/ja/
Via: Weblate
2025-12-16 06:11:17 +05:30
Kotori Cake
d3246d2cc4 chore(l10n): update Azerbaijani translations
Currently translated at 16.6% (3 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/az/
Via: Weblate
2025-12-16 06:11:17 +05:30
Petux
01e8dede29 chore(l10n): update Russian translations
Currently translated at 100.0% (2 of 2 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/ru/
Via: Weblate
2025-12-16 06:11:17 +05:30
Mickaël Binos
408f6b6e34 chore(l10n): update French translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/fr/
Via: Weblate
2025-12-16 06:11:17 +05:30
Alex Katon
8d03b1818a chore(l10n): update Belarusian translations
Currently translated at 5.5% (1 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/be/
Via: Weblate
2025-12-16 06:11:17 +05:30
fossifybot[bot]
755bc77aed chore: update lint baselines (#307)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-12-10 23:56:45 +05:30
fossifybot[bot]
40e1c28a15 chore(deps): bump org.fossify.commons from 5.10.0 to 5.11.0 (#306)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-12-10 23:24:12 +05:30
Naveen Singh
7f053cc415 ci: add workflow to update commons lib (#305) 2025-12-10 23:08:01 +05:30
Naveen Singh
e1506df987 fix: always filter list by search query (#302)
* fix: always filter list by search query

* docs: update changelog

Refs: https://github.com/FossifyOrg/Launcher/issues/100
2025-12-09 23:26:18 +05:30
dependabot[bot]
e284a7558d chore(deps): bump org.fossify:commons from 5.9.1 to 5.10.0 (#300)
Bumps [org.fossify:commons](https://github.com/FossifyOrg/commons) from 5.9.1 to 5.10.0.
- [Commits](https://github.com/FossifyOrg/commons/compare/5.9.1...5.10.0)

---
updated-dependencies:
- dependency-name: org.fossify:commons
  dependency-version: 5.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-08 20:22:35 +00:00
dependabot[bot]
0004ad8659 chore(deps): bump fastlane from 2.229.0 to 2.229.1 (#296)
Bumps [fastlane](https://github.com/fastlane/fastlane) from 2.229.0 to 2.229.1.
- [Release notes](https://github.com/fastlane/fastlane/releases)
- [Changelog](https://github.com/fastlane/fastlane/blob/master/CHANGELOG.latest.md)
- [Commits](https://github.com/fastlane/fastlane/compare/fastlane/2.229.0...fastlane/2.229.1)

---
updated-dependencies:
- dependency-name: fastlane
  dependency-version: 2.229.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-02 05:29:26 +05:30
Naveen Singh
13d6cd323e ci: pass secrets to testing build workflow (#295) 2025-12-01 18:03:01 +05:30
fossifybot[bot]
846783806e chore: update lint baselines (#293)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-12-01 02:35:39 +00:00
fossifybot[bot]
4e2366833d chore(release): v1.6.0 (12) (#284)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-12-01 01:56:43 +05:30
Amadɣas
c23048664d chore(l10n): update Kabyle translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/kab/
Via: Weblate
2025-12-01 01:55:35 +05:30
Amadɣas
2e8835489e chore(l10n): update Kabyle translations
Currently translated at 50.0% (9 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/kab/
Via: Weblate
2025-12-01 01:55:35 +05:30
Amadɣas
5618cc1c74 chore(l10n): update Kabyle translations
Currently translated at 11.1% (2 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/kab/
Via: Weblate
2025-12-01 01:55:35 +05:30
ButterflyOfFire
707f2837fd chore(l10n): update Kabyle translations
Currently translated at 11.1% (2 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/kab/
Via: Weblate
2025-12-01 01:55:35 +05:30
ButterflyOfFire
6bcc43e276 feat(l10n): add Kabyle translations
Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/kab/
Via: Weblate
2025-12-01 01:55:35 +05:30
Vaclovas Intas
add85b7e4c chore(l10n): update Lithuanian translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/lt/
Via: Weblate
2025-12-01 01:55:35 +05:30
Naveen Singh
f627ba0bca fix: draw behind navigation bars (#292)
* fix: draw behind navigation bars

* docs(changelog): dummy commit
2025-12-01 00:58:58 +05:30
Naveen Singh
03497fdbb2 fix: apply proper top padding in app drawer (#291)
* fix: apply proper top padding in app drawer

* docs: update changelog
2025-12-01 00:25:11 +05:30
dependabot[bot]
ef103f94c4 chore(deps): bump org.fossify:commons from 5.8.0 to 5.9.1 (#290)
Bumps org.fossify:commons from 5.8.0 to 5.9.1.

---
updated-dependencies:
- dependency-name: org.fossify:commons
  dependency-version: 5.9.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-30 23:49:52 +05:30
dependabot[bot]
79ea581bb7 chore(deps): bump org.fossify:commons from 5.7.3 to 5.8.0 (#289)
Bumps [org.fossify:commons](https://github.com/FossifyOrg/commons) from 5.7.3 to 5.8.0.
- [Commits](https://github.com/FossifyOrg/commons/compare/5.7.3...5.8.0)

---
updated-dependencies:
- dependency-name: org.fossify:commons
  dependency-version: 5.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-29 09:34:26 +00:00
dependabot[bot]
94bfcd3f90 chore(deps): bump io.nlopez.compose.rules:detekt from 0.4.27 to 0.4.28 (#286)
Bumps [io.nlopez.compose.rules:detekt](https://github.com/mrmans0n/compose-rules) from 0.4.27 to 0.4.28.
- [Release notes](https://github.com/mrmans0n/compose-rules/releases)
- [Commits](https://github.com/mrmans0n/compose-rules/compare/v0.4.27...v0.4.28)

---
updated-dependencies:
- dependency-name: io.nlopez.compose.rules:detekt
  dependency-version: 0.4.28
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-25 12:13:28 +05:30
dependabot[bot]
5b997ca666 chore(deps): bump fastlane from 2.228.0 to 2.229.0 (#288)
Bumps [fastlane](https://github.com/fastlane/fastlane) from 2.228.0 to 2.229.0.
- [Release notes](https://github.com/fastlane/fastlane/releases)
- [Changelog](https://github.com/fastlane/fastlane/blob/master/CHANGELOG.latest.md)
- [Commits](https://github.com/fastlane/fastlane/compare/fastlane/2.228.0...fastlane/2.229.0)

---
updated-dependencies:
- dependency-name: fastlane
  dependency-version: 2.229.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-25 07:31:28 +05:30
dependabot[bot]
b05fb2cc59 chore(deps): bump com.google.devtools.ksp from 2.3.2 to 2.3.3 (#287)
Bumps [com.google.devtools.ksp](https://github.com/google/ksp) from 2.3.2 to 2.3.3.
- [Release notes](https://github.com/google/ksp/releases)
- [Commits](https://github.com/google/ksp/compare/2.3.2...2.3.3)

---
updated-dependencies:
- dependency-name: com.google.devtools.ksp
  dependency-version: 2.3.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-25 07:29:33 +05:30
dependabot[bot]
fcfb34d3c8 chore(deps): bump room from 2.8.3 to 2.8.4 (#285)
Bumps `room` from 2.8.3 to 2.8.4.

Updates `androidx.room:room-runtime` from 2.8.3 to 2.8.4

Updates `androidx.room:room-ktx` from 2.8.3 to 2.8.4

Updates `androidx.room:room-compiler` from 2.8.3 to 2.8.4

---
updated-dependencies:
- dependency-name: androidx.room:room-runtime
  dependency-version: 2.8.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: androidx.room:room-ktx
  dependency-version: 2.8.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: androidx.room:room-compiler
  dependency-version: 2.8.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-25 07:24:16 +05:30
Florian Bernard
b2888dfa40 feat: improve search by normalizing string (#283)
* feat: improve search by normalizing string

* docs(changelog): correct link reference

---------

Co-authored-by: Naveen Singh <36371707+naveensingh@users.noreply.github.com>
2025-11-23 15:50:40 +05:30
dependabot[bot]
fd5af4becc chore(deps): bump com.google.devtools.ksp from 2.3.0 to 2.3.2 (#276)
Bumps [com.google.devtools.ksp](https://github.com/google/ksp) from 2.3.0 to 2.3.2.
- [Release notes](https://github.com/google/ksp/releases)
- [Commits](https://github.com/google/ksp/compare/2.3.0...2.3.2)

---
updated-dependencies:
- dependency-name: com.google.devtools.ksp
  dependency-version: 2.3.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-10 20:28:32 +00:00
dependabot[bot]
666627150e chore(deps): bump org.fossify:commons from 5.7.1 to 5.7.3 (#271)
Bumps [org.fossify:commons](https://github.com/FossifyOrg/commons) from 5.7.1 to 5.7.3.
- [Commits](https://github.com/FossifyOrg/commons/compare/5.7.1...5.7.3)

---
updated-dependencies:
- dependency-name: org.fossify:commons
  dependency-version: 5.7.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-04 07:55:30 +05:30
fossifybot[bot]
4185eeeb31 chore: update lint baselines (#269)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-11-01 12:30:33 +05:30
fossifybot[bot]
65307abd46 chore(release): v1.5.0 (11) (#263)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-10-30 00:27:23 +05:30
Naveen Singh
b70e248b7b chore(deps): bump org.fossify.commons to 5.7.1 (#268) 2025-10-29 20:18:00 +05:30
dependabot[bot]
c90853cc3a chore(deps): bump org.jetbrains.kotlin.android from 2.2.20 to 2.2.21 (#267)
Bumps [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) from 2.2.20 to 2.2.21.
- [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/v2.2.20...v2.2.21)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-28 10:57:03 +05:30
dependabot[bot]
1541be6bba chore(deps): bump com.google.devtools.ksp from 2.2.20-2.0.4 to 2.3.0 (#266)
Bumps [com.google.devtools.ksp](https://github.com/google/ksp) from 2.2.20-2.0.4 to 2.3.0.
- [Release notes](https://github.com/google/ksp/releases)
- [Commits](https://github.com/google/ksp/compare/2.2.20-2.0.4...2.3.0)

---
updated-dependencies:
- dependency-name: com.google.devtools.ksp
  dependency-version: 2.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-27 21:08:32 +00:00
dependabot[bot]
ab7ded014d chore(deps): bump room from 2.8.2 to 2.8.3 (#265)
Bumps `room` from 2.8.2 to 2.8.3.

Updates `androidx.room:room-runtime` from 2.8.2 to 2.8.3

Updates `androidx.room:room-ktx` from 2.8.2 to 2.8.3

Updates `androidx.room:room-compiler` from 2.8.2 to 2.8.3

---
updated-dependencies:
- dependency-name: androidx.room:room-runtime
  dependency-version: 2.8.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: androidx.room:room-ktx
  dependency-version: 2.8.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: androidx.room:room-compiler
  dependency-version: 2.8.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-27 21:07:01 +00:00
Naveen Singh
61c1179af0 feat: bump org.fossify.commons to 5.7.0 (#264)
* feat: bump org.fossify.commons to 5.6.0

* feat: bump org.fossify.commons to 5.7.0
2025-10-27 20:19:03 +05:30
hosêyň abāspanā
55793591f1 chore(l10n): update Luri (Bakhtiari) translations
Currently translated at 88.8% (16 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/bqi/
Via: Weblate
2025-10-26 23:19:52 +05:30
hosêyň abāspanā
c0acc69e11 chore(l10n): update Luri (Bakhtiari) translations
Currently translated at 72.2% (13 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/bqi/
Via: Weblate
2025-10-26 23:19:52 +05:30
hosêyň abāspanā
014cfcac06 chore(l10n): update Luri (Bakhtiari) translations
Currently translated at 66.6% (12 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/bqi/
Via: Weblate
2025-10-26 23:19:52 +05:30
hosêyň abāspanā
b06fa1a477 chore(l10n): update Luri (Bakhtiari) translations
Currently translated at 38.8% (7 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/bqi/
Via: Weblate
2025-10-26 23:19:52 +05:30
hosêyň abāspanā
e3620f48af chore(l10n): update Luri (Bakhtiari) translations
Currently translated at 16.6% (3 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/bqi/
Via: Weblate
2025-10-26 23:19:52 +05:30
Naveen Singh
4d9ba1d241 chore: bump target SDK version to 35 (#214)
* chore: bump target SDK version to 35

* chore: bump target SDK version to 36

* refactor: update edge-to-edge implementation

* refactor: update edge-to-edge implementation

* refactor: update edge-to-edge implementation

* refactor: migrate away from deprecated onBackPressed()

* chore(deps): update org.fossify.commons to 5.5.0

* docs: update changelog

* build: bump detekt return count limit

* chore: update lint baselines
2025-10-26 22:58:14 +05:30
dependabot[bot]
dd86c458cb chore(deps): bump org.fossify:commons from 5.3.0 to 5.4.0 (#262)
Bumps [org.fossify:commons](https://github.com/FossifyOrg/commons) from 5.3.0 to 5.4.0.
- [Commits](https://github.com/FossifyOrg/commons/compare/5.3.0...5.4.0)

---
updated-dependencies:
- dependency-name: org.fossify:commons
  dependency-version: 5.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-21 09:29:22 +05:30
dependabot[bot]
7aec205cc1 chore(deps): bump com.google.devtools.ksp (#260)
Bumps [com.google.devtools.ksp](https://github.com/google/ksp) from 2.2.20-2.0.3 to 2.2.20-2.0.4.
- [Release notes](https://github.com/google/ksp/releases)
- [Commits](https://github.com/google/ksp/compare/2.2.20-2.0.3...2.2.20-2.0.4)

---
updated-dependencies:
- dependency-name: com.google.devtools.ksp
  dependency-version: 2.2.20-2.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-14 11:02:55 +05:30
dependabot[bot]
15d76036d7 chore(deps): bump room from 2.8.1 to 2.8.2 (#261)
Bumps `room` from 2.8.1 to 2.8.2.

Updates `androidx.room:room-runtime` from 2.8.1 to 2.8.2

Updates `androidx.room:room-ktx` from 2.8.1 to 2.8.2

Updates `androidx.room:room-compiler` from 2.8.1 to 2.8.2

---
updated-dependencies:
- dependency-name: androidx.room:room-runtime
  dependency-version: 2.8.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: androidx.room:room-ktx
  dependency-version: 2.8.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: androidx.room:room-compiler
  dependency-version: 2.8.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-14 11:02:32 +05:30
Tomas Brabenec
b1088c705e chore(l10n): App name correction for CS localization (#259) 2025-10-11 08:48:46 +00:00
Naveen Singh
cb3978dc0e chore(deps): bump org.fossify.commons to 5.3.0 (#257) 2025-10-09 21:30:15 +05:30
hosêyň abāspanā
7f7c455c34 chore(l10n): update Luri (Bakhtiari) translations
Currently translated at 11.1% (2 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/bqi/
Via: Weblate
2025-10-09 21:26:58 +05:30
cat
c6a56fe300 chore(l10n): update Danish translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/da/
Via: Weblate
2025-10-09 21:26:58 +05:30
hosêyň abāspanā
33b4e01b8f feat(l10n): add Luri (Bakhtiari) translations
Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/bqi/
Via: Weblate
2025-10-09 21:26:58 +05:30
cat
d3d53b3212 chore(l10n): update Danish translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/da/
Via: Weblate
2025-10-09 21:26:58 +05:30
alanfox2000software
aac21411a6 chore(l10n): update Chinese (Traditional Han script, Hong Kong) translations
Currently translated at 100.0% (2 of 2 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/zh_Hant_HK/
Via: Weblate
2025-10-09 21:26:58 +05:30
alanfox2000software
5d2c08d70c chore(l10n): update Chinese (Traditional Han script) translations
Currently translated at 100.0% (2 of 2 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/zh_Hant/
Via: Weblate
2025-10-09 21:26:58 +05:30
alanfox2000software
532f57c46d chore(l10n): update Chinese (Traditional Han script) translations
Currently translated at 100.0% (2 of 2 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/zh_Hant/
Via: Weblate
2025-10-09 21:26:58 +05:30
alanfox2000software
45a957e70a chore(l10n): update Chinese (Traditional Han script, Hong Kong) translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/zh_Hant_HK/
Via: Weblate
2025-10-09 21:26:58 +05:30
IgorTrp
baa139f5d6 chore(l10n): update Serbian translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/sr/
Via: Weblate
2025-10-09 21:26:58 +05:30
fossifybot[bot]
f6e6d89319 chore: update lint baselines (#256)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-10-01 09:14:07 +05:30
dependabot[bot]
5ed097c6f1 chore(deps): bump room from 2.8.0 to 2.8.1 (#254)
Bumps `room` from 2.8.0 to 2.8.1.

Updates `androidx.room:room-runtime` from 2.8.0 to 2.8.1

Updates `androidx.room:room-ktx` from 2.8.0 to 2.8.1

Updates `androidx.room:room-compiler` from 2.8.0 to 2.8.1

---
updated-dependencies:
- dependency-name: androidx.room:room-runtime
  dependency-version: 2.8.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: androidx.room:room-ktx
  dependency-version: 2.8.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: androidx.room:room-compiler
  dependency-version: 2.8.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-29 16:55:29 +00:00
dependabot[bot]
57b1b13592 chore(deps): bump org.fossify:commons from 5.0.2 to 5.2.0 (#255)
Bumps org.fossify:commons from 5.0.2 to 5.2.0.

---
updated-dependencies:
- dependency-name: org.fossify:commons
  dependency-version: 5.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-29 16:54:18 +00:00
dependabot[bot]
4f5103fb1b chore(deps): bump rexml from 3.4.1 to 3.4.2 (#250)
Bumps [rexml](https://github.com/ruby/rexml) from 3.4.1 to 3.4.2.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.4.1...v3.4.2)

---
updated-dependencies:
- dependency-name: rexml
  dependency-version: 3.4.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-18 10:31:57 +05:30
fossifybot[bot]
1c1d0360ff chore(release): v1.4.0 (10) (#242)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-09-17 10:26:35 +05:30
josé m
eed55088ce chore(l10n): update Galician translations
Currently translated at 94.4% (17 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/gl/
Via: Weblate
2025-09-17 10:24:38 +05:30
Frosted
e531f6c3e8 chore(l10n): update Turkish translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/tr/
Via: Weblate
2025-09-17 10:24:38 +05:30
dependabot[bot]
cebd9846f8 chore(deps): bump org.jetbrains.kotlin.android from 2.2.10 to 2.2.20 (#249)
Bumps [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) from 2.2.10 to 2.2.20.
- [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/v2.2.10...v2.2.20)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-16 16:05:04 +05:30
dependabot[bot]
7e2209cc54 chore(deps): bump room from 2.7.2 to 2.8.0 (#248)
Bumps `room` from 2.7.2 to 2.8.0.

Updates `androidx.room:room-runtime` from 2.7.2 to 2.8.0

Updates `androidx.room:room-ktx` from 2.7.2 to 2.8.0

Updates `androidx.room:room-compiler` from 2.7.2 to 2.8.0

---
updated-dependencies:
- dependency-name: androidx.room:room-runtime
  dependency-version: 2.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: androidx.room:room-ktx
  dependency-version: 2.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: androidx.room:room-compiler
  dependency-version: 2.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-16 16:03:55 +05:30
dependabot[bot]
e92a785dbb chore(deps): bump com.google.devtools.ksp (#247)
Bumps [com.google.devtools.ksp](https://github.com/google/ksp) from 2.2.10-2.0.2 to 2.2.20-2.0.3.
- [Release notes](https://github.com/google/ksp/releases)
- [Commits](https://github.com/google/ksp/compare/2.2.10-2.0.2...2.2.20-2.0.3)

---
updated-dependencies:
- dependency-name: com.google.devtools.ksp
  dependency-version: 2.2.20-2.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-16 15:59:16 +05:30
Naveen Singh
138f8bbb9f docs: fix broken discussion links in issue templates (#244) 2025-09-11 18:37:43 +05:30
Naveen Singh
5b15251256 feat: return to first page when home button is tapped (#241)
Refs: https://github.com/FossifyOrg/Launcher/issues/170
2025-09-08 15:04:06 +05:30
fossifybot[bot]
f55145d2f2 chore(release): v1.3.0 (9) (#232)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-09-01 16:58:10 +00:00
Naveen Singh
678bd4ef8d docs: fix typo in changelog (#238) 2025-09-01 22:22:54 +05:30
dependabot[bot]
cdc2a5288f chore(deps): bump org.fossify:commons from 5.0.0 to 5.0.2 (#237) 2025-09-01 16:52:25 +00:00
LaKato
f915cc2d33 chore(l10n): update Esperanto translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/eo/
Via: Weblate
2025-09-01 22:18:52 +05:30
Alexander Gabilondo
1480856b85 chore(l10n): update Basque translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/eu/
Via: Weblate
2025-09-01 22:18:52 +05:30
Matheus Campos
c82648ec62 chore(l10n): update Spanish (American) translations
Currently translated at 16.6% (3 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/es_US/
Via: Weblate
2025-09-01 22:18:52 +05:30
Milo Ivir
40c971fdcf chore(l10n): update Croatian translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/hr/
Via: Weblate
2025-09-01 22:18:52 +05:30
LaKato
e03a182899 chore(l10n): update Spanish translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/es/
Via: Weblate
2025-09-01 22:18:52 +05:30
Giovanni Donisi
f6404419c2 chore(l10n): update Italian translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/it/
Via: Weblate
2025-09-01 22:18:52 +05:30
ssantos
e74ef8bf0f chore(l10n): update Portuguese translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/pt/
Via: Weblate
2025-09-01 22:18:52 +05:30
FLVAL
cf9a5e176c chore(l10n): update French translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/fr/
Via: Weblate
2025-09-01 22:18:52 +05:30
lianergoist
af6565c826 chore(l10n): update Danish translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/da/
Via: Weblate
2025-09-01 22:18:52 +05:30
GaucovyAero
33366fb1fc chore(l10n): update Slovak translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/sk/
Via: Weblate
2025-09-01 22:18:52 +05:30
Arno Tánczos
346f993086 chore(l10n): update Finnish translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/fi/
Via: Weblate
2025-09-01 22:18:52 +05:30
Kfir Pshititsky
aa1c7f8004 chore(l10n): update Hebrew translations
Currently translated at 100.0% (2 of 2 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/he/
Via: Weblate
2025-09-01 22:18:52 +05:30
Kfir Pshititsky
1d3407bf74 chore(l10n): update Hebrew translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/he/
Via: Weblate
2025-09-01 22:18:52 +05:30
Aindriú Mac Giolla Eoin
7afbcc3b67 chore(l10n): update Irish translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/ga/
Via: Weblate
2025-09-01 22:18:52 +05:30
Kfir Pshititsky
01d8b940be chore(l10n): update Hebrew translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/he/
Via: Weblate
2025-09-01 22:18:52 +05:30
solokot
8e138b9c2a chore(l10n): update Russian translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/ru/
Via: Weblate
2025-09-01 22:18:52 +05:30
Jeff Huang
0ee1f18424 chore(l10n): update Chinese (Traditional Han script) translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/zh_Hant/
Via: Weblate
2025-09-01 22:18:52 +05:30
Edgars Andersons
b9c6bfd605 chore(l10n): update Latvian translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/lv/
Via: Weblate
2025-09-01 22:18:52 +05:30
Sketch6580
3cecc50527 chore(l10n): update Chinese (Simplified Han script) translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/zh_Hans/
Via: Weblate
2025-09-01 22:18:52 +05:30
Максим Горпиніч
d38f0fc5c1 chore(l10n): update Ukrainian translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/uk/
Via: Weblate
2025-09-01 22:18:52 +05:30
en2sv
42aef77f80 chore(l10n): update Swedish translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/sv/
Via: Weblate
2025-09-01 22:18:52 +05:30
OlliesGudh
6f605c8794 chore(l10n): update Portuguese (Brazil) translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/pt_BR/
Via: Weblate
2025-09-01 22:18:52 +05:30
Guillaume
4d168b315d chore(l10n): update Dutch translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/nl/
Via: Weblate
2025-09-01 22:18:52 +05:30
elid
9d7b06be04 chore(l10n): update Hebrew translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/he/
Via: Weblate
2025-09-01 22:18:52 +05:30
Priit Jõerüüt
a65858f055 chore(l10n): update Estonian translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/et/
Via: Weblate
2025-09-01 22:18:52 +05:30
Rio Ogino
5466c0bf3e fix: home screen talkback hover events (#235)
Refs: https://github.com/FossifyOrg/Launcher/issues/234
2025-09-01 18:28:57 +05:30
fossifybot[bot]
fdfd7f0bde chore: update lint baselines (#233)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-09-01 10:01:20 +05:30
Naveen Singh
b00cc8eb0f feat: prompt to set as default on startup (#231)
* feat: prompt to set as default on startup

To make it more reliable in case of multiple denials, `Long press on home screen ➜ Set as default now` launches the system page for selecting default home app instead of prompting using the RoleManager API.

Refs: https://github.com/FossifyOrg/Launcher/issues/230

* docs: update changelog
2025-08-27 19:58:38 +05:30
Naveen Singh
0ff331f91f refactor(settings): remove color customization lock and add thank you button (#228) 2025-08-25 04:02:46 +05:30
Naveen Singh
0967231d3a chore(deps): downgrade com.android.application from 8.12.0 to 8.11.1 (#226) 2025-08-22 04:57:31 +05:30
Naveen Singh
232e7140df docs: redirect questions to general discussions (#225) 2025-08-20 16:16:53 +05:30
dependabot[bot]
8ccc12fb77 chore(deps): bump com.google.devtools.ksp (#223)
Bumps [com.google.devtools.ksp](https://github.com/google/ksp) from 2.2.0-2.0.2 to 2.2.10-2.0.2.
- [Release notes](https://github.com/google/ksp/releases)
- [Commits](https://github.com/google/ksp/compare/2.2.0-2.0.2...2.2.10-2.0.2)

---
updated-dependencies:
- dependency-name: com.google.devtools.ksp
  dependency-version: 2.2.10-2.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-18 22:50:18 +05:30
dependabot[bot]
7adf3e7ca2 chore(deps): bump org.jetbrains.kotlin.android from 2.2.0 to 2.2.10 (#222)
Bumps [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) from 2.2.0 to 2.2.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/v2.2.0...v2.2.10)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-18 22:39:41 +05:30
dependabot[bot]
cce4df2de7 chore(deps): bump org.fossify:commons from 4.4.0 to 4.4.2 (#218)
Bumps [org.fossify:commons](https://github.com/FossifyOrg/commons) from 4.4.0 to 4.4.2.
- [Commits](https://github.com/FossifyOrg/commons/compare/4.4.0...4.4.2)

---
updated-dependencies:
- dependency-name: org.fossify:commons
  dependency-version: 4.4.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-09 22:58:16 +05:30
dependabot[bot]
3912c96127 chore(deps): bump io.nlopez.compose.rules:detekt from 0.4.26 to 0.4.27 (#219)
Bumps [io.nlopez.compose.rules:detekt](https://github.com/mrmans0n/compose-rules) from 0.4.26 to 0.4.27.
- [Release notes](https://github.com/mrmans0n/compose-rules/releases)
- [Commits](https://github.com/mrmans0n/compose-rules/compare/v0.4.26...v0.4.27)

---
updated-dependencies:
- dependency-name: io.nlopez.compose.rules:detekt
  dependency-version: 0.4.27
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-09 22:55:24 +05:30
dependabot[bot]
c37465b230 chore(deps): bump com.android.application from 8.11.1 to 8.12.0 (#220)
Bumps com.android.application from 8.11.1 to 8.12.0.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-09 22:51:36 +05:30
fossifybot[bot]
84dd3b46b7 chore: update lint baselines (#215)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-08-01 09:17:15 +05:30
dependabot[bot]
a5cc4f3157 chore(deps): bump org.fossify:commons from 4.3.0 to 4.4.0 (#212)
Bumps org.fossify:commons from 4.3.0 to 4.4.0.

---
updated-dependencies:
- dependency-name: org.fossify:commons
  dependency-version: 4.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-29 11:35:32 +05:30
dependabot[bot]
b30e21166c chore(deps): bump io.nlopez.compose.rules:detekt from 0.4.25 to 0.4.26 (#213)
Bumps [io.nlopez.compose.rules:detekt](https://github.com/mrmans0n/compose-rules) from 0.4.25 to 0.4.26.
- [Release notes](https://github.com/mrmans0n/compose-rules/releases)
- [Commits](https://github.com/mrmans0n/compose-rules/compare/v0.4.25...v0.4.26)

---
updated-dependencies:
- dependency-name: io.nlopez.compose.rules:detekt
  dependency-version: 0.4.26
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-29 11:35:19 +05:30
dependabot[bot]
e79bbcf589 chore(deps): bump io.nlopez.compose.rules:detekt from 0.4.22 to 0.4.25 (#208)
Bumps [io.nlopez.compose.rules:detekt](https://github.com/mrmans0n/compose-rules) from 0.4.22 to 0.4.25.
- [Release notes](https://github.com/mrmans0n/compose-rules/releases)
- [Commits](https://github.com/mrmans0n/compose-rules/compare/v0.4.22...v0.4.25)

---
updated-dependencies:
- dependency-name: io.nlopez.compose.rules:detekt
  dependency-version: 0.4.25
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-22 10:50:33 +05:30
fossifybot[bot]
baf44b3ecf chore(release): v1.2.0 (8) (#203)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-07-15 19:50:38 +05:30
Josep M. Ferrer
7cd94f4c65 chore(l10n): update Catalan translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/ca/
Via: Weblate
2025-07-15 19:49:26 +05:30
Agnieszka C
76bfc030cb chore(l10n): update Polish translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/pl/
Via: Weblate
2025-07-15 19:49:26 +05:30
Kachelkaiser
cadcde79bc chore(l10n): update German translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/de/
Via: Weblate
2025-07-15 19:49:26 +05:30
Kachelkaiser
b60fc160de chore(l10n): update German translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/de/
Via: Weblate
2025-07-15 19:49:26 +05:30
Fjuro
eef787c633 chore(l10n): update Czech translations
Currently translated at 100.0% (18 of 18 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/cs/
Via: Weblate
2025-07-15 19:49:26 +05:30
Naveen Singh
6bc8240941 feat: add option to automatically show keyboard in app drawer (#202)
* feat: add option to automatically show keyboard in app drawer

See: https://github.com/FossifyOrg/Launcher/issues/106

* docs: update changelog
2025-07-15 15:29:52 +05:30
dependabot[bot]
e4bde274cb chore(deps): bump com.android.application from 8.11.0 to 8.11.1 (#200)
Bumps com.android.application from 8.11.0 to 8.11.1.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-version: 8.11.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-15 09:13:31 +05:30
dependabot[bot]
b7f5846dd8 chore(deps): bump org.fossify:commons from 4.2.0 to 4.3.0 (#201)
Bumps [org.fossify:commons](https://github.com/FossifyOrg/commons) from 4.2.0 to 4.3.0.
- [Commits](https://github.com/FossifyOrg/commons/compare/4.2.0...4.3.0)

---
updated-dependencies:
- dependency-name: org.fossify:commons
  dependency-version: 4.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-15 09:11:18 +05:30
dependabot[bot]
8b791e0e47 chore(deps): bump com.google.devtools.ksp (#188)
Bumps [com.google.devtools.ksp](https://github.com/google/ksp) from 2.1.21-2.0.2 to 2.2.0-2.0.2.
- [Release notes](https://github.com/google/ksp/releases)
- [Commits](https://github.com/google/ksp/compare/2.1.21-2.0.2...2.2.0-2.0.2)

---
updated-dependencies:
- dependency-name: com.google.devtools.ksp
  dependency-version: 2.2.0-2.0.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-08 12:24:05 +05:30
dependabot[bot]
7c7e4b56e2 chore(deps): bump com.android.application from 8.10.1 to 8.11.0 (#187)
* chore(deps): bump com.android.application from 8.10.1 to 8.11.0

Bumps com.android.application from 8.10.1 to 8.11.0.

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

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

* chore(deps): update gradle wrapper

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Naveen Singh <snaveen935@gmail.com>
2025-07-07 20:11:56 +05:30
dependabot[bot]
c0355fd2e2 chore(deps): bump org.fossify:commons from 4.1.0 to 4.2.0 (#196)
Bumps org.fossify:commons from 4.1.0 to 4.2.0.

---
updated-dependencies:
- dependency-name: org.fossify:commons
  dependency-version: 4.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-04 21:17:06 +05:30
Naveen Singh
535398a3c6 chore: ignore extra translations and update detekt rules
* chore: ignore extra translations in lint

Extra translations are removed automatically by Weblate

* chore: update detekt rules

More compose-friendly

* chore: update lint baselines
2025-07-03 21:16:40 +05:30
dependabot[bot]
e9e7788fed chore(deps): bump org.fossify:commons from 4.0.0 to 4.1.0 (#190)
Bumps [org.fossify:commons](https://github.com/FossifyOrg/commons) from 4.0.0 to 4.1.0.
- [Commits](https://github.com/FossifyOrg/commons/compare/4.0.0...4.1.0)

---
updated-dependencies:
- dependency-name: org.fossify:commons
  dependency-version: 4.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-01 17:26:46 +05:30
fossifybot[bot]
f0b5e51a45 chore: update lint baselines (#191)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-07-01 10:06:32 +05:30
fossifybot[bot]
355e4aa7ad chore(release): v1.1.4 (7) (#185)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-06-28 18:32:08 +05:30
Naveen Singh
562ea3e5f9 fix: check nullability before placing widget (#184)
* fix: check nullability before placing widget

See: https://github.com/FossifyOrg/Launcher/issues/182

* docs: update changelog
2025-06-28 18:27:54 +05:30
dependabot[bot]
7a0741ff6f chore(deps): bump org.fossify:commons from 3.0.5 to 4.0.0 (#177)
* chore(deps): bump org.fossify:commons from 3.0.5 to 4.0.0

Bumps [org.fossify:commons](https://github.com/FossifyOrg/commons) from 3.0.5 to 4.0.0.
- [Commits](https://github.com/FossifyOrg/commons/compare/3.0.5...4.0.0)

---
updated-dependencies:
- dependency-name: org.fossify:commons
  dependency-version: 4.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

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

* fix(i18n): generate locale config automatically

One can be maintained in-app if missing translations become a problem.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Naveen Singh <snaveen935@gmail.com>
2025-06-25 15:45:44 +05:30
dependabot[bot]
dde7a3dbcd chore(deps): bump org.jetbrains.kotlin.android from 2.1.21 to 2.2.0 (#179)
Bumps [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) from 2.1.21 to 2.2.0.
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/v2.2.0/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v2.1.21...v2.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-24 16:36:59 +05:30
Naveen Singh
081d438dd9 chore: update lint rules and baselines (#180) 2025-06-24 16:10:08 +05:30
dependabot[bot]
c62a59c2c7 chore(deps): bump room from 2.7.1 to 2.7.2 (#178)
Bumps `room` from 2.7.1 to 2.7.2.

Updates `androidx.room:room-runtime` from 2.7.1 to 2.7.2

Updates `androidx.room:room-ktx` from 2.7.1 to 2.7.2

Updates `androidx.room:room-compiler` from 2.7.1 to 2.7.2

---
updated-dependencies:
- dependency-name: androidx.room:room-runtime
  dependency-version: 2.7.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: androidx.room:room-ktx
  dependency-version: 2.7.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: androidx.room:room-compiler
  dependency-version: 2.7.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-23 17:04:46 +05:30
fossifybot[bot]
0608d59b00 chore(release): v1.1.3 (6) (#176)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-06-19 17:48:09 +05:30
AND
f2c4c99255 chore(l10n): update Macedonian translations
Currently translated at 5.8% (1 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/mk/
Via: Weblate
2025-06-19 17:47:24 +05:30
elid
8d7458688e chore(l10n): update Hebrew translations
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/he/
Via: Weblate
2025-06-19 17:47:24 +05:30
Oasis Tri
41233ba439 chore(l10n): update French translations
Currently translated at 100.0% (2 of 2 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/fr/
Via: Weblate
2025-06-19 17:47:24 +05:30
OlliesGudh
47dfcc7c6a chore(l10n): update Portuguese (Brazil) translations
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/pt_BR/
Via: Weblate
2025-06-19 17:47:24 +05:30
Naveen Singh
f3f2eb8500 fix: address various errors and crashes (#175)
* fix: avoid passing illegal arguments when converting to bitmap

* fix: handle null shortcutInfo gracefully

* style: format code

* fix: use read-only list to avoid concurrent modifications

* fix: use safe calls to prevent NPEs

* style: format code

* fix: catch exceptions from `AppWidgetHost.stopListening()`

* docs: update changelog
2025-06-19 16:54:55 +05:30
dependabot[bot]
598da18f7d chore(deps): bump fastlane from 2.227.2 to 2.228.0 (#173)
Bumps [fastlane](https://github.com/fastlane/fastlane) from 2.227.2 to 2.228.0.
- [Release notes](https://github.com/fastlane/fastlane/releases)
- [Changelog](https://github.com/fastlane/fastlane/blob/master/CHANGELOG.latest.md)
- [Commits](https://github.com/fastlane/fastlane/compare/fastlane/2.227.2...fastlane/2.228.0)

---
updated-dependencies:
- dependency-name: fastlane
  dependency-version: 2.228.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-17 09:36:07 +05:30
dependabot[bot]
a09315cb60 chore(deps): bump com.google.devtools.ksp (#171)
Bumps [com.google.devtools.ksp](https://github.com/google/ksp) from 2.1.21-2.0.1 to 2.1.21-2.0.2.
- [Release notes](https://github.com/google/ksp/releases)
- [Commits](https://github.com/google/ksp/compare/2.1.21-2.0.1...2.1.21-2.0.2)

---
updated-dependencies:
- dependency-name: com.google.devtools.ksp
  dependency-version: 2.1.21-2.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-17 09:35:22 +05:30
dependabot[bot]
6905d13a65 chore(deps): bump org.fossify:commons from 3.0.3 to 3.0.5 (#172)
Bumps [org.fossify:commons](https://github.com/FossifyOrg/commons) from 3.0.3 to 3.0.5.
- [Commits](https://github.com/FossifyOrg/commons/compare/3.0.3...3.0.5)

---
updated-dependencies:
- dependency-name: org.fossify:commons
  dependency-version: 3.0.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-17 09:35:09 +05:30
dependabot[bot]
afc7d0fea3 chore(deps): bump org.fossify:commons from 2.0.1 to 3.0.3 (#168)
Bumps org.fossify:commons from 2.0.1 to 3.0.3.

---
updated-dependencies:
- dependency-name: org.fossify:commons
  dependency-version: 3.0.3
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-10 10:22:07 +05:30
Naveen Singh
80160e72d1 ci: add fastlane metadata validation and update release trigger
* ci: auto trigger release pull requests when on changelog update

* chore: add code owners

* ci: add fastlane metadata validation
2025-06-09 14:48:55 +05:30
fossifybot[bot]
66c5bb89ef chore(release): v1.1.2 (5) (#164)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-06-06 20:20:32 +05:30
Naveen Singh
c0cfab1a19 docs: update changelog (#163) 2025-06-06 20:13:00 +05:30
Naveen Singh
aa96344a2f ci: update release workflows (#162) 2025-06-06 20:09:53 +05:30
Oasis Tri
aca9945ad8 chore(l10n): update French translations
Currently translated at 100.0% (2 of 2 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/fr/
Via: Weblate
2025-06-06 18:50:34 +05:30
elid
07924360ab chore(l10n): update Hebrew translations
Currently translated at 100.0% (2 of 2 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/he/
Via: Weblate
2025-06-06 18:50:34 +05:30
Flavio F. M
94fa10982a chore(l10n): update Portuguese (Brazil) translations
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/pt_BR/
Via: Weblate
2025-06-06 18:50:34 +05:30
Yurt Page
6359da6d6c chore(l10n): update Russian translations
Currently translated at 50.0% (1 of 2 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/ru/
Via: Weblate
2025-06-06 18:50:34 +05:30
Ammar64
61148a880d fix: enable click on app label in home screen (#141)
* Fix clicking on text doesn't launch app

* Launch apps in home screen when label is clicked

---------

Co-authored-by: Naveen Singh <36371707+naveensingh@users.noreply.github.com>
2025-06-06 18:36:48 +05:30
dependabot[bot]
de83a3e3ac chore(deps): bump org.jetbrains.kotlin.android from 1.9.25 to 2.1.21 (#147)
Bumps [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) from 1.9.25 to 2.1.21.
- [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.9.25...v2.1.21)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlin.android
  dependency-version: 2.1.21
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-29 12:50:40 +05:30
dependabot[bot]
f19d289909 chore(deps): bump room from 2.6.1 to 2.7.1 (#132)
Bumps `room` from 2.6.1 to 2.7.1.

Updates `androidx.room:room-runtime` from 2.6.1 to 2.7.1

Updates `androidx.room:room-ktx` from 2.6.1 to 2.7.1

Updates `androidx.room:room-compiler` from 2.6.1 to 2.7.1

---
updated-dependencies:
- dependency-name: androidx.room:room-runtime
  dependency-version: 2.7.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: androidx.room:room-ktx
  dependency-version: 2.7.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: androidx.room:room-compiler
  dependency-version: 2.7.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-29 12:45:43 +05:30
dependabot[bot]
de14db9cd5 chore(deps): bump com.google.devtools.ksp (#148)
Bumps [com.google.devtools.ksp](https://github.com/google/ksp) from 1.9.25-1.0.20 to 2.1.21-2.0.1.
- [Release notes](https://github.com/google/ksp/releases)
- [Commits](https://github.com/google/ksp/compare/1.9.25-1.0.20...2.1.21-2.0.1)

---
updated-dependencies:
- dependency-name: com.google.devtools.ksp
  dependency-version: 2.1.21-2.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-29 12:44:51 +05:30
dependabot[bot]
cd6a3ec5c9 chore(deps): bump com.android.application from 8.10.0 to 8.10.1 (#158)
Bumps com.android.application from 8.10.0 to 8.10.1.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-version: 8.10.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-29 12:39:23 +05:30
dependabot[bot]
5a56ac9e3b chore(deps): bump org.fossify:commons from 2.0.0 to 2.0.1 (#159)
Bumps org.fossify:commons from 2.0.0 to 2.0.1.

---
updated-dependencies:
- dependency-name: org.fossify:commons
  dependency-version: 2.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-29 12:38:12 +05:30
Naveen Singh
018dd2dd69 ci(dependabot): add jitpack registry for gradle 2025-05-29 11:47:46 +05:30
Naveen Singh
7aeff1fd73 build: move app version to gradle.properties (#155) 2025-05-26 14:12:51 +05:30
dependabot[bot]
b4553b7abe chore(deps): bump io.gitlab.arturbosch.detekt from 1.23.3 to 1.23.8 (#129)
Bumps [io.gitlab.arturbosch.detekt](https://github.com/detekt/detekt) from 1.23.3 to 1.23.8.
- [Release notes](https://github.com/detekt/detekt/releases)
- [Commits](https://github.com/detekt/detekt/compare/v1.23.3...v1.23.8)

---
updated-dependencies:
- dependency-name: io.gitlab.arturbosch.detekt
  dependency-version: 1.23.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-26 12:04:37 +05:30
Naveen Singh
c37b911cf6 ci: use fossifybot github app token 2025-05-22 19:35:05 +05:30
Naveen Singh
5b57af9a2e chore(l10n): remove invalid short description (#151) 2025-05-22 12:04:25 +05:30
elid
1314f56042 chore(l10n): update Hebrew translations
Currently translated at 100.0% (2 of 2 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/he/
Via: Weblate
2025-05-22 12:03:54 +05:30
elid
c31798faf9 chore(l10n): update Hebrew translations
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/he/
Via: Weblate
2025-05-22 12:03:54 +05:30
Naveen Singh
1c02710bff docs(templates): remove local PR template 2025-05-15 00:49:10 +05:30
Naveen Singh
0964e1a448 Merge pull request #144 from FossifyOrg/v1.1.1
chore(release): prepare release v1.1.1
2025-05-14 19:59:44 +05:30
Naveen Singh
cd4688d35c chore(release): bump app version to 1.1.1 (4) 2025-05-14 19:54:44 +05:30
Naveen Singh
a229b99432 chore(release): create fastlane changelog for 1.1.1 2025-05-14 19:54:18 +05:30
Naveen Singh
b483db96c1 docs(changelog): update changelog 2025-05-14 19:52:22 +05:30
GiannosOB
e0a4133bcf chore(l10n): update Greek translations
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/el/
Via: Weblate
2025-05-14 19:42:26 +05:30
Naveen Singh
d055684056 chore(deps): bump org.fossify.commons to 2.0.0 (#143) 2025-05-14 19:41:01 +05:30
Ammar64
0a7283e757 feat: remove launcher settings icon (#138)
* Don't add Launcher settings if it's hidden

* Remove launcher settings icon completely.

Co-authored-by: Naveen Singh <36371707+naveensingh@users.noreply.github.com>

* We don't need to check for that

---------

Co-authored-by: Naveen Singh <36371707+naveensingh@users.noreply.github.com>
2025-05-13 23:43:39 +05:30
Naveen Singh
35ed71bb40 ci: add release commenter and pr labeler workflows 2025-05-13 18:01:16 +05:30
dependabot[bot]
6da6265d73 chore(deps): bump fastlane-plugin-fossify from 1.0.0 to 1.0.2 (#139)
Bumps fastlane-plugin-fossify from 1.0.0 to 1.0.2.

---
updated-dependencies:
- dependency-name: fastlane-plugin-fossify
  dependency-version: 1.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-13 02:30:27 +05:30
Naveen Singh
e23ff94832 ci: update dependabot config to handle github actions 2025-05-07 18:27:15 +05:30
Naveen Singh
66ea58b192 ci: update dependabot config to handle github actions 2025-05-07 18:17:39 +05:30
dependabot[bot]
740471bc1d chore(deps): bump com.android.application from 8.7.3 to 8.9.2 (#128)
Bumps com.android.application from 8.7.3 to 8.9.2.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-07 04:49:02 -04:00
Naveen Singh
3b47d8d79e build(gradle): update gradle wrapper and scripts (#135) 2025-05-07 04:36:48 -04:00
Romeostar
338518e493 Translated using Weblate (Russian)
Currently translated at 0.0% (0 of 2 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/ru/
2025-05-07 08:41:48 +05:30
solokot
7d59256d6c Translated using Weblate (Russian)
Currently translated at 0.0% (0 of 2 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/ru/
2025-05-07 08:41:48 +05:30
Romeostar
245a6d1c03 Translated using Weblate (Russian)
Currently translated at 0.0% (0 of 2 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/ru/
2025-05-07 08:41:48 +05:30
xc.tm
91b42f3758 Translated using Weblate (Hindi)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/hi/
2025-05-07 08:41:48 +05:30
Sylvain Pichon
5eec1d87d5 Translated using Weblate (French)
Currently translated at 100.0% (2 of 2 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/fr/
2025-05-07 08:41:48 +05:30
gacarel
2d01e5c46c Translated using Weblate (Spanish)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/es/
2025-05-07 08:41:48 +05:30
Petri Hämäläinen
eb3f8f6ad3 Translated using Weblate (Finnish)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/fi/
2025-05-07 08:41:48 +05:30
Petri Hämäläinen
4d0ba27326 Translated using Weblate (Finnish)
Currently translated at 70.5% (12 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/fi/
2025-05-07 08:41:48 +05:30
dependabot[bot]
bdd12d84a8 chore(deps): bump fastlane from 2.227.1 to 2.227.2 (#130)
Bumps [fastlane](https://github.com/fastlane/fastlane) from 2.227.1 to 2.227.2.
- [Release notes](https://github.com/fastlane/fastlane/releases)
- [Changelog](https://github.com/fastlane/fastlane/blob/master/CHANGELOG.latest.md)
- [Commits](https://github.com/fastlane/fastlane/compare/fastlane/2.227.1...fastlane/2.227.2)

---
updated-dependencies:
- dependency-name: fastlane
  dependency-version: 2.227.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-06 05:47:11 -04:00
Naveen Singh
bd08d29e7c ci: add dependabot config 2025-05-05 20:17:32 +05:30
Naveen Singh
35fc459787 build: allow builds without signing configuration 2025-05-05 20:17:32 +05:30
Naveen Singh
fc2ade5cea ci: setup release workflow 2025-05-05 20:17:32 +05:30
Naveen Singh
0d81e44d68 style: reformat changelogs as per Keep a Changelog 2025-05-05 20:17:32 +05:30
Naveen Singh
a0cb828f63 build: use env variables for release signing fallback 2025-05-05 20:17:32 +05:30
Naveen Singh
bff35b8b9e refactor(build): rename prepaid product flavor to gplay 2025-05-05 20:17:32 +05:30
Naveen Singh
653a229c6a chore: setup fastlane 2025-05-05 20:17:32 +05:30
Naveen Singh
06bf7062b8 Use workflow templates for minimizer and no-response 2025-04-04 01:54:53 +05:30
Naveen Singh
13d8358cdb Remove invalid short description translations 2025-03-25 21:10:52 +05:30
Naveen Singh
f73958f3c6 Remove title and changelog translations 2025-03-25 20:58:15 +05:30
Naveen Singh
8334136002 Merge pull request #113 from weblate/weblate-fossify-launcher
Translations update from Hosted Weblate
2025-03-25 20:43:07 +05:30
Tekhnikal
0f5ef439c6 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/pt_BR/
2025-03-25 03:56:22 +01:00
Agnieszka C
49a9524b84 Translated using Weblate (Polish)
Currently translated at 50.0% (3 of 6 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/pl/
2025-03-24 10:55:47 +01:00
Aindriú Mac Giolla Eoin
c508ddebd2 Translated using Weblate (Irish)
Currently translated at 100.0% (6 of 6 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/ga/
2025-03-19 14:39:43 +01:00
Sketch6580
c985558a83 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 83.3% (5 of 6 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/zh_Hans/
2025-03-19 14:08:14 +01:00
Josep M. Ferrer
abfdb77e6a Translated using Weblate (Catalan)
Currently translated at 100.0% (6 of 6 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/ca/
2025-03-19 11:29:19 +01:00
Priit Jõerüüt
4a9eaee83b Translated using Weblate (Estonian)
Currently translated at 83.3% (5 of 6 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/et/
2025-03-19 08:59:59 +01:00
Fjuro
90f5db27d5 Translated using Weblate (Czech)
Currently translated at 100.0% (6 of 6 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/cs/
2025-03-19 08:20:22 +01:00
VfBFan
b373839683 Translated using Weblate (German)
Currently translated at 100.0% (6 of 6 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/de/
2025-03-19 08:20:21 +01:00
Sketch6580
95b111b4c8 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 66.6% (4 of 6 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/zh_Hans/
2025-03-19 04:38:50 +01:00
Dan
f61492daa4 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (6 of 6 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/uk/
2025-03-19 03:06:12 +01:00
Naveen Singh
1a44fb5b18 Merge pull request #112 from FossifyOrg/1.1.0
Release 1.1.0
2025-03-19 05:04:42 +05:30
Naveen Singh
6ca12b1d51 Update app version to 1.1.0 (3) 2025-03-19 04:57:28 +05:30
Naveen Singh
b2d9ab317d Update changelog 2025-03-19 04:57:22 +05:30
Naveen Singh
aa88f1d0a7 Mark app beta in app stores
It's very unstable right now.
2025-03-19 04:57:15 +05:30
Naveen Singh
cb3f946c5b Show ripple when preference is clicked 2025-03-19 04:53:03 +05:30
Naveen Singh
48e54d173b Remove uninstall option for self
Conflicts with double tap to lock feature. See https://github.com/FossifyOrg/Launcher/pull/82#issuecomment-2545981280
2025-03-19 04:50:28 +05:30
Naveen Singh
e1e6c978ed Merge pull request #102 from weblate/weblate-fossify-launcher
Translations update from Hosted Weblate
2025-03-19 04:04:26 +05:30
elid
03c080592b Translated using Weblate (Hebrew)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/he/
2025-03-16 06:32:20 +01:00
LaKato
a47918fa9c Translated using Weblate (Esperanto)
Currently translated at 40.0% (2 of 5 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/eo/
2025-03-15 21:36:52 +01:00
LaKato
e9089a72a1 Translated using Weblate (Spanish)
Currently translated at 88.2% (15 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/es/
2025-03-02 04:52:26 +01:00
Mikel Larreategi
a48e1dc610 Translated using Weblate (Basque)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/eu/
2025-02-24 13:45:23 +01:00
LaKato
ff8d2eab1e Translated using Weblate (Esperanto)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/eo/
2025-02-24 10:08:16 +01:00
Bora Atıcı
960348fe82 Translated using Weblate (Turkish)
Currently translated at 80.0% (4 of 5 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/tr/
2025-02-15 18:43:26 +01:00
Bora Atıcı
cf4a1eab30 Translated using Weblate (Turkish)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/tr/
2025-02-15 18:43:25 +01:00
kharrr69
a0bdb4c9ba Translated using Weblate (Indonesian)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/id/
2025-02-05 20:05:41 +01:00
en2sv
bccb5c7996 Translated using Weblate (Swedish)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/sv/
2025-02-02 22:05:31 +01:00
P.O
be66c357a8 Translated using Weblate (Swedish)
Currently translated at 60.0% (3 of 5 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/sv/
2025-01-31 15:36:35 +01:00
moca moca
d6902df7dc Translated using Weblate (Hebrew)
Currently translated at 94.1% (16 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/he/
2025-01-31 15:36:35 +01:00
LaKato
7211448134 Translated using Weblate (Esperanto)
Currently translated at 5.8% (1 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/eo/
2025-01-26 04:05:10 +01:00
Naveen Singh
8c3a74aae9 Merge pull request #87 from weblate/weblate-fossify-launcher
Translations update from Hosted Weblate
2025-01-23 15:06:55 +05:30
Sacha
f96d53a769 Translated using Weblate (French)
Currently translated at 80.0% (4 of 5 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/fr/
2025-01-21 20:03:27 +01:00
Sacha
790dc44002 Translated using Weblate (French)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/fr/
2025-01-21 20:03:27 +01:00
Ricky Tigg
5954afca56 Translated using Weblate (Finnish)
Currently translated at 64.7% (11 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/fi/
2025-01-21 20:03:27 +01:00
Milo Ivir
b178396d0d Translated using Weblate (Croatian)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/hr/
2025-01-21 20:03:26 +01:00
Nicola Bortoletto
79ffabc89a Translated using Weblate (Italian)
Currently translated at 100.0% (5 of 5 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/it/
2025-01-21 20:03:26 +01:00
Aindriú Mac Giolla Eoin
0cc6bbdef8 Translated using Weblate (Irish)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/ga/
2025-01-21 20:03:26 +01:00
Jeff Huang
8420722cef Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/zh_Hant/
2025-01-21 20:03:26 +01:00
VfBFan
583b731ddf Translated using Weblate (German)
Currently translated at 100.0% (5 of 5 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/de/
2025-01-21 20:03:26 +01:00
Sergio Marques
53ca4ff059 Translated using Weblate (Portuguese)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/pt/
2025-01-21 20:03:26 +01:00
Priit Jõerüüt
0e54d7adfa Translated using Weblate (Estonian)
Currently translated at 80.0% (4 of 5 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/et/
2025-01-21 20:03:26 +01:00
Sketch6580
a9298a46c4 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/zh_Hans/
2025-01-21 20:03:26 +01:00
Dan
b4cdc3f80e Translated using Weblate (Ukrainian)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/uk/
2025-01-21 20:03:26 +01:00
solokot
9f86e423d4 Translated using Weblate (Russian)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/ru/
2025-01-21 20:03:26 +01:00
Agnieszka C
005554bd1f Translated using Weblate (Polish)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/pl/
2025-01-21 20:03:26 +01:00
Guillaume
fec78ce229 Translated using Weblate (Dutch)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/nl/
2025-01-21 20:03:26 +01:00
Nicola Bortoletto
a228362711 Translated using Weblate (Italian)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/it/
2025-01-21 20:03:26 +01:00
Ghost of Sparta
66d5248695 Translated using Weblate (Hungarian)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/hu/
2025-01-21 20:03:26 +01:00
Priit Jõerüüt
8bb328f509 Translated using Weblate (Estonian)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/et/
2025-01-21 20:03:26 +01:00
VfBFan
ad1b46dce1 Translated using Weblate (German)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/de/
2025-01-21 20:03:26 +01:00
Fjuro
899863da4c Translated using Weblate (Czech)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/cs/
2025-01-21 20:03:26 +01:00
Josep M. Ferrer
e229b2cfdd Translated using Weblate (Catalan)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/ca/
2025-01-21 20:03:26 +01:00
VfBFan
57c58a55e3 Translated using Weblate (German)
Currently translated at 100.0% (5 of 5 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/de/
2025-01-21 20:03:26 +01:00
Josep M. Ferrer
c8cd31fef8 Translated using Weblate (Catalan)
Currently translated at 100.0% (5 of 5 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/ca/
2025-01-21 20:03:26 +01:00
en2sv
8e81c09e6e Translated using Weblate (Swedish)
Currently translated at 40.0% (2 of 5 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/sv/
2025-01-21 20:03:26 +01:00
Aindriú Mac Giolla Eoin
db5bf9fbdd Translated using Weblate (Irish)
Currently translated at 100.0% (5 of 5 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/ga/
2025-01-21 20:03:26 +01:00
Dan
089da3a95f Translated using Weblate (Ukrainian)
Currently translated at 100.0% (5 of 5 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/uk/
2025-01-21 20:03:26 +01:00
Fjuro
e0e0ce7696 Translated using Weblate (Czech)
Currently translated at 100.0% (5 of 5 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/cs/
2025-01-21 20:03:26 +01:00
Naveen Singh
d05710b977 Remove optional donation checklist item 2025-01-22 00:30:43 +05:30
Naveen Singh
b0bc730e94 Fix typo in CONTRIBUTING.md 2025-01-21 14:00:22 +05:30
Naveen Singh
13256eb237 Fix typos in issue templates 2025-01-17 17:57:13 +05:30
Naveen Singh
8387e6c8d6 Merge pull request #82 from rondao/double-tap-to-lock
Add double tap to lock the phone
2025-01-02 14:26:53 +05:30
Naveen Singh
99a60fa148 Update double tap to lock strings 2025-01-02 14:23:59 +05:30
Rafael Rondão
74adfd1fff Fix double tap to lock screen button not working
The value of 'isAdminActive' was only read during
'setupDoubleTapToLock', and not when clicking
the button.

So when clicking the settings button, the value
of 'isAdminActive' was out of date.

Signed-off-by: Rafael Rondão <rafael.rondao@gmail.com>
2025-01-01 15:11:11 -03:00
Rafael Rondão
734d483bc2 Move Double Tap to Lock menu at end of General
Signed-off-by: Rafael Rondão <rafael.rondao@gmail.com>
2025-01-01 15:09:52 -03:00
Rafael Rondão
8315774f1e Refactor strings for Double Tap to Lock feature
Include "the screen" for better explanation of the feature.

Co-authored-by: Agnieszka C <85929121+Aga-C@users.noreply.github.com>
2025-01-01 15:09:47 -03:00
Rafael Rondão
148f2d98c8 Add double tap to lock the phone
Locking the phone requires admin permission.

Signed-off-by: Rafael Rondão <rafael.rondao@gmail.com>
2025-01-01 15:09:40 -03:00
152 changed files with 3023 additions and 1609 deletions

View File

@@ -0,0 +1,2 @@
# Auto-generated file. DO NOT EDIT.
1.7.0

View File

@@ -18,7 +18,7 @@ body:
required: true
- label: "I made sure that there are **no existing issues** - [open](https://github.com/FossifyOrg/Launcher/issues) or [closed](https://github.com/FossifyOrg/Launcher/issues?q=is%3Aissue+is%3Aclosed) - to which I could contribute my information."
required: true
- label: "I made sure that there are **no existing discussions** - [open](https://github.com/FossifyOrg/Launcher/discussions) or [closed](https://github.com/FossifyOrg/Launcher/discussions?discussions_q=is%3Aclosed) - to which I could contribute my information."
- label: "I made sure that there are **no existing discussions** - [open](https://github.com/orgs/FossifyOrg/discussions?discussions_q=is:open+label:launcher) or [closed](https://github.com/orgs/FossifyOrg/discussions?discussions_q=is:closed+label:launcher) - to which I could contribute my information."
required: true
- label: "I have read the FAQs inside the app (Menu -> About -> FAQs) and my problem isn't listed."
required: true
@@ -77,9 +77,6 @@ body:
What did you do for the bug to show up?
If you can't cause the bug to show up again reliably (and hence don't have a proper set of steps to give us), please still try to give as many details as possible on how you think you encountered the bug.
⚠️ Please **DO NOT** add links to SimpleMobileTools issues as they can be deleted at any time. Instead, copy-paste any useful information or instructions manually.
placeholder: |
1. Go to '...'
2. Click on '....'
@@ -112,7 +109,7 @@ body:
description: |
A picture or video is worth a thousand words.
If applicable, drag and drop screenshots or a screen recording to help explain your problem. If your file is too big for Github to accept, try to compress it (ZIP file), or feel free to paste a link to an image/video hoster here instead.
If applicable, drag and drop screenshots or a screen recording to help explain your problem. If your file is too big for Github to accept, try to compress it (ZIP file), or feel free to paste a link to an image/video instead.
- type: textarea
id: additional-information

View File

@@ -1,5 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Questions
url: https://github.com/FossifyOrg/Launcher/discussions
url: https://github.com/orgs/FossifyOrg/discussions
about: Please ask and answer questions here.

View File

@@ -16,18 +16,16 @@ body:
options:
- label: "I made sure that there are **no existing issues** - [open](https://github.com/FossifyOrg/Launcher/issues) or [closed](https://github.com/FossifyOrg/Launcher/issues?q=is%3Aissue+is%3Aclosed) - to which I could contribute my information."
required: true
- label: "I made sure that there are **no existing discussions** - [open](https://github.com/FossifyOrg/Launcher/discussions) or [closed](https://github.com/FossifyOrg/Launcher/discussions?discussions_q=is%3Aclosed) - to which I could contribute my information."
- label: "I made sure that there are **no existing discussions** - [open](https://github.com/orgs/FossifyOrg/discussions?discussions_q=is:open+label:launcher) or [closed](https://github.com/orgs/FossifyOrg/discussions?discussions_q=is:closed+label:launcher) - to which I could contribute my information."
required: true
- label: "I have read the FAQs inside the app (Menu -> About -> FAQs) and my problem isn't listed."
required: true
- label: "**I have taken the time to fill in all the required details. I understand that the bug report will be dismissed otherwise.**"
- label: "**I have taken the time to fill in all the required details. I understand that the request will be dismissed otherwise.**"
required: true
- label: "This issue contains only one feature request."
required: true
- label: "I have read and understood the [contribution guidelines](https://github.com/FossifyOrg/Launcher/blob/main/CONTRIBUTING.md)."
required: true
- label: "I optionally [donated](https://fossify.org/donate) to support the Fossify mission."
required: false
- type: textarea
id: feature-description
@@ -35,8 +33,6 @@ body:
label: Feature description
description: |
Explain how you want the app's look or behavior to change to suit your needs.
⚠️ Please **DO NOT** add links to SimpleMobileTools issues as they can be deleted at any time. Instead, copy-paste any useful information manually.
validations:
required: true

View File

@@ -1,28 +0,0 @@
<!-- Hey there. Thank you so much for improving Fossify. Please consider filling out the details :)-->
#### What is it?
- [ ] Bugfix
- [ ] Feature
- [ ] Codebase improvement
#### Description of the changes in your PR
<!-- Bullet points are preferred. The following is an example -->
- Updated colors
- Update strings
- Added documentation
#### Before/After Screenshots/Screen Record
<!-- If your PR changes the app's UI in any way, consider including screenshots or a video showing exactly what changed, so that developers and users can pinpoint it easily. Delete this if it doesn't apply to your PR.-->
- Before:
- After:
#### Fixes the following issue(s)
<!-- Prefix issues with "Fixes" so that GitHub closes them when the PR is merged (note that each "Fixes #" should be in its own item). Also add any other relevant links. -->
- Fixes #
#### Relies on the following changes
<!-- Delete this if it doesn't apply to your PR. -->
-
#### Acknowledgement
- [ ] I read the [contribution guidelines](https://github.com/FossifyOrg/Launcher/blob/main/CONTRIBUTING.md).

46
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,46 @@
version: 2
registries:
maven-google:
type: maven-repository
url: "https://dl.google.com/dl/android/maven2/"
maven-central:
type: maven-repository
url: "https://repo.maven.apache.org/maven2"
jitpack:
type: maven-repository
url: "https://jitpack.io"
updates:
- package-ecosystem: "bundler"
directory: "/"
schedule:
interval: "weekly"
commit-message:
prefix: "chore"
prefix-development: "chore"
include: "scope"
- package-ecosystem: "gradle"
directory: "/"
registries:
- maven-central
- maven-google
- jitpack
schedule:
interval: "weekly"
commit-message:
prefix: "chore"
prefix-development: "chore"
include: "scope"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
commit-message:
prefix: "chore"
prefix-development: "chore"
include: "scope"

View File

@@ -1,148 +0,0 @@
/*
* Script for minimizing big images (jpg,gif,png) when they are uploaded to GitHub and not edited otherwise.
* Source: https://github.com/TeamNewPipe/NewPipe/blob/dev/.github/workflows/image-minimizer.js
*/
module.exports = async ({github, context}) => {
const IGNORE_KEY = '<!-- IGNORE IMAGE MINIFY -->';
const IGNORE_ALT_NAME_END = 'ignoreImageMinify';
// Targeted maximum height
const IMG_MAX_HEIGHT_PX = 400;
// maximum width of GitHub issues/comments
const IMG_MAX_WIDTH_PX = 800;
// all images that have a lower aspect ratio (-> have a smaller width) than this will be minimized
const MIN_ASPECT_RATIO = IMG_MAX_WIDTH_PX / IMG_MAX_HEIGHT_PX
// Get the body of the image
let initialBody = null;
if (context.eventName == 'issue_comment') {
initialBody = context.payload.comment.body;
} else if (context.eventName == 'issues') {
initialBody = context.payload.issue.body;
} else if (context.eventName == 'pull_request_target') {
initialBody = context.payload.pull_request.body;
} else {
console.log('Aborting: No body found');
return;
}
console.log(`Found body: \n${initialBody}\n`);
// Check if we should ignore the currently processing element
if (initialBody.includes(IGNORE_KEY)) {
console.log('Ignoring: Body contains IGNORE_KEY');
return;
}
// Regex for finding images (simple variant) ![ALT_TEXT](https://*.githubusercontent.com/<number>/<variousHexStringsAnd->.<fileExtension>)
const REGEX_USER_CONTENT_IMAGE_LOOKUP = /\!\[(.*)\]\((https:\/\/[-a-z0-9]+\.githubusercontent\.com\/\d+\/[-0-9a-f]{32,512}\.(jpg|gif|png))\)/gm;
const REGEX_ASSETS_IMAGE_LOCKUP = /\!\[(.*)\]\((https:\/\/github\.com\/user-attachments\/assets\/[\-0-9a-f]{36,})\)/gm;
// Check if we found something
let foundSimpleImages = REGEX_USER_CONTENT_IMAGE_LOOKUP.test(initialBody)
|| REGEX_ASSETS_IMAGE_LOCKUP.test(initialBody);
if (!foundSimpleImages) {
console.log('Found no simple images to process');
return;
}
console.log('Found at least one simple image to process');
// Require the probe lib for getting the image dimensions
const probe = require('probe-image-size');
var wasMatchModified = false;
// Try to find and replace the images with minimized ones
let newBody = await replaceAsync(initialBody, REGEX_USER_CONTENT_IMAGE_LOOKUP, minimizeAsync);
newBody = await replaceAsync(newBody, REGEX_ASSETS_IMAGE_LOCKUP, minimizeAsync);
if (!wasMatchModified) {
console.log('Nothing was modified. Skipping update');
return;
}
// Update the corresponding element
if (context.eventName == 'issue_comment') {
console.log('Updating comment with id', context.payload.comment.id);
await github.rest.issues.updateComment({
comment_id: context.payload.comment.id,
owner: context.repo.owner,
repo: context.repo.repo,
body: newBody
})
} else if (context.eventName == 'issues') {
console.log('Updating issue', context.payload.issue.number);
await github.rest.issues.update({
issue_number: context.payload.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: newBody
});
} else if (context.eventName == 'pull_request_target') {
console.log('Updating pull request', context.payload.pull_request.number);
await github.rest.pulls.update({
pull_number: context.payload.pull_request.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: newBody
});
}
// Async replace function from https://stackoverflow.com/a/48032528
async function replaceAsync(str, regex, asyncFn) {
const promises = [];
str.replace(regex, (match, ...args) => {
const promise = asyncFn(match, ...args);
promises.push(promise);
});
const data = await Promise.all(promises);
return str.replace(regex, () => data.shift());
}
async function minimizeAsync(match, g1, g2) {
console.log(`Found match '${match}'`);
if (g1.endsWith(IGNORE_ALT_NAME_END)) {
console.log(`Ignoring match '${match}': IGNORE_ALT_NAME_END`);
return match;
}
let probeAspectRatio = 0;
let shouldModify = false;
try {
console.log(`Probing ${g2}`);
let probeResult = await probe(g2);
if (probeResult == null) {
throw 'No probeResult';
}
if (probeResult.hUnits != 'px') {
throw `Unexpected probeResult.hUnits (expected px but got ${probeResult.hUnits})`;
}
if (probeResult.height <= 0) {
throw `Unexpected probeResult.height (height is invalid: ${probeResult.height})`;
}
if (probeResult.wUnits != 'px') {
throw `Unexpected probeResult.wUnits (expected px but got ${probeResult.wUnits})`;
}
if (probeResult.width <= 0) {
throw `Unexpected probeResult.width (width is invalid: ${probeResult.width})`;
}
console.log(`Probing resulted in ${probeResult.width}x${probeResult.height}px`);
probeAspectRatio = probeResult.width / probeResult.height;
shouldModify = probeResult.height > IMG_MAX_HEIGHT_PX && probeAspectRatio < MIN_ASPECT_RATIO;
} catch(e) {
console.log('Probing failed:', e);
// Immediately abort
return match;
}
if (shouldModify) {
wasMatchModified = true;
console.log(`Modifying match '${match}'`);
return `<img alt="${g1}" src="${g2}" width=${Math.min(600, Math.floor(IMG_MAX_HEIGHT_PX * probeAspectRatio))} />`;
}
console.log(`Match '${match}' is ok/will not be modified`);
return match;
}
}

View File

@@ -9,26 +9,6 @@ on:
types: [opened, edited]
jobs:
try-minimize:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
token: ${{ secrets.FOSSIFYBOT_TOKEN }}
- uses: actions/setup-node@v4
with:
node-version: 16
- name: Install probe-image-size
run: npm i probe-image-size@7.2.3 --ignore-scripts
- name: Minimize simple images
uses: actions/github-script@v7
timeout-minutes: 3
with:
github-token: ${{ secrets.FOSSIFYBOT_TOKEN }}
script: |
const script = require('.github/workflows/image-minimizer.js');
await script({github, context});
call-image-minimizer-workflow:
uses: FossifyOrg/.github/.github/workflows/image-minimizer.yml@main
secrets: inherit

View File

@@ -1,24 +1,11 @@
name: no-response
name: No Response
on:
schedule:
- cron: '0 0 * * *' # Runs daily at midnight
- cron: "0 12 * * *" # Runs daily at noon
workflow_dispatch:
jobs:
noResponse:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v9
with:
repo-token: ${{ secrets.FOSSIFYBOT_TOKEN }}
days-before-stale: -1
# Number of days of inactivity before an issue is closed for lack of response.
days-before-close: 14
only-labels: 'waiting for author'
stale-issue-label: 'waiting for author'
stale-pr-label: 'waiting for author'
remove-stale-when-updated: false
ignore-updates: true
close-issue-message: This issue has been automatically closed due to inactivity. We requested additional information but have not received a response from the original author. Without the requested details, we cannot proceed. If you have or find the information needed, please comment so we can reopen the issue.
close-pr-message: This pull request has been automatically closed due to inactivity. We requested additional information but have not received a response from the original author. Without the requested details, we cannot proceed. If you have the needed information or updates, please reopen the PR or comment so we can continue the review.
call-no-response-workflow:
uses: FossifyOrg/.github/.github/workflows/no-response.yml@main
secrets: inherit

10
.github/workflows/pr-labeler.yml vendored Normal file
View File

@@ -0,0 +1,10 @@
name: PR Labeler
on:
pull_request_target:
types: [opened]
jobs:
call-pr-labeler-workflow:
uses: FossifyOrg/.github/.github/workflows/pr-labeler.yml@main
secrets: inherit

View File

@@ -0,0 +1,15 @@
name: Prepare Release PR
on:
repository_dispatch:
types: [prepare-release]
workflow_dispatch:
push:
branches: [main]
paths:
- "CHANGELOG.md"
jobs:
call-release-pr:
uses: FossifyOrg/.github/.github/workflows/prepare-release-pr.yml@main
secrets: inherit

17
.github/workflows/release.yml vendored Normal file
View File

@@ -0,0 +1,17 @@
name: Release
on:
push:
branches: [ main ]
paths:
- ".fossify/release-marker.txt"
jobs:
call-release-workflow:
name: Release
uses: FossifyOrg/.github/.github/workflows/release.yml@main
with:
track: ${{ vars.GPLAY_TRACK || 'beta' }}
rollout: ${{ vars.GPLAY_ROLLOUT || '0.05' }}
validate_only: ${{ vars.GPLAY_DRY_RUN == 'true' }}
secrets: inherit

View File

@@ -2,9 +2,10 @@ name: Testing build (on PR)
on:
pull_request:
branches: [ main ]
types: [ labeled, opened, synchronize, reopened ]
branches: [main]
types: [labeled, opened, synchronize, reopened]
jobs:
call-testing-build-workflow:
uses: FossifyOrg/.github/.github/workflows/testing-build.yml@main
secrets: inherit

13
.github/workflows/update-commons.yml vendored Normal file
View File

@@ -0,0 +1,13 @@
name: Update Fossify Commons
on:
repository_dispatch:
types: [update-commons]
workflow_dispatch:
schedule:
- cron: "0 6 * * 0"
jobs:
update-commons:
uses: FossifyOrg/.github/.github/workflows/update-commons.yml@main
secrets: inherit

View File

@@ -0,0 +1,13 @@
name: Update lint baselines
on:
repository_dispatch:
types: [update-lint-baselines]
workflow_dispatch:
schedule:
- cron: "0 0 1 * *"
jobs:
update-lint-baselines:
uses: FossifyOrg/.github/.github/workflows/update-lint-baselines.yml@main
secrets: inherit

View File

@@ -0,0 +1,15 @@
name: Fastlane metadata validation
on:
push:
branches: [main]
paths:
- "fastlane/**"
pull_request:
branches: [main]
paths:
- "fastlane/**"
jobs:
validate:
uses: FossifyOrg/.github/.github/workflows/validate-fastlane-metadata.yml@main

4
.gitignore vendored
View File

@@ -9,5 +9,5 @@
keystore.jks
keystore.properties
fastlane/fastlane.json
Gemfile
Gemfile.lock
fastlane/report.xml
.kotlin/

View File

@@ -1,16 +1,124 @@
Changelog
==========
# Changelog
All notable changes to this project will be documented in this file.
Version 1.0.0 *(2025-01-01)*
----------------------------
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
* Fixed scrolling performance issues (https://github.com/FossifyOrg/Launcher/issues/65)
* Fixed various issues related to widgets (https://github.com/FossifyOrg/Launcher/issues/5, https://github.com/FossifyOrg/Launcher/issues/44, https://github.com/FossifyOrg/Launcher/issues/74)
* Other minor bug fixes and improvements
* Added more translations
## [Unreleased]
## [1.7.0] - 2025-12-16
### Changed
- Updated translations
Version 1.0.0 *(2024-10-16)*
----------------------------
### Fixed
- Fixed invalid search results after opening and closing apps ([#100])
* Initial release
## [1.6.0] - 2025-11-30
### Changed
- Search now ignores accents and diacritics ([#282])
- Updated translations
### Fixed
- Fixed overlap between app drawer and status bar ([#277])
## [1.5.0] - 2025-10-29
### Changed
- Compatibility updates for Android 15 & 16
- Updated translations
## [1.4.0] - 2025-09-12
### Changed
- Pressing home button on home screen now returns to the first page ([#170])
- Updated translations
## [1.3.0] - 2025-09-01
### Changed
- The app will now prompt to set as default launcher on startup ([#230])
- Updated translations
### Fixed
- Fixed home screen hover events not working with TalkBack ([#234])
## [1.2.0] - 2025-07-15
### Added
- Option to show keyboard automatically in app drawer ([#106])
### Changed
- Updated translations
## [1.1.4] - 2025-06-28
### Fixed
- Addressed crash on startup due to widgets ([#182])
## [1.1.3] - 2025-06-19
### Changed
- Updated translations
### Fixed
- Addressed frequently occurring crashes ([#6])
## [1.1.2] - 2025-06-06
### Changed
- Updated translations
### Fixed
- Clicking home screen app labels now works as expected ([#115])
## [1.1.1] - 2025-05-14
### Changed
- Updated translations
### Removed
- Removed redundant launcher settings icon from the app drawer ([#51])
## [1.1.0] - 2025-03-19
### Added
- Added double tap to lock screen feature ([#63])
### Changed
- Added more translations
## [1.0.1] - 2025-01-01
### Changed
- Other minor bug fixes and improvements
- Added more translations
### Fixed
- Fixed scrolling performance issues ([#65])
- Fixed various issues related to widgets ([#5], [#44], [#74])
## [1.0.0] - 2024-10-16
### Added
- Initial release
[#5]: https://github.com/FossifyOrg/Launcher/issues/5
[#6]: https://github.com/FossifyOrg/Launcher/issues/6
[#44]: https://github.com/FossifyOrg/Launcher/issues/44
[#51]: https://github.com/FossifyOrg/Launcher/issues/51
[#63]: https://github.com/FossifyOrg/Launcher/issues/63
[#65]: https://github.com/FossifyOrg/Launcher/issues/65
[#74]: https://github.com/FossifyOrg/Launcher/issues/74
[#100]: https://github.com/FossifyOrg/Launcher/issues/100
[#106]: https://github.com/FossifyOrg/Launcher/issues/106
[#115]: https://github.com/FossifyOrg/Launcher/issues/115
[#170]: https://github.com/FossifyOrg/Launcher/issues/170
[#182]: https://github.com/FossifyOrg/Launcher/issues/182
[#230]: https://github.com/FossifyOrg/Launcher/issues/230
[#234]: https://github.com/FossifyOrg/Launcher/issues/234
[#277]: https://github.com/FossifyOrg/Launcher/issues/277
[#282]: https://github.com/FossifyOrg/Launcher/issues/282
[Unreleased]: https://github.com/FossifyOrg/Launcher/compare/1.7.0...HEAD
[1.7.0]: https://github.com/FossifyOrg/Launcher/compare/1.6.0...1.7.0
[1.6.0]: https://github.com/FossifyOrg/Launcher/compare/1.5.0...1.6.0
[1.5.0]: https://github.com/FossifyOrg/Launcher/compare/1.4.0...1.5.0
[1.4.0]: https://github.com/FossifyOrg/Launcher/compare/1.3.0...1.4.0
[1.3.0]: https://github.com/FossifyOrg/Launcher/compare/1.2.0...1.3.0
[1.2.0]: https://github.com/FossifyOrg/Launcher/compare/1.1.4...1.2.0
[1.1.4]: https://github.com/FossifyOrg/Launcher/compare/1.1.3...1.1.4
[1.1.3]: https://github.com/FossifyOrg/Launcher/compare/1.1.2...1.1.3
[1.1.2]: https://github.com/FossifyOrg/Launcher/compare/1.1.1...1.1.2
[1.1.1]: https://github.com/FossifyOrg/Launcher/compare/1.1.0...1.1.1
[1.1.0]: https://github.com/FossifyOrg/Launcher/compare/1.0.1...1.1.0
[1.0.1]: https://github.com/FossifyOrg/Launcher/compare/1.0.0...1.0.1
[1.0.0]: https://github.com/FossifyOrg/Launcher/releases/tag/1.0.0

1
CODEOWNERS Normal file
View File

@@ -0,0 +1 @@
* @naveensingh

View File

@@ -2,7 +2,7 @@
Before you report something, read the reporting rules [here](https://github.com/FossifyOrg/General-Discussion#how-do-i-suggest-an-improvement-ask-a-question-or-report-an-issue) please.
### Contributing as a developer
Some instructions about code style and everything that has to be done to increase the change of your code getting accepted can be found at the [General Discussion](https://github.com/FossifyOrg/General-Discussion#contribution-rules-for-developers) section.
Some instructions about code style and everything that has to be done to increase the chance of your code getting accepted can be found at the [General Discussion](https://github.com/FossifyOrg/General-Discussion#contribution-rules-for-developers) section.
### Contributing as a non developer
In case you just want to for example improve a translation, you can find the way of doing it [here](https://github.com/FossifyOrg/General-Discussion#how-can-i-suggest-an-edit-to-a-file).

4
Gemfile Normal file
View File

@@ -0,0 +1,4 @@
source "https://rubygems.org"
gem "fastlane"
gem "fastlane-plugin-fossify", "~> 1.0"

237
Gemfile.lock Normal file
View File

@@ -0,0 +1,237 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.8)
abbrev (0.1.2)
addressable (2.8.8)
public_suffix (>= 2.0.2, < 8.0)
artifactory (3.0.17)
atomos (0.1.3)
aws-eventstream (1.4.0)
aws-partitions (1.1198.0)
aws-sdk-core (3.240.0)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.992.0)
aws-sigv4 (~> 1.9)
base64
bigdecimal
jmespath (~> 1, >= 1.6.1)
logger
aws-sdk-kms (1.118.0)
aws-sdk-core (~> 3, >= 3.239.1)
aws-sigv4 (~> 1.5)
aws-sdk-s3 (1.208.0)
aws-sdk-core (~> 3, >= 3.234.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.5)
aws-sigv4 (1.12.1)
aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4)
base64 (0.2.0)
bigdecimal (4.0.1)
claide (1.1.0)
colored (1.2)
colored2 (3.1.2)
commander (4.6.0)
highline (~> 2.0.0)
csv (3.3.5)
declarative (0.0.20)
digest-crc (0.7.0)
rake (>= 12.0.0, < 14.0.0)
domain_name (0.6.20240107)
dotenv (2.8.1)
emoji_regex (3.2.3)
excon (0.112.0)
faraday (1.10.4)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
faraday-httpclient (~> 1.0)
faraday-multipart (~> 1.0)
faraday-net_http (~> 1.0)
faraday-net_http_persistent (~> 1.0)
faraday-patron (~> 1.0)
faraday-rack (~> 1.0)
faraday-retry (~> 1.0)
ruby2_keywords (>= 0.0.4)
faraday-cookie_jar (0.0.8)
faraday (>= 0.8.0)
http-cookie (>= 1.0.0)
faraday-em_http (1.0.0)
faraday-em_synchrony (1.0.1)
faraday-excon (1.1.0)
faraday-httpclient (1.0.1)
faraday-multipart (1.1.1)
multipart-post (~> 2.0)
faraday-net_http (1.0.2)
faraday-net_http_persistent (1.2.0)
faraday-patron (1.0.0)
faraday-rack (1.0.0)
faraday-retry (1.0.3)
faraday_middleware (1.2.1)
faraday (~> 1.0)
fastimage (2.4.0)
fastlane (2.230.0)
CFPropertyList (>= 2.3, < 4.0.0)
abbrev (~> 0.1.2)
addressable (>= 2.8, < 3.0.0)
artifactory (~> 3.0)
aws-sdk-s3 (~> 1.0)
babosa (>= 1.0.3, < 2.0.0)
base64 (~> 0.2.0)
bundler (>= 1.12.0, < 3.0.0)
colored (~> 1.2)
commander (~> 4.6)
csv (~> 3.3)
dotenv (>= 2.1.1, < 3.0.0)
emoji_regex (>= 0.1, < 4.0)
excon (>= 0.71.0, < 1.0.0)
faraday (~> 1.0)
faraday-cookie_jar (~> 0.0.6)
faraday_middleware (~> 1.0)
fastimage (>= 2.1.0, < 3.0.0)
fastlane-sirp (>= 1.0.0)
gh_inspector (>= 1.1.2, < 2.0.0)
google-apis-androidpublisher_v3 (~> 0.3)
google-apis-playcustomapp_v1 (~> 0.1)
google-cloud-env (>= 1.6.0, < 2.0.0)
google-cloud-storage (~> 1.31)
highline (~> 2.0)
http-cookie (~> 1.0.5)
json (< 3.0.0)
jwt (>= 2.1.0, < 3)
logger (>= 1.6, < 2.0)
mini_magick (>= 4.9.4, < 5.0.0)
multipart-post (>= 2.0.0, < 3.0.0)
mutex_m (~> 0.3.0)
naturally (~> 2.2)
nkf (~> 0.2.0)
optparse (>= 0.1.1, < 1.0.0)
plist (>= 3.1.0, < 4.0.0)
rubyzip (>= 2.0.0, < 3.0.0)
security (= 0.1.5)
simctl (~> 1.6.3)
terminal-notifier (>= 2.0.0, < 3.0.0)
terminal-table (~> 3)
tty-screen (>= 0.6.3, < 1.0.0)
tty-spinner (>= 0.8.0, < 1.0.0)
word_wrap (~> 1.0.0)
xcodeproj (>= 1.13.0, < 2.0.0)
xcpretty (~> 0.4.1)
xcpretty-travis-formatter (>= 0.0.3, < 2.0.0)
fastlane-plugin-fossify (1.0.2)
abbrev
fastlane-sirp (1.0.0)
sysrandom (~> 1.0)
gh_inspector (1.1.3)
google-apis-androidpublisher_v3 (0.54.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-core (0.11.3)
addressable (~> 2.5, >= 2.5.1)
googleauth (>= 0.16.2, < 2.a)
httpclient (>= 2.8.1, < 3.a)
mini_mime (~> 1.0)
representable (~> 3.0)
retriable (>= 2.0, < 4.a)
rexml
google-apis-iamcredentials_v1 (0.17.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-playcustomapp_v1 (0.13.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-storage_v1 (0.31.0)
google-apis-core (>= 0.11.0, < 2.a)
google-cloud-core (1.8.0)
google-cloud-env (>= 1.0, < 3.a)
google-cloud-errors (~> 1.0)
google-cloud-env (1.6.0)
faraday (>= 0.17.3, < 3.0)
google-cloud-errors (1.5.0)
google-cloud-storage (1.47.0)
addressable (~> 2.8)
digest-crc (~> 0.4)
google-apis-iamcredentials_v1 (~> 0.1)
google-apis-storage_v1 (~> 0.31.0)
google-cloud-core (~> 1.6)
googleauth (>= 0.16.2, < 2.a)
mini_mime (~> 1.0)
googleauth (1.8.1)
faraday (>= 0.17.3, < 3.a)
jwt (>= 1.4, < 3.0)
multi_json (~> 1.11)
os (>= 0.9, < 2.0)
signet (>= 0.16, < 2.a)
highline (2.0.3)
http-cookie (1.0.8)
domain_name (~> 0.5)
httpclient (2.9.0)
mutex_m
jmespath (1.6.2)
json (2.18.0)
jwt (2.10.2)
base64
logger (1.7.0)
mini_magick (4.13.2)
mini_mime (1.1.5)
multi_json (1.18.0)
multipart-post (2.4.1)
mutex_m (0.3.0)
nanaimo (0.4.0)
naturally (2.3.0)
nkf (0.2.0)
optparse (0.8.1)
os (1.1.4)
plist (3.7.2)
public_suffix (7.0.0)
rake (13.3.1)
representable (3.2.0)
declarative (< 0.1.0)
trailblazer-option (>= 0.1.1, < 0.2.0)
uber (< 0.2.0)
retriable (3.1.2)
rexml (3.4.4)
rouge (3.28.0)
ruby2_keywords (0.0.5)
rubyzip (2.4.1)
security (0.1.5)
signet (0.21.0)
addressable (~> 2.8)
faraday (>= 0.17.5, < 3.a)
jwt (>= 1.5, < 4.0)
multi_json (~> 1.10)
simctl (1.6.10)
CFPropertyList
naturally
sysrandom (1.0.5)
terminal-notifier (2.0.0)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
trailblazer-option (0.1.2)
tty-cursor (0.7.1)
tty-screen (0.8.2)
tty-spinner (0.9.3)
tty-cursor (~> 0.7)
uber (0.1.0)
unicode-display_width (2.6.0)
word_wrap (1.0.0)
xcodeproj (1.27.0)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
nanaimo (~> 0.4.0)
rexml (>= 3.3.6, < 4.0)
xcpretty (0.4.1)
rouge (~> 3.28.0)
xcpretty-travis-formatter (1.0.1)
xcpretty (~> 0.2, >= 0.0.7)
PLATFORMS
ruby
x86_64-linux
DEPENDENCIES
fastlane
fastlane-plugin-fossify (~> 1.0)
BUNDLED WITH
2.6.8

2
app/.gitignore vendored
View File

@@ -1,3 +1,3 @@
/build
/foss
/prepaid
/gplay

View File

@@ -1,3 +1,4 @@
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import org.jetbrains.kotlin.konan.properties.Properties
import java.io.FileInputStream
@@ -15,15 +16,22 @@ if (keystorePropertiesFile.exists()) {
keystoreProperties.load(FileInputStream(keystorePropertiesFile))
}
fun hasSigningVars(): Boolean {
return providers.environmentVariable("SIGNING_KEY_ALIAS").orNull != null
&& providers.environmentVariable("SIGNING_KEY_PASSWORD").orNull != null
&& providers.environmentVariable("SIGNING_STORE_FILE").orNull != null
&& providers.environmentVariable("SIGNING_STORE_PASSWORD").orNull != null
}
android {
compileSdk = project.libs.versions.app.build.compileSDKVersion.get().toInt()
defaultConfig {
applicationId = libs.versions.app.version.appId.get()
applicationId = project.property("APP_ID").toString()
minSdk = project.libs.versions.app.build.minimumSDK.get().toInt()
targetSdk = project.libs.versions.app.build.targetSDK.get().toInt()
versionName = project.libs.versions.app.version.versionName.get()
versionCode = project.libs.versions.app.version.versionCode.get().toInt()
versionName = project.property("VERSION_NAME").toString()
versionCode = project.property("VERSION_CODE").toString().toInt()
setProperty("archivesBaseName", "launcher-$versionCode")
ksp {
arg("room.schemaLocation", "$projectDir/schemas")
@@ -38,6 +46,15 @@ android {
storeFile = file(keystoreProperties.getProperty("storeFile"))
storePassword = keystoreProperties.getProperty("storePassword")
}
} else if (hasSigningVars()) {
register("release") {
keyAlias = providers.environmentVariable("SIGNING_KEY_ALIAS").get()
keyPassword = providers.environmentVariable("SIGNING_KEY_PASSWORD").get()
storeFile = file(providers.environmentVariable("SIGNING_STORE_FILE").get())
storePassword = providers.environmentVariable("SIGNING_STORE_PASSWORD").get()
}
} else {
logger.warn("Warning: No signing config found. Build will be unsigned.")
}
}
@@ -57,7 +74,7 @@ android {
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
if (keystorePropertiesFile.exists()) {
if (keystorePropertiesFile.exists() || hasSigningVars()) {
signingConfig = signingConfigs.getByName("release")
}
}
@@ -67,7 +84,7 @@ android {
productFlavors {
register("core")
register("foss")
register("prepaid")
register("gplay")
}
sourceSets {
@@ -84,22 +101,29 @@ android {
includeInApk = false
}
tasks.withType<KotlinCompile> {
kotlinOptions.jvmTarget = project.libs.versions.app.build.kotlinJVMTarget.get()
androidResources {
@Suppress("UnstableApiUsage")
generateLocaleConfig = true
}
namespace = libs.versions.app.version.appId.get()
tasks.withType<KotlinCompile> {
compilerOptions.jvmTarget.set(
JvmTarget.fromTarget(project.libs.versions.app.build.kotlinJVMTarget.get())
)
}
namespace = project.property("APP_ID").toString()
lint {
checkReleaseBuilds = false
abortOnError = true
warningsAsErrors = true
warningsAsErrors = false
baseline = file("lint-baseline.xml")
lintConfig = rootProject.file("lint.xml")
}
bundle {
language {
@Suppress("UnstableApiUsage")
enableSplit = false
}
}
@@ -107,6 +131,9 @@ android {
detekt {
baseline = file("detekt-baseline.xml")
config.setFrom("$rootDir/detekt.yml")
buildUponDefaultConfig = true
allRules = false
}
dependencies {
@@ -114,4 +141,5 @@ dependencies {
implementation(libs.bundles.room)
ksp(libs.androidx.room.compiler)
detektPlugins(libs.compose.detekt)
}

View File

@@ -1,464 +1,145 @@
<?xml version="1.0" ?>
<SmellBaseline>
<ManuallySuppressedIssues></ManuallySuppressedIssues>
<CurrentIssues>
<ID>ComplexCondition:HomeScreenGrid.kt$AnimatedGridPager$currentPage &lt; getMaxPage() &amp;&amp; diffX &gt; 0f || currentPage &gt; 0 &amp;&amp; diffX
&lt; 0f
</ID>
<ID>ComplexCondition:HomeScreenGrid.kt$HomeScreenGrid$item.page != 0 &amp;&amp; gridItems.none { it.page == item.page &amp;&amp; it.id != item.id &amp;&amp;
it.parentId == null }
</ID>
<ID>ComplexCondition:HomeScreenGrid.kt$HomeScreenGrid$newParentId != null &amp;&amp; gridItems.any { it.parentId == newParentId &amp;&amp; it.left ==
left } &amp;&amp; (newParentId != oldParentId || left != oldLeft)
</ID>
<ID>ComplexCondition:HomeScreenGrid.kt$HomeScreenGrid$x &gt;= left &amp;&amp; x &lt;= right &amp;&amp; y &gt;= top &amp;&amp; y &lt;= bottom</ID>
<ID>ComplexCondition:HomeScreenGrid.kt$HomeScreenGrid$x &gt;= rect.left &amp;&amp; x &lt;= rect.right &amp;&amp; y &gt;= rect.top &amp;&amp; y &lt;=
rect.bottom
</ID>
<ID>CyclomaticComplexMethod:Activity.kt$fun Activity.handleGridItemPopupMenu(anchorView: View, gridItem: HomeScreenGridItem, isOnAllAppsFragment:
Boolean, listener: ItemMenuListener): PopupMenu
</ID>
<ID>CyclomaticComplexMethod:HomeScreenGrid.kt$HomeScreenGrid$fun draggedItemMoved(x: Int, y: Int)</ID>
<ID>CyclomaticComplexMethod:HomeScreenGrid.kt$HomeScreenGrid$fun drawInto(canvas: Canvas)</ID>
<ID>CyclomaticComplexMethod:HomeScreenGrid.kt$HomeScreenGrid$fun isClickingGridItem(x: Int, y: Int): HomeScreenGridItem?</ID>
<ID>CyclomaticComplexMethod:HomeScreenGrid.kt$HomeScreenGrid$private fun addAppIconOrShortcut( draggedHomeGridItem: HomeScreenGridItem?, xIndex: Int,
yIndex: Int, newParentId: Long? = null, toFolderEnd: Boolean = true )
</ID>
<ID>CyclomaticComplexMethod:HomeScreenGrid.kt$HomeScreenGrid$private fun addAppIconOrShortcut()</ID>
<ID>CyclomaticComplexMethod:HomeScreenGrid.kt$HomeScreenGrid$private fun addWidget()</ID>
<ID>CyclomaticComplexMethod:HomeScreenGrid.kt$HomeScreenGrid$private fun moveItem()</ID>
<ID>CyclomaticComplexMethod:MainActivity.kt$MainActivity$override fun onTouchEvent(event: MotionEvent?): Boolean</ID>
<ID>CyclomaticComplexMethod:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$override fun onTouchEvent(event: MotionEvent?): Boolean</ID>
<ID>EmptyCatchBlock:Context.kt${ }</ID>
<ID>EmptyCatchBlock:MainActivity.kt$MainActivity${ }</ID>
<ID>EmptyCatchBlock:WidgetsFragment.kt$WidgetsFragment${ }</ID>
<ID>EmptyFunctionBlock:FolderIconsAdapter.kt$FolderIconsAdapter${}</ID>
<ID>EmptyFunctionBlock:HiddenIconsAdapter.kt$HiddenIconsAdapter${}</ID>
<ID>LargeClass:HomeScreenGrid.kt$HomeScreenGrid : RelativeLayout</ID>
<ID>LargeClass:MainActivity.kt$MainActivity : SimpleActivityFlingListener</ID>
<ID>LongMethod:Activity.kt$fun Activity.handleGridItemPopupMenu(anchorView: View, gridItem: HomeScreenGridItem, isOnAllAppsFragment: Boolean, listener:
ItemMenuListener): PopupMenu
</ID>
<ID>LongMethod:HomeScreenGrid.kt$HomeScreenGrid$fun draggedItemMoved(x: Int, y: Int)</ID>
<ID>LongMethod:HomeScreenGrid.kt$HomeScreenGrid$fun drawInto(canvas: Canvas)</ID>
<ID>LongMethod:HomeScreenGrid.kt$HomeScreenGrid$private fun addAppIconOrShortcut( draggedHomeGridItem: HomeScreenGridItem?, xIndex: Int, yIndex: Int,
newParentId: Long? = null, toFolderEnd: Boolean = true )
</ID>
<ID>LongMethod:HomeScreenGrid.kt$HomeScreenGrid$private fun addAppIconOrShortcut()</ID>
<ID>LongMethod:HomeScreenGrid.kt$HomeScreenGrid$private fun addWidget()</ID>
<ID>LongMethod:MainActivity.kt$MainActivity$override fun onTouchEvent(event: MotionEvent?): Boolean</ID>
<ID>LongMethod:MainActivity.kt$MainActivity$private fun getDefaultAppPackages(appLaunchers: ArrayList&lt;AppLauncher&gt;)</ID>
<ID>LongMethod:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$override fun onTouchEvent(event: MotionEvent?): Boolean</ID>
<ID>LongParameterList:HomeScreenGrid.kt$AnimatedGridPager$( private val getMaxPage: () -&gt; Int, private val redrawGrid: () -&gt; Unit, private val
getWidth: () -&gt; Int, private val getHandler: () -&gt; Handler, private val getNextPageBound: () -&gt; Int, private val getPrevPageBound: () -&gt;
Int, private val pageChangeStarted: () -&gt; Unit )
</ID>
<ID>LongParameterList:HomeScreenGridItemsDao.kt$HomeScreenGridItemsDao$(left: Int, top: Int, right: Int, bottom: Int, page: Int, docked: Boolean,
parentId: Long?, id: Long)
</ID>
<ID>LongParameterList:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$( coords: Rect, cellWidth: Int, cellHeight: Int, sideMargins: Rect, gridItem:
HomeScreenGridItem, allGridItems: ArrayList&lt;HomeScreenGridItem&gt; )
</ID>
<ID>LoopWithTooManyJumpStatements:MainActivity.kt$MainActivity$for</ID>
<ID>MagicNumber:AppsDatabase.kt$AppsDatabase.Companion.&lt;no name provided&gt;$3</ID>
<ID>MagicNumber:AppsDatabase.kt$AppsDatabase.Companion.&lt;no name provided&gt;$4</ID>
<ID>MagicNumber:AppsDatabase.kt$AppsDatabase.Companion.&lt;no name provided&gt;$5</ID>
<ID>MagicNumber:Context.kt$30</ID>
<ID>MagicNumber:Context.kt$70.0</ID>
<ID>MagicNumber:Converters.kt$Converters$100</ID>
<ID>MagicNumber:HiddenIconsAdapter.kt$HiddenIconsAdapter$0.1f</ID>
<ID>MagicNumber:HiddenIconsAdapter.kt$HiddenIconsAdapter$150</ID>
<ID>MagicNumber:HomeScreenGrid.kt$AnimatedGridPager$0.5f</ID>
<ID>MagicNumber:HomeScreenGrid.kt$AnimatedGridPager$255</ID>
<ID>MagicNumber:HomeScreenGrid.kt$AnimatedGridPager$255.0f</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid$1.2f</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid$1.5f</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid$3f</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid$5</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid.HomeScreenFolder$0.2f</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid.HomeScreenFolder$3</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid.HomeScreenFolder$5f</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid.HomeScreenFolder.&lt;no name provided&gt;$0.2f</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid.HomeScreenGridTouchHelper$100</ID>
<ID>MagicNumber:LaunchersAdapter.kt$LaunchersAdapter$0.1f</ID>
<ID>MagicNumber:LaunchersAdapter.kt$LaunchersAdapter.ViewHolder$150</ID>
<ID>MagicNumber:MainActivity.kt$MainActivity$0.5</ID>
<ID>MagicNumber:MainActivity.kt$MainActivity$2000</ID>
<ID>MagicNumber:MainActivity.kt$MainActivity$3</ID>
<ID>MagicNumber:MainActivity.kt$MainActivity$4</ID>
<ID>MagicNumber:MainActivity.kt$MainActivity.MyGestureListener$500L</ID>
<ID>MagicNumber:MyAppWidgetHostView.kt$MyAppWidgetHostView$4</ID>
<ID>MagicNumber:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$3</ID>
<ID>MagicNumber:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$4</ID>
<ID>MagicNumber:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$5</ID>
<ID>MaxLineLength:Activity.kt$LauncherApps.ShortcutQuery.FLAG_MATCH_DYNAMIC or LauncherApps.ShortcutQuery.FLAG_MATCH_MANIFEST or
LauncherApps.ShortcutQuery.FLAG_MATCH_PINNED
</ID>
<ID>MaxLineLength:Activity.kt$fun</ID>
<ID>MaxLineLength:Activity.kt$launcherApps.getShortcutIconDrawable(it, resources.displayMetrics.densityDpi).toBitmap(width = iconSize, height =
iconSize)
</ID>
<ID>MaxLineLength:Activity.kt$menu.findItem(R.id.rename).isVisible = (gridItem.type == ITEM_TYPE_ICON || gridItem.type == ITEM_TYPE_FOLDER) &amp;&amp;
!isOnAllAppsFragment
</ID>
<ID>MaxLineLength:Activity.kt$menu.findItem(R.id.uninstall).isVisible = gridItem.type == ITEM_TYPE_ICON &amp;&amp;
canAppBeUninstalled(gridItem.packageName)
</ID>
<ID>MaxLineLength:AllAppsFragment.kt$AllAppsFragment$// some devices ACTION_MOVE keeps triggering for the whole long press duration, but we are
interested in real moves only, when coords change
</ID>
<ID>MaxLineLength:AllAppsFragment.kt$AllAppsFragment$binding.allAppsGrid.setPadding(0, 0,
resources.getDimension(org.fossify.commons.R.dimen.medium_margin).toInt(), bottomListPadding)
</ID>
<ID>MaxLineLength:AllAppsFragment.kt$AllAppsFragment$class</ID>
<ID>MaxLineLength:AppLauncher.kt$AppLauncher$@ColumnInfo(name = "activity_name") var activityName: String</ID>
<ID>MaxLineLength:AppLauncher.kt$AppLauncher$sorting and SORT_BY_TITLE != 0 -&gt;
title.normalizeString().lowercase().compareTo(other.title.normalizeString().lowercase())
</ID>
<ID>MaxLineLength:AppsDatabase.kt$AppsDatabase.Companion.&lt;no name provided&gt;$database.execSQL("CREATE TABLE IF NOT EXISTS `hidden_icons` (`id`
INTEGER PRIMARY KEY AUTOINCREMENT, `package_name` TEXT NOT NULL, `activity_name` TEXT NOT NULL, `title` TEXT NOT NULL)")
</ID>
<ID>MaxLineLength:AppsDatabase.kt$AppsDatabase.Companion.&lt;no name provided&gt;$database.execSQL("CREATE TABLE `home_screen_grid_items_new` (`id`
INTEGER PRIMARY KEY AUTOINCREMENT, `left` INTEGER NOT NULL, `top` INTEGER NOT NULL, `right` INTEGER NOT NULL, `bottom` INTEGER NOT NULL, `page`
INTEGER NOT NULL, `package_name` TEXT NOT NULL, `activity_name` TEXT NOT NULL, `title` TEXT NOT NULL, `type` INTEGER NOT NULL, `class_name` TEXT NOT
NULL, `widget_id` INTEGER NOT NULL, `shortcut_id` TEXT NOT NULL, `icon` BLOB, `docked` INTEGER NOT NULL DEFAULT 0, `parent_id` INTEGER)")
</ID>
<ID>MaxLineLength:AppsDatabase.kt$AppsDatabase.Companion.&lt;no name provided&gt;$database.execSQL("CREATE UNIQUE INDEX
`index_home_screen_grid_items_id` ON `home_screen_grid_items` (`id`)")
</ID>
<ID>MaxLineLength:AppsDatabase.kt$AppsDatabase.Companion.&lt;no name provided&gt;$database.execSQL("INSERT INTO `home_screen_grid_items_new` (`id`,
`left`, `top`, `right`, `bottom`, `page`, `package_name`, `activity_name`, `title`, `type`, `class_name`, `widget_id`, `shortcut_id`, `icon`,
`docked`, `parent_id`) SELECT `id`, `left`, `top`, `right`, `bottom`, 0 as `page`, `package_name`, `activity_name`, `title`, `type`, `class_name`,
`widget_id`, `shortcut_id`, `icon`, CASE WHEN `type` != 1 AND `top` = 5 THEN 1 ELSE 0 END AS `docked`, NULL AS `parent_id` FROM
`home_screen_grid_items` WHERE `intent` IS NULL OR `intent` = ''")
</ID>
<ID>MaxLineLength:Context.kt$val Context.homeScreenGridItemsDB: HomeScreenGridItemsDao get() =
AppsDatabase.getInstance(applicationContext).HomeScreenGridItemsDao()
</ID>
<ID>MaxLineLength:FolderIconsAdapter.kt$FolderIconsAdapter.&lt;no name provided&gt;$val yOffset =
resources.getDimension(R.dimen.long_press_anchor_button_offset_y) * (visibleMenuItems - 1)
</ID>
<ID>MaxLineLength:HiddenIconsAdapter.kt$HiddenIconsAdapter$private fun getSelectedItems()</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$AnimatedGridPager$((pageChangeSwipedPercentage &gt; 0f &amp;&amp; item.page == currentPage - 1) ||
(pageChangeSwipedPercentage &lt; 0f &amp;&amp; item.page == currentPage + 1))
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$(context as? MainActivity)</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$.</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$Math.abs(it.x - draggedItemCurrentCoords.first + sideMargins.left) + Math.abs(it.y -
draggedItemCurrentCoords.second + sideMargins.top)
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$abs(it.second - draggedItemCurrentCoords.first + sideMargins.left) + abs(it.third -
draggedItemCurrentCoords.second + sideMargins.top)
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$abs(it.x - draggedItemCurrentCoords.first + sideMargins.left) + abs(it.y -
draggedItemCurrentCoords.second + sideMargins.top)
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$canvas.drawCircle(currentIndicatorPosition + pageIndicatorRadius, pageIndicatorY,
pageIndicatorRadius, currentPageIndicatorPaint)
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$canvas.drawCircle(currentPageIndicatorLeft + pageIndicatorRadius, pageIndicatorY,
pageIndicatorRadius, emptyPageIndicatorPaint)
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$canvas.drawRoundRect(folderRect, roundedCornerRadius / folder.scale, roundedCornerRadius /
folder.scale, folderBackgroundPaint)
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$canvas.drawRoundRect(leftSide, topSide, rightSide, bottomSide, roundedCornerRadius,
roundedCornerRadius, dragShadowCirclePaint)
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$context.homeScreenGridItemsDB.updateItemPosition(item.left, item.top, item.right, item.bottom,
item.page, false, null, item.id!!)
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$context.homeScreenGridItemsDB.updateItemPosition(left, top, right, bottom, page, docked, newId,
id!!)
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$context.homeScreenGridItemsDB.updateItemPosition(left, top, right, bottom, page, docked, newParentId,
id!!)
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$context.homeScreenGridItemsDB.updateItemPosition(left, top, right, bottom, page, docked, parentId,
id!!)
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$draggedItem!!.drawable =
Bitmap.createBitmap(draggedWidgetView.drawingCache).toDrawable(context.resources)
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$gridItems.filter { it.isSingleCellType() &amp;&amp; pager.isItemOnLastPage(it) &amp;&amp; !it.docked
&amp;&amp; it.parentId == null }
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$gridItems.filter { it.parentId == item.parentId &amp;&amp; it.left &gt; item.left &amp;&amp; it.id !=
item.id }
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$gridItems.filter { it.parentId == newParentId &amp;&amp; it.left &gt;= newItem.left &amp;&amp; it.id
!= newItem.id}
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$if</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$private</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$private fun HomeScreenGridItem.isSingleCellType()</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$private fun HomeScreenGridItem.visibleOnCurrentPage()</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$private var labelSideMargin =
context.resources.getDimension(org.fossify.commons.R.dimen.small_margin).toInt()
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$private var roundedCornerRadius =
context.resources.getDimension(org.fossify.commons.R.dimen.activity_margin)
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$return Rect(clickableLeft, clickableTop, clickableLeft + iconSize + 2 * iconMargin, clickableTop +
iconSize + 2 * iconMargin)
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$val appWidgetProviderInfo = item.providerInfo ?: appWidgetManager!!.installedProviders.firstOrNull {
it.provider.className == item.className }
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$val coveredFolder = gridItems.firstOrNull { it.type == ITEM_TYPE_FOLDER &amp;&amp; it.left ==
coveredCell.x &amp;&amp; it.top == coveredCell.y }
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$val currentIndicatorPosition = pageIndicatorsStart + pager.getCurrentViewPositionInFullPageSpace() *
pageIndicatorStep
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$val drawableWidth = draggedItem!!.getWidthInCells() * cellWidth - iconMargin *
(draggedItem!!.getWidthInCells() - 1)
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$val pageIndicatorsRequiredWidth = pageCount * pageIndicatorRadius * 2 + pageCount *
(pageIndicatorMargin - 1)
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$val rect = Rect(left, item.y, left + draggedItem!!.getWidthInCells() - 1, item.y +
draggedItem!!.getHeightInCells() - 1)
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$val widgetView = appWidgetHost.createView((context as MainActivity).baseContext, appWidgetId,
appWidgetProviderInfo) as MyAppWidgetHostView
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$}</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid.HomeScreenFolder$newDrawable?.setBounds(drawableX, drawableY, drawableX + scaledIconSize.toInt(),
drawableY + scaledIconSize.toInt())
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid.HomeScreenFolder$return RectF(folderDialogLeft, folderDialogTop, folderDialogLeft +
folderDialogWidth, folderDialogTop + folderDialogHeight)
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid.HomeScreenFolder$val circlePath = Path().apply { addCircle((iconSize / 2).toFloat(), (iconSize /
2).toFloat(), (iconSize / 2).toFloat(), Path.Direction.CCW) }
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid.HomeScreenFolder$val folderDialogHeight = rowsCount * cellSize + 3 * folderPadding +
folderTitleTextPaint.textSize + rowsCount * yGap
</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid.HomeScreenGridTouchHelper$val</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid.HomeScreenGridTouchHelper$val item = gridItems.firstOrNull { it.id?.toInt() == virtualViewId } ?:
throw IllegalArgumentException("Unknown id")
</ID>
<ID>MaxLineLength:HomeScreenGridItem.kt$HomeScreenGridItem$@ColumnInfo(name = "activity_name") var activityName: String</ID>
<ID>MaxLineLength:HomeScreenGridItem.kt$HomeScreenGridItem$@ColumnInfo(name = "docked") var docked: Boolean = false</ID>
<ID>MaxLineLength:HomeScreenGridItem.kt$HomeScreenGridItem$@ColumnInfo(name = "icon") var icon: Bitmap? = null</ID>
<ID>MaxLineLength:HomeScreenGridItem.kt$HomeScreenGridItem$constructor() : this(null, -1, -1, -1, -1, 0, "", "", "", ITEM_TYPE_ICON, "", -1, "", null,
false, null, null, null, null, 1, 1)
</ID>
<ID>MaxLineLength:HomeScreenGridItemsDao.kt$HomeScreenGridItemsDao$@Query("DELETE FROM home_screen_grid_items WHERE parent_id IN (SELECT id FROM
home_screen_grid_items WHERE package_name = :packageName)")
</ID>
<ID>MaxLineLength:HomeScreenGridItemsDao.kt$HomeScreenGridItemsDao$@Query("UPDATE home_screen_grid_items SET `left` = :left, `top` = :top, `right` =
:right, `bottom` = :bottom, `page` = :page, `docked` = :docked , `parent_id` = :parentId WHERE id = :id")
</ID>
<ID>MaxLineLength:HomeScreenGridItemsDao.kt$HomeScreenGridItemsDao$@Query("UPDATE home_screen_grid_items SET `left` = `left` + :shiftBy WHERE parent_id
== :folderId AND `left` &gt; :shiftFrom AND id != :excludingId")
</ID>
<ID>MaxLineLength:HomeScreenGridItemsDao.kt$HomeScreenGridItemsDao$fun</ID>
<ID>MaxLineLength:LaunchersAdapter.kt$LaunchersAdapter$filteredLaunchers = launchers.filter { filterQuery == null || it.title.contains(filterQuery!!,
ignoreCase = true) }
</ID>
<ID>MaxLineLength:LaunchersAdapter.kt$LaunchersAdapter$val filteredPosition = filteredLaunchers.indexOfFirst { it.getLauncherIdentifier() ==
item.getItemIdentifier() }
</ID>
<ID>MaxLineLength:LaunchersAdapter.kt$LaunchersAdapter.ViewHolder$allAppsListener.onAppLauncherLongPressed((location[0] + width / 2).toFloat(),
location[1].toFloat(), launcher)
</ID>
<ID>MaxLineLength:LaunchersAdapter.kt$LaunchersAdapter.ViewHolder$val placeholderDrawable =
activity.resources.getColoredDrawableWithColor(R.drawable.placeholder_drawable, launcher.thumbnailColor)
</ID>
<ID>MaxLineLength:MainActivity.kt$MainActivity$((Math.abs(mTouchDownX - event.x) &gt; mMoveGestureThreshold) || (Math.abs(mTouchDownY - event.y) &gt;
mMoveGestureThreshold))
</ID>
<ID>MaxLineLength:MainActivity.kt$MainActivity$// delay showing the shortcut both to let the user see adding it in realtime and hackily avoid concurrent
modification exception at HomeScreenGrid
</ID>
<ID>MaxLineLength:MainActivity.kt$MainActivity$// some devices ACTION_MOVE keeps triggering for the whole long press duration, but we are interested in
real moves only, when coords change
</ID>
<ID>
MaxLineLength:MainActivity.kt$MainActivity$Class.forName("android.app.StatusBarManager").getMethod("expandNotificationsPanel").invoke(getSystemService("statusbar"))
</ID>
<ID>MaxLineLength:MainActivity.kt$MainActivity$WindowCompat.getInsetsController(window, binding.root).isAppearanceLightStatusBars =
backgroundColor.getContrastColor() == DARK_GREY
</ID>
<ID>MaxLineLength:MainActivity.kt$MainActivity$allApps.add(AppLauncher(null, label, packageName, activityName, 0, placeholderColor,
drawable.toBitmap().toDrawable(resources)))
</ID>
<ID>MaxLineLength:MainActivity.kt$MainActivity$arrayOf(binding.allAppsFragment.root as MyFragment&lt;*&gt;, binding.widgetsFragment.root as MyFragment&lt;*&gt;)</ID>
<ID>MaxLineLength:MainActivity.kt$MainActivity$fun</ID>
<ID>MaxLineLength:MainActivity.kt$MainActivity$if</ID>
<ID>MaxLineLength:MainActivity.kt$MainActivity$mOpenPopupMenu = handleGridItemPopupMenu(binding.homeScreenPopupMenuAnchor, gridItem,
isOnAllAppsFragment, menuListener)
</ID>
<ID>MaxLineLength:MainActivity.kt$MainActivity$return Pair(page, Rect(wantedCell.second, wantedCell.third, wantedCell.second, wantedCell.third))</ID>
<ID>MaxLineLength:MainActivity.kt$MainActivity$val anchorY = binding.homeScreenGrid.root.sideMargins.top + (clickedGridItem.top *
binding.homeScreenGrid.root.cellHeight.toFloat())
</ID>
<ID>MaxLineLength:MainActivity.kt$MainActivity$val defaultDialerPackage = (getSystemService(Context.TELECOM_SERVICE) as
TelecomManager).defaultDialerPackage
</ID>
<ID>MaxLineLength:MainActivity.kt$MainActivity$val icon = launcherApps.getShortcutBadgedIconDrawable(item.shortcutInfo!!,
resources.displayMetrics.densityDpi)
</ID>
<ID>MaxLineLength:MainActivity.kt$MainActivity$val launcherApps = applicationContext.getSystemService(Context.LAUNCHER_APPS_SERVICE) as LauncherApps
</ID>
<ID>MaxLineLength:MainActivity.kt$MainActivity$val launcherSettings = AppLauncher(null, getString(R.string.launcher_settings), packageName, "", 0,
placeholderColor, drawable.toBitmap().toDrawable(resources))
</ID>
<ID>MaxLineLength:MainActivity.kt$MainActivity$val storePackage = potentialStores.firstOrNull { isPackageInstalled(it) &amp;&amp; appLaunchers.map {
it.packageName }.contains(it) }
</ID>
<ID>MaxLineLength:MainActivity.kt$MainActivity.MyGestureListener$private</ID>
<ID>MaxLineLength:MyAppWidgetHostView.kt$MyAppWidgetHostView$if</ID>
<ID>MaxLineLength:MyAppWidgetHostView.kt$MyAppWidgetHostView$var onIgnoreInterceptedListener: (() -&gt; Unit)? = null // let the home grid react on
swallowed clicks, for example by hiding the widget resize frame
</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$canvas.drawRect(lineDotRadius, lineDotRadius, width.toFloat() - lineDotRadius,
height.toFloat() - lineDotRadius, resizeWidgetLinePaint)
</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$class</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$minResizeWidthCells = Math.min(context.config.homeColumnCount,
context.getCellCount(providerInfo.minResizeWidth))
</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$private val MAX_TOUCH_LINE_DISTANCE = lineDotRadius * 5 // how close we have to be to
the widgets side to drag it
</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$val</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$val wantedBottom = roundToClosestMultiplyOfNumber(frameRect.bottom - sideMargins.top,
cellHeight)
</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$val wantedBottomCellY = roundToClosestMultiplyOfNumber(wantedBottom -
sideMargins.top, cellHeight) / cellHeight - 1
</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$val wantedLeft = roundToClosestMultiplyOfNumber(frameRect.left - sideMargins.left,
cellWidth)
</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$val wantedLeftCellX = roundToClosestMultiplyOfNumber(wantedLeft - sideMargins.left,
cellWidth) / cellWidth
</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$val wantedRight = roundToClosestMultiplyOfNumber(frameRect.right - sideMargins.left,
cellWidth)
</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$val wantedRightCellX = roundToClosestMultiplyOfNumber(wantedRight - sideMargins.left,
cellWidth) / cellWidth - 1
</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$val wantedTopCellY = roundToClosestMultiplyOfNumber(wantedTop - sideMargins.top,
cellHeight) / cellHeight
</ID>
<ID>MaxLineLength:MyFragment.kt$MyFragment$abstract</ID>
<ID>MaxLineLength:SettingsActivity.kt$SettingsActivity$binding.settingsUseEnglishHolder.beVisibleIf((config.wasUseEnglishToggled ||
Locale.getDefault().language != "en") &amp;&amp; !isTiramisuPlus())
</ID>
<ID>MaxLineLength:SettingsActivity.kt$SettingsActivity$faqItems.add(FAQItem(org.fossify.commons.R.string.faq_2_title_commons,
org.fossify.commons.R.string.faq_2_text_commons))
</ID>
<ID>MaxLineLength:SettingsActivity.kt$SettingsActivity$faqItems.add(FAQItem(org.fossify.commons.R.string.faq_6_title_commons,
org.fossify.commons.R.string.faq_6_text_commons))
</ID>
<ID>MaxLineLength:SettingsActivity.kt$SettingsActivity$findItem(R.id.more_apps_from_us).isVisible =
!resources.getBoolean(org.fossify.commons.R.bool.hide_google_relations)
</ID>
<ID>MaxLineLength:SettingsActivity.kt$SettingsActivity$items.add(RadioItem(i, resources.getQuantityString(org.fossify.commons.R.plurals.column_counts,
i, i)))
</ID>
<ID>MaxLineLength:SettingsActivity.kt$SettingsActivity$items.add(RadioItem(i, resources.getQuantityString(org.fossify.commons.R.plurals.row_counts, i,
i)))
</ID>
<ID>MaxLineLength:SettingsActivity.kt$SettingsActivity$updateMaterialActivityViews(binding.settingsCoordinator, binding.settingsHolder,
useTransparentNavigation = true, useTopSearchMenu = false)
</ID>
<ID>MaxLineLength:WidgetsAdapter.kt$WidgetsAdapter$marginStart = activity.resources.getDimension(org.fossify.commons.R.dimen.activity_margin).toInt()
</ID>
<ID>MaxLineLength:WidgetsFragment.kt$WidgetsFragment$// some devices ACTION_MOVE keeps triggering for the whole long press duration, but we are
interested in real moves only, when coords change
</ID>
<ID>MaxLineLength:WidgetsFragment.kt$WidgetsFragment$AppWidget(appPackageName, appTitle, appIcon, widgetTitle, widgetPreviewImage, widthCells,
heightCells, false, className, info, null)
</ID>
<ID>MaxLineLength:WidgetsFragment.kt$WidgetsFragment$appWidgets = appWidgets.sortedWith(compareBy({ it.appTitle }, { it.appPackageName }, {
it.widgetTitle })).toMutableList() as ArrayList&lt;AppWidget&gt;
</ID>
<ID>MaxLineLength:WidgetsFragment.kt$WidgetsFragment$class</ID>
<ID>MaxLineLength:WidgetsFragment.kt$WidgetsFragment$if</ID>
<ID>MaxLineLength:WidgetsFragment.kt$WidgetsFragment$val widget = AppWidget(appPackageName, appTitle, appIcon, widgetTitle, widgetPreviewImage, 0, 0,
true, "", null, info.activityInfo)
</ID>
<ID>MaxLineLength:WidgetsFragment.kt$WidgetsFragment$val widgetPreviewImage = packageManager.getDrawable(componentInfo.packageName, info.iconResource,
componentInfo)
</ID>
<ID>NestedBlockDepth:HomeScreenGrid.kt$HomeScreenGrid$@SuppressLint("ClickableViewAccessibility") fun widgetLongPressed(item: HomeScreenGridItem)</ID>
<ID>NestedBlockDepth:HomeScreenGrid.kt$HomeScreenGrid$fun drawInto(canvas: Canvas)</ID>
<ID>NestedBlockDepth:HomeScreenGrid.kt$HomeScreenGrid$private fun Canvas.drawItemInCell(item: HomeScreenGridItem, cell: Rect)</ID>
<ID>NestedBlockDepth:HomeScreenGrid.kt$HomeScreenGrid$private fun addAppIconOrShortcut()</ID>
<ID>NestedBlockDepth:HomeScreenGrid.kt$HomeScreenGrid$private fun addWidget()</ID>
<ID>NestedBlockDepth:HomeScreenGrid.kt$HomeScreenGrid$private fun moveItem()</ID>
<ID>NestedBlockDepth:MainActivity.kt$MainActivity$override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?)</ID>
<ID>NestedBlockDepth:MainActivity.kt$MainActivity$override fun onTouchEvent(event: MotionEvent?): Boolean</ID>
<ID>NestedBlockDepth:MainActivity.kt$MainActivity$private fun findFirstEmptyCell(): Pair&lt;Int, Rect&gt;</ID>
<ID>NestedBlockDepth:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$override fun onTouchEvent(event: MotionEvent?): Boolean</ID>
<ID>ReturnCount:AllAppsFragment.kt$AllAppsFragment$override fun onInterceptTouchEvent(event: MotionEvent?): Boolean</ID>
<ID>ReturnCount:HomeScreenGrid.kt$HomeScreenGrid$fun isClickingGridItem(x: Int, y: Int): HomeScreenGridItem?</ID>
<ID>ReturnCount:HomeScreenGrid.kt$HomeScreenGrid.HomeScreenFolder$fun generateDrawable(): Drawable?</ID>
<ID>ReturnCount:HomeScreenGrid.kt$HomeScreenGrid.HomeScreenGridTouchHelper$override fun onPerformActionForVirtualView(virtualViewId: Int, action: Int,
arguments: Bundle?): Boolean
</ID>
<ID>ReturnCount:MyAppWidgetHostView.kt$MyAppWidgetHostView$override fun onInterceptTouchEvent(event: MotionEvent?): Boolean</ID>
<ID>ReturnCount:WidgetsFragment.kt$WidgetsFragment$override fun onInterceptTouchEvent(event: MotionEvent?): Boolean</ID>
<ID>SwallowedException:Activity.kt$e: Exception</ID>
<ID>SwallowedException:Context.kt$e: Error</ID>
<ID>SwallowedException:Context.kt$e: Exception</ID>
<ID>SwallowedException:MainActivity.kt$MainActivity$e: ActivityNotFoundException</ID>
<ID>SwallowedException:MainActivity.kt$MainActivity$e: Exception</ID>
<ID>SwallowedException:WidgetsFragment.kt$WidgetsFragment$error: Error</ID>
<ID>TooGenericExceptionCaught:Activity.kt$e: Exception</ID>
<ID>TooGenericExceptionCaught:Context.kt$e: Error</ID>
<ID>TooGenericExceptionCaught:Context.kt$e: Exception</ID>
<ID>TooGenericExceptionCaught:MainActivity.kt$MainActivity$e: Exception</ID>
<ID>TooGenericExceptionCaught:WidgetsFragment.kt$WidgetsFragment$error: Error</ID>
<ID>TooManyFunctions:AllAppsFragment.kt$AllAppsFragment : MyFragmentAllAppsListener</ID>
<ID>TooManyFunctions:FolderIconsAdapter.kt$FolderIconsAdapter : MyRecyclerViewAdapter</ID>
<ID>TooManyFunctions:HiddenIconsAdapter.kt$HiddenIconsAdapter : MyRecyclerViewAdapter</ID>
<ID>TooManyFunctions:HomeScreenGrid.kt$AnimatedGridPager</ID>
<ID>TooManyFunctions:HomeScreenGrid.kt$HomeScreenGrid : RelativeLayout</ID>
<ID>TooManyFunctions:HomeScreenGridItemsDao.kt$HomeScreenGridItemsDao</ID>
<ID>TooManyFunctions:MainActivity.kt$MainActivity : SimpleActivityFlingListener</ID>
<ID>TooManyFunctions:SettingsActivity.kt$SettingsActivity : SimpleActivity</ID>
<ID>UnusedParameter:HomeScreenGrid.kt$AnimatedGridPager$y: Int</ID>
<ID>UnusedParameter:WidgetsAdapter.kt$WidgetsAdapter.ViewHolder$widgetListItem: WidgetsListItem</ID>
<ID>UnusedPrivateMember:MyAppWidgetHostView.kt$MyAppWidgetHostView$private fun hasFingerMoved(x: Float, y: Float)</ID>
<ID>VariableNaming:MainActivity.kt$MainActivity$val SMSMessengerIcon = HomeScreenGridItem( null, 1, config.homeRowCount - 1, 1, config.homeRowCount - 1,
0, defaultSMSMessengerPackage, "", title, ITEM_TYPE_ICON, "", -1, "", null, true, null )
</ID>
<ID>VariableNaming:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$private val DRAGGING_BOTTOM = 4</ID>
<ID>VariableNaming:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$private val DRAGGING_LEFT = 1</ID>
<ID>VariableNaming:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$private val DRAGGING_NONE = 0</ID>
<ID>VariableNaming:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$private val DRAGGING_RIGHT = 3</ID>
<ID>VariableNaming:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$private val DRAGGING_TOP = 2</ID>
<ID>VariableNaming:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$private val MAX_TOUCH_LINE_DISTANCE = lineDotRadius * 5 // how close we have to be
to the widgets side to drag it
</ID>
<ID>WildcardImport:AllAppsFragment.kt$import org.fossify.commons.extensions.*</ID>
<ID>WildcardImport:AppLauncher.kt$import androidx.room.*</ID>
<ID>WildcardImport:HiddenIcon.kt$import androidx.room.*</ID>
<ID>WildcardImport:HiddenIconsDao.kt$import androidx.room.*</ID>
<ID>WildcardImport:HomeScreenGrid.kt$import android.graphics.*</ID>
<ID>WildcardImport:HomeScreenGrid.kt$import org.fossify.commons.extensions.*</ID>
<ID>WildcardImport:HomeScreenGrid.kt$import org.fossify.commons.helpers.*</ID>
<ID>WildcardImport:HomeScreenGrid.kt$import org.fossify.home.helpers.*</ID>
<ID>WildcardImport:HomeScreenGrid.kt$import kotlin.math.*</ID>
<ID>WildcardImport:HomeScreenGridItem.kt$import androidx.room.*</ID>
<ID>WildcardImport:HomeScreenGridItemsDao.kt$import androidx.room.*</ID>
<ID>WildcardImport:MainActivity.kt$import android.view.*</ID>
<ID>WildcardImport:MainActivity.kt$import org.fossify.commons.extensions.*</ID>
<ID>WildcardImport:MainActivity.kt$import org.fossify.commons.helpers.*</ID>
<ID>WildcardImport:MainActivity.kt$import org.fossify.home.extensions.*</ID>
<ID>WildcardImport:MainActivity.kt$import org.fossify.home.helpers.*</ID>
<ID>WildcardImport:MyAppWidgetResizeFrame.kt$import android.graphics.*</ID>
<ID>WildcardImport:RenameItemDialog.kt$import org.fossify.commons.extensions.*</ID>
<ID>WildcardImport:SettingsActivity.kt$import org.fossify.commons.extensions.*</ID>
<ID>WildcardImport:WidgetsFragment.kt$import org.fossify.commons.extensions.*</ID>
<ID>WildcardImport:WidgetsFragment.kt$import org.fossify.home.models.*</ID>
</CurrentIssues>
<ManuallySuppressedIssues/>
<CurrentIssues>
<ID>ComplexCondition:HomeScreenGrid.kt$AnimatedGridPager$currentPage &lt; getMaxPage() &amp;&amp; diffX &gt; 0f || currentPage &gt; 0 &amp;&amp; diffX &lt; 0f</ID>
<ID>ComplexCondition:HomeScreenGrid.kt$HomeScreenGrid$item.page != 0 &amp;&amp; gridItems .none { it.page == item.page &amp;&amp; it.id != item.id &amp;&amp; it.parentId == null }</ID>
<ID>ComplexCondition:HomeScreenGrid.kt$HomeScreenGrid$newParentId != null &amp;&amp; gridItems.any { it.parentId == newParentId &amp;&amp; it.left == left } &amp;&amp; (newParentId != oldParentId || left != oldLeft)</ID>
<ID>ComplexCondition:HomeScreenGrid.kt$HomeScreenGrid$x &gt;= left &amp;&amp; x &lt;= right &amp;&amp; y &gt;= top &amp;&amp; y &lt;= bottom</ID>
<ID>ComplexCondition:HomeScreenGrid.kt$HomeScreenGrid$x &gt;= rect.left &amp;&amp; x &lt;= rect.right &amp;&amp; y &gt;= rect.top &amp;&amp; y &lt;= rect.bottom</ID>
<ID>CyclomaticComplexMethod:Activity.kt$fun Activity.handleGridItemPopupMenu( anchorView: View, gridItem: HomeScreenGridItem, isOnAllAppsFragment: Boolean, listener: ItemMenuListener, ): PopupMenu</ID>
<ID>CyclomaticComplexMethod:HomeScreenGrid.kt$HomeScreenGrid$fun draggedItemMoved(x: Int, y: Int)</ID>
<ID>CyclomaticComplexMethod:HomeScreenGrid.kt$HomeScreenGrid$fun drawInto(canvas: Canvas)</ID>
<ID>CyclomaticComplexMethod:HomeScreenGrid.kt$HomeScreenGrid$fun isClickingGridItem(x: Int, y: Int): HomeScreenGridItem?</ID>
<ID>CyclomaticComplexMethod:HomeScreenGrid.kt$HomeScreenGrid$private fun addAppIconOrShortcut( draggedHomeGridItem: HomeScreenGridItem?, xIndex: Int, yIndex: Int, newParentId: Long? = null, toFolderEnd: Boolean = true, )</ID>
<ID>CyclomaticComplexMethod:HomeScreenGrid.kt$HomeScreenGrid$private fun addAppIconOrShortcut()</ID>
<ID>CyclomaticComplexMethod:HomeScreenGrid.kt$HomeScreenGrid$private fun addWidget()</ID>
<ID>CyclomaticComplexMethod:HomeScreenGrid.kt$HomeScreenGrid$private fun moveItem()</ID>
<ID>CyclomaticComplexMethod:MainActivity.kt$MainActivity$override fun onTouchEvent(event: MotionEvent?): Boolean</ID>
<ID>CyclomaticComplexMethod:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$override fun onTouchEvent(event: MotionEvent?): Boolean</ID>
<ID>EmptyCatchBlock:Context.kt${ }</ID>
<ID>EmptyCatchBlock:WidgetsFragment.kt$WidgetsFragment${ }</ID>
<ID>EmptyFunctionBlock:FolderIconsAdapter.kt$FolderIconsAdapter${}</ID>
<ID>EmptyFunctionBlock:HiddenIconsAdapter.kt$HiddenIconsAdapter${}</ID>
<ID>LargeClass:HomeScreenGrid.kt$HomeScreenGrid : RelativeLayout</ID>
<ID>LargeClass:MainActivity.kt$MainActivity : SimpleActivityFlingListener</ID>
<ID>LongMethod:HomeScreenGrid.kt$HomeScreenGrid$fun drawInto(canvas: Canvas)</ID>
<ID>LongMethod:HomeScreenGrid.kt$HomeScreenGrid$private fun addAppIconOrShortcut( draggedHomeGridItem: HomeScreenGridItem?, xIndex: Int, yIndex: Int, newParentId: Long? = null, toFolderEnd: Boolean = true, )</ID>
<ID>LongMethod:MainActivity.kt$MainActivity$private fun getDefaultAppPackages(appLaunchers: ArrayList&lt;AppLauncher&gt;)</ID>
<ID>LongMethod:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$override fun onTouchEvent(event: MotionEvent?): Boolean</ID>
<ID>LoopWithTooManyJumpStatements:MainActivity.kt$MainActivity$for</ID>
<ID>MagicNumber:Context.kt$30</ID>
<ID>MagicNumber:Context.kt$70.0</ID>
<ID>MagicNumber:Converters.kt$Converters$100</ID>
<ID>MagicNumber:HiddenIconsAdapter.kt$HiddenIconsAdapter$0.1f</ID>
<ID>MagicNumber:HiddenIconsAdapter.kt$HiddenIconsAdapter$150</ID>
<ID>MagicNumber:HomeScreenGrid.kt$AnimatedGridPager$0.5f</ID>
<ID>MagicNumber:HomeScreenGrid.kt$AnimatedGridPager$255</ID>
<ID>MagicNumber:HomeScreenGrid.kt$AnimatedGridPager$255.0f</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid$0.9f</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid$1.2f</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid$1.5f</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid$3f</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid$5</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid.HomeScreenFolder$0.2f</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid.HomeScreenFolder$3</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid.HomeScreenFolder$4f</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid.HomeScreenFolder$5f</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid.HomeScreenFolder.&lt;no name provided&gt;$0.2f</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid.HomeScreenGridTouchHelper$100</ID>
<ID>MagicNumber:LaunchersAdapter.kt$LaunchersAdapter$0.1f</ID>
<ID>MagicNumber:MainActivity.kt$MainActivity$0.5</ID>
<ID>MagicNumber:MainActivity.kt$MainActivity$2000</ID>
<ID>MagicNumber:MainActivity.kt$MainActivity.MyGestureListener$500L</ID>
<ID>MagicNumber:MyAppWidgetHostView.kt$MyAppWidgetHostView$4</ID>
<ID>MagicNumber:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$3</ID>
<ID>MagicNumber:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$4</ID>
<ID>MagicNumber:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$5</ID>
<ID>MaxLineLength:Activity.kt$LauncherApps.ShortcutQuery.FLAG_MATCH_DYNAMIC or LauncherApps.ShortcutQuery.FLAG_MATCH_MANIFEST or LauncherApps.ShortcutQuery.FLAG_MATCH_PINNED</ID>
<ID>MaxLineLength:AllAppsFragment.kt$AllAppsFragment$// some devices ACTION_MOVE keeps triggering for the whole long press duration, but we are interested in real moves only, when coords change</ID>
<ID>MaxLineLength:AppLauncher.kt$AppLauncher$@ColumnInfo(name = "activity_name") var activityName: String</ID>
<ID>MaxLineLength:AppLauncher.kt$AppLauncher$sorting and SORT_BY_TITLE != 0 -&gt; title.normalizeString().lowercase().compareTo(other.title.normalizeString().lowercase())</ID>
<ID>MaxLineLength:FolderIconsAdapter.kt$FolderIconsAdapter.&lt;no name provided&gt;$val yOffset = resources.getDimension(R.dimen.long_press_anchor_button_offset_y) * (visibleMenuItems - 1)</ID>
<ID>MaxLineLength:HiddenIconsAdapter.kt$HiddenIconsAdapter$private fun getSelectedItems()</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$AnimatedGridPager$((pageChangeSwipedPercentage &gt; 0f &amp;&amp; item.page == currentPage - 1) || (pageChangeSwipedPercentage &lt; 0f &amp;&amp; item.page == currentPage + 1))</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$(context as? MainActivity)</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$abs(it.second - draggedItemCurrentCoords.first + sideMargins.left) + abs(it.third - draggedItemCurrentCoords.second + sideMargins.top)</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$abs(it.x - draggedItemCurrentCoords.first + sideMargins.left) + abs(it.y - draggedItemCurrentCoords.second + sideMargins.top)</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$draggedItem!!.getWidthInCells() * cellWidth - iconMargin * (draggedItem!!.getWidthInCells() - 1)</ID>
<ID>MaxLineLength:HomeScreenGridItem.kt$HomeScreenGridItem$@ColumnInfo(name = "activity_name") var activityName: String</ID>
<ID>MaxLineLength:HomeScreenGridItem.kt$HomeScreenGridItem$@ColumnInfo(name = "docked") var docked: Boolean = false</ID>
<ID>MaxLineLength:HomeScreenGridItem.kt$HomeScreenGridItem$@ColumnInfo(name = "icon") var icon: Bitmap? = null</ID>
<ID>MaxLineLength:HomeScreenGridItem.kt$HomeScreenGridItem$constructor() : this(null, -1, -1, -1, -1, 0, "", "", "", ITEM_TYPE_ICON, "", -1, "", null, false, null, null, null, null, 1, 1)</ID>
<ID>MaxLineLength:HomeScreenGridItemsDao.kt$HomeScreenGridItemsDao$@Query("DELETE FROM home_screen_grid_items WHERE parent_id IN (SELECT id FROM home_screen_grid_items WHERE package_name = :packageName)")</ID>
<ID>MaxLineLength:HomeScreenGridItemsDao.kt$HomeScreenGridItemsDao$@Query("UPDATE home_screen_grid_items SET `left` = :left, `top` = :top, `right` = :right, `bottom` = :bottom, `page` = :page, `docked` = :docked , `parent_id` = :parentId WHERE id = :id")</ID>
<ID>MaxLineLength:HomeScreenGridItemsDao.kt$HomeScreenGridItemsDao$@Query("UPDATE home_screen_grid_items SET `left` = `left` + :shiftBy WHERE parent_id == :folderId AND `left` &gt; :shiftFrom AND id != :excludingId")</ID>
<ID>MaxLineLength:HomeScreenGridItemsDao.kt$HomeScreenGridItemsDao$fun</ID>
<ID>MaxLineLength:MainActivity.kt$MainActivity$(abs(mTouchDownX - event.x) &gt; mMoveGestureThreshold || abs(mTouchDownY - event.y) &gt; mMoveGestureThreshold)</ID>
<ID>MaxLineLength:MainActivity.kt$MainActivity$// delay showing the shortcut both to let the user see adding it in realtime and hackily avoid concurrent modification exception at HomeScreenGrid</ID>
<ID>MaxLineLength:MainActivity.kt$MainActivity$// some devices ACTION_MOVE keeps triggering for the whole long press duration, but we are interested in real moves only, when coords change</ID>
<ID>MaxLineLength:MainActivity.kt$MainActivity$if</ID>
<ID>MaxLineLength:MyAppWidgetHostView.kt$MyAppWidgetHostView$if</ID>
<ID>MaxLineLength:MyAppWidgetHostView.kt$MyAppWidgetHostView$var onIgnoreInterceptedListener: (() -&gt; Unit)? = null // let the home grid react on swallowed clicks, for example by hiding the widget resize frame</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$canvas.drawRect(lineDotRadius, lineDotRadius, width.toFloat() - lineDotRadius, height.toFloat() - lineDotRadius, resizeWidgetLinePaint)</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$class</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$minResizeWidthCells = Math.min(context.config.homeColumnCount, context.getCellCount(providerInfo.minResizeWidth))</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$private val MAX_TOUCH_LINE_DISTANCE = lineDotRadius * 5 // how close we have to be to the widgets side to drag it</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$val</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$val wantedBottom = roundToClosestMultiplyOfNumber(frameRect.bottom - sideMargins.top, cellHeight)</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$val wantedBottomCellY = roundToClosestMultiplyOfNumber(wantedBottom - sideMargins.top, cellHeight) / cellHeight - 1</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$val wantedLeft = roundToClosestMultiplyOfNumber(frameRect.left - sideMargins.left, cellWidth)</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$val wantedLeftCellX = roundToClosestMultiplyOfNumber(wantedLeft - sideMargins.left, cellWidth) / cellWidth</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$val wantedRight = roundToClosestMultiplyOfNumber(frameRect.right - sideMargins.left, cellWidth)</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$val wantedRightCellX = roundToClosestMultiplyOfNumber(wantedRight - sideMargins.left, cellWidth) / cellWidth - 1</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$val wantedTopCellY = roundToClosestMultiplyOfNumber(wantedTop - sideMargins.top, cellHeight) / cellHeight</ID>
<ID>MaxLineLength:WidgetsFragment.kt$WidgetsFragment$// some devices ACTION_MOVE keeps triggering for the whole long press duration, but we are interested in real moves only, when coords change</ID>
<ID>MaxLineLength:WidgetsFragment.kt$WidgetsFragment$if</ID>
<ID>NestedBlockDepth:AllAppsFragment.kt$AllAppsFragment$override fun onInterceptTouchEvent(event: MotionEvent?): Boolean</ID>
<ID>NestedBlockDepth:HomeScreenGrid.kt$HomeScreenGrid$@SuppressLint("ClickableViewAccessibility") fun widgetLongPressed(item: HomeScreenGridItem)</ID>
<ID>NestedBlockDepth:HomeScreenGrid.kt$HomeScreenGrid$fun drawInto(canvas: Canvas)</ID>
<ID>NestedBlockDepth:HomeScreenGrid.kt$HomeScreenGrid$private fun Canvas.drawItemInCell(item: HomeScreenGridItem, cell: Rect)</ID>
<ID>NestedBlockDepth:HomeScreenGrid.kt$HomeScreenGrid$private fun addAppIconOrShortcut()</ID>
<ID>NestedBlockDepth:HomeScreenGrid.kt$HomeScreenGrid$private fun addWidget()</ID>
<ID>NestedBlockDepth:HomeScreenGrid.kt$HomeScreenGrid$private fun moveItem()</ID>
<ID>NestedBlockDepth:MainActivity.kt$MainActivity$override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?)</ID>
<ID>NestedBlockDepth:MainActivity.kt$MainActivity$override fun onTouchEvent(event: MotionEvent?): Boolean</ID>
<ID>NestedBlockDepth:MainActivity.kt$MainActivity$private fun findFirstEmptyCell(): Pair&lt;Int, Rect&gt;</ID>
<ID>NestedBlockDepth:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$override fun onTouchEvent(event: MotionEvent?): Boolean</ID>
<ID>NewLineAtEndOfFile:IconCache.kt$org.fossify.home.helpers.IconCache.kt</ID>
<ID>NewLineAtEndOfFile:View.kt$org.fossify.home.extensions.View.kt</ID>
<ID>ReturnCount:HomeScreenGrid.kt$HomeScreenGrid$fun isClickingGridItem(x: Int, y: Int): HomeScreenGridItem?</ID>
<ID>SwallowedException:Activity.kt$e: Exception</ID>
<ID>SwallowedException:Context.kt$e: Error</ID>
<ID>SwallowedException:Context.kt$e: Exception</ID>
<ID>SwallowedException:WidgetsFragment.kt$WidgetsFragment$error: Error</ID>
<ID>TooGenericExceptionCaught:Activity.kt$e: Exception</ID>
<ID>TooGenericExceptionCaught:Context.kt$e: Error</ID>
<ID>TooGenericExceptionCaught:Context.kt$e: Exception</ID>
<ID>TooGenericExceptionCaught:MainActivity.kt$MainActivity$e: Exception</ID>
<ID>TooGenericExceptionCaught:WidgetsFragment.kt$WidgetsFragment$error: Error</ID>
<ID>TooManyFunctions:AllAppsFragment.kt$AllAppsFragment : MyFragmentAllAppsListener</ID>
<ID>TooManyFunctions:FolderIconsAdapter.kt$FolderIconsAdapter : MyRecyclerViewAdapter</ID>
<ID>TooManyFunctions:HiddenIconsAdapter.kt$HiddenIconsAdapter : MyRecyclerViewAdapter</ID>
<ID>TooManyFunctions:HomeScreenGrid.kt$AnimatedGridPager</ID>
<ID>TooManyFunctions:HomeScreenGrid.kt$HomeScreenGrid : RelativeLayout</ID>
<ID>TooManyFunctions:HomeScreenGridItemsDao.kt$HomeScreenGridItemsDao</ID>
<ID>TooManyFunctions:MainActivity.kt$MainActivity : SimpleActivityFlingListener</ID>
<ID>TooManyFunctions:SettingsActivity.kt$SettingsActivity : SimpleActivity</ID>
<ID>UnusedParameter:HomeScreenGrid.kt$AnimatedGridPager$y: Int</ID>
<ID>UnusedParameter:WidgetsAdapter.kt$WidgetsAdapter.ViewHolder$widgetListItem: WidgetsListItem</ID>
<ID>UnusedPrivateMember:MyAppWidgetHostView.kt$MyAppWidgetHostView$private fun hasFingerMoved(x: Float, y: Float)</ID>
<ID>VariableNaming:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$private val DRAGGING_BOTTOM = 4</ID>
<ID>VariableNaming:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$private val DRAGGING_LEFT = 1</ID>
<ID>VariableNaming:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$private val DRAGGING_NONE = 0</ID>
<ID>VariableNaming:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$private val DRAGGING_RIGHT = 3</ID>
<ID>VariableNaming:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$private val DRAGGING_TOP = 2</ID>
<ID>VariableNaming:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$private val MAX_TOUCH_LINE_DISTANCE = lineDotRadius * 5 // how close we have to be to the widgets side to drag it</ID>
<ID>WildcardImport:AppLauncher.kt$import androidx.room.*</ID>
<ID>WildcardImport:HiddenIcon.kt$import androidx.room.*</ID>
<ID>WildcardImport:HiddenIconsDao.kt$import androidx.room.*</ID>
<ID>WildcardImport:HomeScreenGridItem.kt$import androidx.room.*</ID>
<ID>WildcardImport:HomeScreenGridItemsDao.kt$import androidx.room.*</ID>
<ID>WildcardImport:MyAppWidgetResizeFrame.kt$import android.graphics.*</ID>
<ID>WildcardImport:RenameItemDialog.kt$import org.fossify.commons.extensions.*</ID>
</CurrentIssues>
</SmellBaseline>

View File

@@ -1,269 +1,634 @@
<?xml version="1.0" encoding="UTF-8"?>
<issues format="6" by="lint 8.1.1" type="baseline" client="gradle" dependencies="false" name="AGP (8.1.1)" variant="all" version="8.1.1">
<issues format="6" by="lint 8.11.1" type="baseline" client="gradle" dependencies="false" name="AGP (8.11.1)" variant="all" version="8.11.1">
<issue id="NewApi" message="`android:enforceNavigationBarContrast` requires API level 29 (current min is 26)"
<issue
id="NewApi"
message="`android:enforceNavigationBarContrast` requires API level 29 (current min is 26)"
errorLine1=" &lt;item name=&quot;android:enforceNavigationBarContrast&quot;>false&lt;/item>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/styles.xml" line="12" column="15" />
<location
file="src/main/res/values/styles.xml"
line="12"
column="15"/>
</issue>
<issue id="NewApi" message="`android:enforceStatusBarContrast` requires API level 29 (current min is 26)"
<issue
id="NewApi"
message="`android:enforceStatusBarContrast` requires API level 29 (current min is 26)"
errorLine1=" &lt;item name=&quot;android:enforceStatusBarContrast&quot;>false&lt;/item>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/styles.xml" line="13" column="15" />
<location
file="src/main/res/values/styles.xml"
line="13"
column="15"/>
</issue>
<issue id="NewApi" message="`android:windowLayoutInDisplayCutoutMode` requires API level 27 (current min is 26)"
<issue
id="NewApi"
message="`android:windowLayoutInDisplayCutoutMode` requires API level 27 (current min is 26)"
errorLine1=" &lt;item name=&quot;android:windowLayoutInDisplayCutoutMode&quot;>shortEdges&lt;/item>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/styles.xml" line="14" column="15" />
<location
file="src/main/res/values/styles.xml"
line="14"
column="15"/>
</issue>
<issue id="NotificationPermission"
<issue
id="NotificationPermission"
message="When targeting Android 13 or higher, posting a permission requires holding the `POST_NOTIFICATIONS` permission (usage from org.fossify.commons.asynctasks.CopyMoveTask)">
<location file="src/main/AndroidManifest.xml" />
<location
file="src/main/AndroidManifest.xml"/>
</issue>
<issue id="UnusedAttribute" message="Attribute `localeConfig` is only used in API level 33 and higher (current min is 26)"
errorLine1=" android:localeConfig=&quot;@xml/locale_config&quot;" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/AndroidManifest.xml" line="30" column="9" />
</issue>
<issue id="CustomSplashScreen" message="The application should not provide its own launch screen" errorLine1="class SplashActivity : BaseSplashActivity() {"
<issue
id="CustomSplashScreen"
message="The application should not provide its own launch screen"
errorLine1="class SplashActivity : BaseSplashActivity() {"
errorLine2=" ~~~~~~~~~~~~~~">
<location file="src/main/kotlin/org.fossify.home/activities/SplashActivity.kt" line="6" column="7" />
<location
file="src/main/kotlin/org/fossify/home/activities/SplashActivity.kt"
line="6"
column="7"/>
</issue>
<issue id="LockedOrientationActivity"
<issue
id="AndroidGradlePluginVersion"
message="A newer version of Gradle than 8.13 is available: 8.14.3"
errorLine1="distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="$HOME/work/Launcher/Launcher/gradle/wrapper/gradle-wrapper.properties"
line="3"
column="17"/>
</issue>
<issue
id="AndroidGradlePluginVersion"
message="A newer version of com.android.application than 8.11.1 is available: 8.13.1. (There is also a newer version of 8.11.𝑥 available, if upgrading to 8.13.1 is difficult: 8.11.2)"
errorLine1="gradlePlugins-agp = &quot;8.11.1&quot;"
errorLine2=" ~~~~~~~~">
<location
file="$HOME/work/Launcher/Launcher/gradle/libs.versions.toml"
line="14"
column="21"/>
</issue>
<issue
id="LockedOrientationActivity"
message="Expecting `android:screenOrientation=&quot;unspecified&quot;` or `&quot;fullSensor&quot;` for this activity so the user can use the application in any orientation and provide a great experience on Chrome OS devices"
errorLine1=" android:screenOrientation=&quot;portrait&quot;" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/AndroidManifest.xml" line="47" column="13" />
errorLine1=" android:screenOrientation=&quot;portrait&quot;"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="47"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;app_launcher_name&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;eu&quot; (Basque), &quot;ar&quot; (Arabic), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nl&quot; (Dutch), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;, &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;app_launcher_name&quot;>Launcher_debug&lt;/string>" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/debug/res/values/strings.xml" line="3" column="13" />
<issue
id="NewerVersionAvailable"
message="A newer version of io.nlopez.compose.rules:detekt than 0.4.28 is available: 0.5.1"
errorLine1="detektCompose = &quot;0.4.28&quot;"
errorLine2=" ~~~~~~~~">
<location
file="$HOME/work/Launcher/Launcher/gradle/libs.versions.toml"
line="8"
column="17"/>
</issue>
<issue id="MissingTranslation"
message="&quot;app_name&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;in&quot; (Indonesian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;eu&quot; (Basque), &quot;ar&quot; (Arabic), &quot;nb&quot; (Norwegian Bokmål), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ca&quot; (Catalan), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;, &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;app_name&quot;>Simple Launcher&lt;/string>" errorLine2=" ~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="3" column="13" />
<issue
id="DiscouragedApi"
message="Fixed screen orientations will be ignored in most cases, starting from Android 16. Android is moving toward a model where apps are expected to adapt to various orientations, display sizes, and aspect ratios."
errorLine1=" android:screenOrientation=&quot;portrait&quot;"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="47"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;app_launcher_name&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;eu&quot; (Basque), &quot;ar&quot; (Arabic), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nl&quot; (Dutch), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;, &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;app_launcher_name&quot;>Launcher&lt;/string>" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="4" column="13" />
<issue
id="MissingTranslation"
message="&quot;app_launcher_name&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ar&quot; (Arabic), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;"
errorLine1=" &lt;string name=&quot;app_launcher_name&quot;>Launcher_debug&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/debug/res/values/strings.xml"
line="3"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;launcher_settings&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;eu&quot; (Basque), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;launcher_settings&quot;>Launcher Settings&lt;/string>" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="5" column="13" />
<issue
id="MissingTranslation"
message="&quot;app_launcher_name&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ar&quot; (Arabic), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;"
errorLine1=" &lt;string name=&quot;app_launcher_name&quot;>Launcher&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="3"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;app_info&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;eu&quot; (Basque), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;app_info&quot;>App info&lt;/string>" errorLine2=" ~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="6" column="13" />
<issue
id="MissingTranslation"
message="&quot;launcher_settings&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh)"
errorLine1=" &lt;string name=&quot;launcher_settings&quot;>Launcher Settings&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="4"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;touch_hold_widget&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;eu&quot; (Basque), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
<issue
id="MissingTranslation"
message="&quot;app_info&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh)"
errorLine1=" &lt;string name=&quot;app_info&quot;>App info&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="5"
column="13"/>
</issue>
<issue
id="MissingTranslation"
message="&quot;touch_hold_widget&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh)"
errorLine1=" &lt;string name=&quot;touch_hold_widget&quot;>Long press the widget and drag it on your home screen&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="7" column="13" />
<location
file="src/main/res/values/strings.xml"
line="6"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;uninstall&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;eu&quot; (Basque), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;uninstall&quot;>Uninstall&lt;/string>" errorLine2=" ~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="8" column="13" />
<issue
id="MissingTranslation"
message="&quot;uninstall&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh)"
errorLine1=" &lt;string name=&quot;uninstall&quot;>Uninstall&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="7"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;hide_icon&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;eu&quot; (Basque), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;hide_icon&quot;>Hide icon&lt;/string>" errorLine2=" ~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="9" column="13" />
<issue
id="MissingTranslation"
message="&quot;hide_icon&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh)"
errorLine1=" &lt;string name=&quot;hide_icon&quot;>Hide icon&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="8"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;add_hidden_icons&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;eu&quot; (Basque), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;add_hidden_icons&quot;>Add hidden icons&lt;/string>" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="10" column="13" />
<issue
id="MissingTranslation"
message="&quot;add_hidden_icons&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh)"
errorLine1=" &lt;string name=&quot;add_hidden_icons&quot;>Add hidden icons&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="9"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;manage_hidden_icons&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;eu&quot; (Basque), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;manage_hidden_icons&quot;>Manage hidden icons&lt;/string>" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="11" column="13" />
<issue
id="MissingTranslation"
message="&quot;manage_hidden_icons&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh)"
errorLine1=" &lt;string name=&quot;manage_hidden_icons&quot;>Manage hidden icons&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="10"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;hidden_icons&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;eu&quot; (Basque), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;hidden_icons&quot;>Hidden icons&lt;/string>" errorLine2=" ~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="12" column="13" />
<issue
id="MissingTranslation"
message="&quot;hidden_icons&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh)"
errorLine1=" &lt;string name=&quot;hidden_icons&quot;>Hidden icons&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="11"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;hidden_icons_placeholder&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;eu&quot; (Basque), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
<issue
id="MissingTranslation"
message="&quot;hidden_icons_placeholder&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;bqi&quot;"
errorLine1=" &lt;string name=&quot;hidden_icons_placeholder&quot;>Some apps cannot be uninstalled due to system restrictions, but you can at least hide their icons to avoid seeing them.&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="13" column="13" />
<location
file="src/main/res/values/strings.xml"
line="12"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;app_drawer_settings&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;hr&quot; (Croatian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;in&quot; (Indonesian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;iw&quot; (Hebrew), &quot;eu&quot; (Basque), &quot;nb&quot; (Norwegian Bokmål), &quot;ja&quot; (Japanese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;fi&quot; (Finnish), &quot;bg&quot; (Bulgarian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;sl&quot; (Slovenian), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;sr&quot; (Serbian), &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;gl&quot; (Galician), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;pa&quot; (Punjabi), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;app_drawer_settings&quot;>App drawer&lt;/string>" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="14" column="13" />
<issue
id="MissingTranslation"
message="&quot;app_drawer_settings&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;nb&quot; (Norwegian Bokmål), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bg&quot; (Bulgarian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;sl&quot; (Slovenian), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;pa&quot; (Punjabi), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh)"
errorLine1=" &lt;string name=&quot;app_drawer_settings&quot;>App drawer&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="13"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;close_app_drawer_on_app_open&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;hr&quot; (Croatian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;in&quot; (Indonesian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;iw&quot; (Hebrew), &quot;eu&quot; (Basque), &quot;nb&quot; (Norwegian Bokmål), &quot;ja&quot; (Japanese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;fi&quot; (Finnish), &quot;bg&quot; (Bulgarian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;sl&quot; (Slovenian), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;sr&quot; (Serbian), &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;gl&quot; (Galician), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;pa&quot; (Punjabi), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
<issue
id="MissingTranslation"
message="&quot;close_app_drawer_on_app_open&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;nb&quot; (Norwegian Bokmål), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bg&quot; (Bulgarian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;sl&quot; (Slovenian), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;pa&quot; (Punjabi), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh)"
errorLine1=" &lt;string name=&quot;close_app_drawer_on_app_open&quot;>Close app drawer on opening an app&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="15" column="13" />
<location
file="src/main/res/values/strings.xml"
line="14"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;home_screen_settings&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;hr&quot; (Croatian), &quot;lv&quot; (Latvian), &quot;hu&quot; (Hungarian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;in&quot; (Indonesian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;iw&quot; (Hebrew), &quot;eu&quot; (Basque), &quot;ar&quot; (Arabic), &quot;nb&quot; (Norwegian Bokmål), &quot;ja&quot; (Japanese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;fi&quot; (Finnish), &quot;bg&quot; (Bulgarian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;sl&quot; (Slovenian), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ca&quot; (Catalan), &quot;ltg&quot;, &quot;sr&quot; (Serbian), &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;gl&quot; (Galician), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;pa&quot; (Punjabi), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;home_screen_settings&quot;>Home screen&lt;/string>" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="16" column="13" />
<issue
id="MissingTranslation"
message="&quot;auto_show_keyboard_in_app_drawer&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;hu&quot; (Hungarian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;in&quot; (Indonesian), &quot;ms&quot; (Malay), &quot;el&quot; (Greek), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ar&quot; (Arabic), &quot;vi&quot; (Vietnamese), &quot;nb&quot; (Norwegian Bokmål), &quot;ja&quot; (Japanese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;ro&quot; (Romanian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bg&quot; (Bulgarian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;sl&quot; (Slovenian), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;gl&quot; (Galician), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;pa&quot; (Punjabi), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;"
errorLine1=" &lt;string name=&quot;auto_show_keyboard_in_app_drawer&quot;>Automatically show keyboard in drawer&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="15"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;widget_too_big&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;hr&quot; (Croatian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;in&quot; (Indonesian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;iw&quot; (Hebrew), &quot;eu&quot; (Basque), &quot;nb&quot; (Norwegian Bokmål), &quot;ja&quot; (Japanese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;fi&quot; (Finnish), &quot;bg&quot; (Bulgarian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;sl&quot; (Slovenian), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;sr&quot; (Serbian), &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;gl&quot; (Galician), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;pa&quot; (Punjabi), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
<issue
id="MissingTranslation"
message="&quot;home_screen_settings&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ar&quot; (Arabic), &quot;nb&quot; (Norwegian Bokmål), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bg&quot; (Bulgarian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;sl&quot; (Slovenian), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;pa&quot; (Punjabi), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh)"
errorLine1=" &lt;string name=&quot;home_screen_settings&quot;>Home screen&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="16"
column="13"/>
</issue>
<issue
id="MissingTranslation"
message="&quot;widget_too_big&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;nb&quot; (Norwegian Bokmål), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bg&quot; (Bulgarian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;sl&quot; (Slovenian), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;pa&quot; (Punjabi), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh)"
errorLine1=" &lt;string name=&quot;widget_too_big&quot;>Widget is too big for current home screen size&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="17" column="13" />
<location
file="src/main/res/values/strings.xml"
line="17"
column="13"/>
</issue>
<issue id="NotifyDataSetChanged"
<issue
id="MissingTranslation"
message="&quot;double_tap_to_lock&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ar&quot; (Arabic), &quot;vi&quot; (Vietnamese), &quot;nb&quot; (Norwegian Bokmål), &quot;ja&quot; (Japanese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;ro&quot; (Romanian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bg&quot; (Bulgarian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;sl&quot; (Slovenian), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;pa&quot; (Punjabi), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;"
errorLine1=" &lt;string name=&quot;double_tap_to_lock&quot;>Double tap to lock screen&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="18"
column="13"/>
</issue>
<issue
id="MissingTranslation"
message="&quot;lock_device_admin_hint&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ar&quot; (Arabic), &quot;vi&quot; (Vietnamese), &quot;nb&quot; (Norwegian Bokmål), &quot;ja&quot; (Japanese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;ro&quot; (Romanian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bg&quot; (Bulgarian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;sl&quot; (Slovenian), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;pa&quot; (Punjabi), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;bqi&quot;, &quot;ckb&quot;"
errorLine1=" &lt;string name=&quot;lock_device_admin_hint&quot;>To enable the double tap to lock screen feature, you need to grant admin permission. Note that the app cannot be uninstalled until this permission is removed.&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="19"
column="13"/>
</issue>
<issue
id="MissingTranslation"
message="&quot;lock_device_admin_warning&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ar&quot; (Arabic), &quot;vi&quot; (Vietnamese), &quot;nb&quot; (Norwegian Bokmål), &quot;ja&quot; (Japanese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;ro&quot; (Romanian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bg&quot; (Bulgarian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;sl&quot; (Slovenian), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;pa&quot; (Punjabi), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;"
errorLine1=" &lt;string name=&quot;lock_device_admin_warning&quot;>Deactivating admin permission will disable the double tap to lock screen feature.&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="20"
column="13"/>
</issue>
<issue
id="NotifyDataSetChanged"
message="It will always be more efficient to use more specific change events if you can. Rely on `notifyDataSetChanged` as a last resort."
errorLine1=" notifyDataSetChanged()" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/kotlin/org.fossify.home/adapters/FolderIconsAdapter.kt" line="107" column="9" />
errorLine1=" notifyDataSetChanged()"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/adapters/FolderIconsAdapter.kt"
line="107"
column="9"/>
</issue>
<issue id="NotifyDataSetChanged"
<issue
id="NotifyDataSetChanged"
message="It will always be more efficient to use more specific change events if you can. Rely on `notifyDataSetChanged` as a last resort."
errorLine1=" notifyDataSetChanged()" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/kotlin/org.fossify.home/adapters/LaunchersAdapter.kt" line="83" column="13" />
errorLine1=" notifyDataSetChanged()"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/adapters/WidgetsAdapter.kt"
line="120"
column="13"/>
</issue>
<issue id="NotifyDataSetChanged"
<issue
id="NotifyDataSetChanged"
message="It will always be more efficient to use more specific change events if you can. Rely on `notifyDataSetChanged` as a last resort."
errorLine1=" notifyDataSetChanged()" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/kotlin/org.fossify.home/adapters/LaunchersAdapter.kt" line="92" column="13" />
errorLine1=" notifyDataSetChanged()"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/adapters/WidgetsAdapter.kt"
line="127"
column="13"/>
</issue>
<issue id="NotifyDataSetChanged"
message="It will always be more efficient to use more specific change events if you can. Rely on `notifyDataSetChanged` as a last resort."
errorLine1=" notifyDataSetChanged()" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/kotlin/org.fossify.home/adapters/LaunchersAdapter.kt" line="99" column="13" />
</issue>
<issue id="NotifyDataSetChanged"
message="It will always be more efficient to use more specific change events if you can. Rely on `notifyDataSetChanged` as a last resort."
errorLine1=" notifyDataSetChanged()" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/kotlin/org.fossify.home/adapters/WidgetsAdapter.kt" line="120" column="13" />
</issue>
<issue id="NotifyDataSetChanged"
message="It will always be more efficient to use more specific change events if you can. Rely on `notifyDataSetChanged` as a last resort."
errorLine1=" notifyDataSetChanged()" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/kotlin/org.fossify.home/adapters/WidgetsAdapter.kt" line="127" column="13" />
</issue>
<issue id="ObsoleteSdkInt"
<issue
id="ObsoleteSdkInt"
message="This folder configuration (`v26`) is unnecessary; `minSdkVersion` is 26. Merge all the resources in this folder into `mipmap-anydpi`.">
<location file="src/main/res/mipmap-anydpi-v26" />
<location
file="src/main/res/mipmap-anydpi-v26"/>
</issue>
<issue id="VectorPath"
message="Very long vector path (937 characters), which is bad for performance. Considering reducing precision, removing minor details or rasterizing vector."
errorLine1=" &lt;path android:fillColor=&quot;#FFFFFFFF&quot; android:pathData=&quot;M16.952 32.327c-0.206 0-0.377-0.068-0.512-0.202-0.135-0.136-0.203-0.307-0.203-0.513v-8.838l-1.429 1.096c-0.159 0.127-0.334 0.175-0.524 0.143-0.191-0.032-0.349-0.127-0.476-0.286-0.127-0.159-0.175-0.334-0.143-0.524 0.032-0.191 0.127-0.349 0.286-0.476l2.287-1.739v-2.001c0-0.206 0.067-0.377 0.202-0.512s0.306-0.202 0.512-0.202c0.206 0 0.377 0.068 0.512 0.202 0.135 0.135 0.202 0.306 0.202 0.512v0.905l5.765-4.383c0.064-0.048 0.131-0.083 0.202-0.107 0.071-0.024 0.147-0.036 0.226-0.036 0.079 0 0.155 0.012 0.226 0.036 0.071 0.024 0.139 0.06 0.202 0.107l9.505 7.242c0.159 0.127 0.25 0.286 0.274 0.476 0.024 0.191-0.028 0.365-0.155 0.524-0.127 0.159-0.282 0.25-0.465 0.274-0.183 0.024-0.353-0.028-0.512-0.155l-1.453-1.096v8.838c0 0.206-0.068 0.377-0.202 0.512-0.135 0.135-0.306 0.202-0.512 0.202h-4.35a1 1 44.991 0 1-1-1l-0.001-2.941a1.001 1.001 45.025 0 0-1-1.001l-1.114-0.001a0.999 0.999 135.043 0 0-1 0.999l-0.001 2.944a1 1 135.009 0 1-1 1z&quot;/>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/drawable/ic_launcher_monochrome.xml" line="2" column="59" />
</issue>
<issue id="Overdraw"
<issue
id="Overdraw"
message="Possible overdraw: Root element paints background `?attr/selectableItemBackground` with a theme that also paints a background (inferred theme is `@style/AppTheme`)"
errorLine1=" android:background=&quot;?attr/selectableItemBackground&quot;" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/layout/item_hidden_icon.xml" line="6" column="5" />
errorLine1=" android:background=&quot;?attr/selectableItemBackground&quot;"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/layout/item_hidden_icon.xml"
line="6"
column="5"/>
</issue>
<issue id="Overdraw"
message="Possible overdraw: Root element paints background `?attr/selectableItemBackground` with a theme that also paints a background (inferred theme is `@style/AppTheme`)"
errorLine1=" android:background=&quot;?attr/selectableItemBackground&quot;" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/layout/item_launcher_label.xml" line="6" column="5" />
<issue
id="UnusedResources"
message="The resource `R.layout.dialog_folder_icons` appears to be unused"
errorLine1="&lt;FrameLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;"
errorLine2="^">
<location
file="src/main/res/layout/dialog_folder_icons.xml"
line="2"
column="1"/>
</issue>
<issue id="UnusedResources" message="The resource `R.layout.dialog_folder_icons` appears to be unused"
errorLine1="&lt;FrameLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;" errorLine2="^">
<location file="src/main/res/layout/dialog_folder_icons.xml" line="2" column="1" />
</issue>
<issue id="UnusedResources" message="The resource `R.dimen.icon_long_press_anchor_offset_y` appears to be unused"
<issue
id="UnusedResources"
message="The resource `R.dimen.icon_long_press_anchor_offset_y` appears to be unused"
errorLine1=" &lt;dimen name=&quot;icon_long_press_anchor_offset_y&quot;>150dp&lt;/dimen>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/dimens.xml" line="3" column="12" />
<location
file="src/main/res/values/dimens.xml"
line="3"
column="12"/>
</issue>
<issue id="UnusedResources" message="The resource `R.dimen.min_folder_view_height` appears to be unused"
errorLine1=" &lt;dimen name=&quot;min_folder_view_height&quot;>200dp&lt;/dimen>" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/dimens.xml" line="12" column="12" />
<issue
id="UnusedResources"
message="The resource `R.dimen.min_folder_view_height` appears to be unused"
errorLine1=" &lt;dimen name=&quot;min_folder_view_height&quot;>200dp&lt;/dimen>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/dimens.xml"
line="12"
column="12"/>
</issue>
<issue id="UnusedResources" message="The resource `R.dimen.max_folder_view_height` appears to be unused"
errorLine1=" &lt;dimen name=&quot;max_folder_view_height&quot;>500dp&lt;/dimen>" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/dimens.xml" line="13" column="12" />
<issue
id="UnusedResources"
message="The resource `R.dimen.max_folder_view_height` appears to be unused"
errorLine1=" &lt;dimen name=&quot;max_folder_view_height&quot;>500dp&lt;/dimen>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/dimens.xml"
line="13"
column="12"/>
</issue>
<issue id="UnusedResources" message="The resource `R.string.hide_icon` appears to be unused"
errorLine1=" &lt;string name=&quot;hide_icon&quot;>Hide icon&lt;/string>" errorLine2=" ~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="9" column="13" />
<issue
id="UnusedResources"
message="The resource `R.color.ic_launcher_amber_background` appears to be unused"
errorLine1=" &lt;color name=&quot;ic_launcher_amber_background&quot;>#106D20&lt;/color>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/ic_launcher_amber_background.xml"
line="3"
column="12"/>
</issue>
<issue id="UnusedResources" message="The resource `R.string.add_hidden_icons` appears to be unused"
errorLine1=" &lt;string name=&quot;add_hidden_icons&quot;>Add hidden icons&lt;/string>" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="10" column="13" />
<issue
id="UnusedResources"
message="The resource `R.color.ic_launcher_blue_background` appears to be unused"
errorLine1=" &lt;color name=&quot;ic_launcher_blue_background&quot;>#106D20&lt;/color>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/ic_launcher_blue_background.xml"
line="3"
column="12"/>
</issue>
<issue id="AlwaysShowAction" message="Prefer &quot;`ifRoom`&quot; instead of &quot;`always`&quot;"
errorLine1=" app:showAsAction=&quot;always&quot; />" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/menu/menu_app_icon.xml" line="9" column="13" />
<location file="src/main/res/menu/menu_app_icon.xml" line="14" column="13" />
<location file="src/main/res/menu/menu_app_icon.xml" line="19" column="13" />
<location file="src/main/res/menu/menu_app_icon.xml" line="24" column="13" />
<location file="src/main/res/menu/menu_app_icon.xml" line="29" column="13" />
<location file="src/main/res/menu/menu_app_icon.xml" line="34" column="13" />
<issue
id="UnusedResources"
message="The resource `R.string.hide_icon` appears to be unused"
errorLine1=" &lt;string name=&quot;hide_icon&quot;>Hide icon&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="8"
column="13"/>
</issue>
<issue id="AlwaysShowAction" message="Prefer &quot;`ifRoom`&quot; instead of &quot;`always`&quot;"
errorLine1=" app:showAsAction=&quot;always&quot; />" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/menu/menu_home_screen.xml" line="7" column="9" />
<location file="src/main/res/menu/menu_home_screen.xml" line="11" column="9" />
<issue
id="UnusedResources"
message="The resource `R.string.add_hidden_icons` appears to be unused"
errorLine1=" &lt;string name=&quot;add_hidden_icons&quot;>Add hidden icons&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="9"
column="13"/>
</issue>
<issue id="ClickableViewAccessibility" message="Custom view `MyAppWidgetHostView` overrides `onTouchEvent` but not `performClick`"
errorLine1=" override fun onTouchEvent(event: MotionEvent?): Boolean {" errorLine2=" ~~~~~~~~~~~~">
<location file="src/main/kotlin/org.fossify.home/views/MyAppWidgetHostView.kt" line="23" column="18" />
<issue
id="UseKtx"
message="Use the KTX extension function `SharedPreferences.edit` instead?"
errorLine1=" set(wasHomeScreenInit) = prefs.edit().putBoolean(WAS_HOME_SCREEN_INIT, wasHomeScreenInit).apply()"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/helpers/Config.kt"
line="14"
column="34"/>
</issue>
<issue id="ClickableViewAccessibility" message="Custom view `MyAppWidgetResizeFrame` overrides `onTouchEvent` but not `performClick`"
errorLine1=" override fun onTouchEvent(event: MotionEvent?): Boolean {" errorLine2=" ~~~~~~~~~~~~">
<location file="src/main/kotlin/org.fossify.home/views/MyAppWidgetResizeFrame.kt" line="105" column="18" />
<issue
id="UseKtx"
message="Use the KTX extension function `SharedPreferences.edit` instead?"
errorLine1=" set(homeColumnCount) = prefs.edit().putInt(HOME_COLUMN_COUNT, homeColumnCount).apply()"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/helpers/Config.kt"
line="18"
column="32"/>
</issue>
<issue id="ContentDescription" message="Missing `contentDescription` attribute on image" errorLine1=" &lt;ImageView" errorLine2=" ~~~~~~~~~">
<location file="src/main/res/layout/item_widget_preview.xml" line="9" column="6" />
<issue
id="UseKtx"
message="Use the KTX extension function `SharedPreferences.edit` instead?"
errorLine1=" set(homeRowCount) = prefs.edit().putInt(HOME_ROW_COUNT, homeRowCount).apply()"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/helpers/Config.kt"
line="22"
column="29"/>
</issue>
<issue id="RtlSymmetry" message="When you define `paddingStart` you should probably also define `paddingEnd` for right-to-left symmetry"
errorLine1=" android:paddingStart=&quot;@dimen/medium_margin&quot;" errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/layout/item_widget_list_section.xml" line="27" column="9" />
<issue
id="UseKtx"
message="Use the KTX extension function `SharedPreferences.edit` instead?"
errorLine1=" set(drawerColumnCount) = prefs.edit().putInt(DRAWER_COLUMN_COUNT, drawerColumnCount).apply()"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/helpers/Config.kt"
line="26"
column="34"/>
</issue>
<issue
id="UseKtx"
message="Use the KTX extension function `SharedPreferences.edit` instead?"
errorLine1=" set(showSearchBar) = prefs.edit().putBoolean(SHOW_SEARCH_BAR, showSearchBar).apply()"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/helpers/Config.kt"
line="30"
column="30"/>
</issue>
<issue
id="UseKtx"
message="Use the KTX extension function `SharedPreferences.edit` instead?"
errorLine1=" set(closeAppDrawer) = prefs.edit().putBoolean(CLOSE_APP_DRAWER, closeAppDrawer).apply()"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/helpers/Config.kt"
line="34"
column="31"/>
</issue>
<issue
id="UseKtx"
message="Use the KTX extension function `SharedPreferences.edit` instead?"
errorLine1=" set(autoShowKeyboardInAppDrawer) = prefs.edit()"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/helpers/Config.kt"
line="38"
column="44"/>
</issue>
<issue
id="UseKtx"
message="Use the KTX extension function `Int.toDrawable` instead?"
errorLine1=" background = ColorDrawable(Color.TRANSPARENT)"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/views/MyAppWidgetResizeFrame.kt"
line="48"
column="22"/>
</issue>
<issue
id="UseKtx"
message="Use the KTX extension function `Int.toDrawable` instead?"
errorLine1=" background = ColorDrawable(Color.TRANSPARENT)"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/views/MyAppWidgetResizeFrame.kt"
line="48"
column="22"/>
</issue>
<issue
id="ClickableViewAccessibility"
message="Custom view `MyAppWidgetHostView` overrides `onTouchEvent` but not `performClick`"
errorLine1=" override fun onTouchEvent(event: MotionEvent?): Boolean {"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/views/MyAppWidgetHostView.kt"
line="23"
column="18"/>
</issue>
<issue
id="ClickableViewAccessibility"
message="Custom view `MyAppWidgetResizeFrame` overrides `onTouchEvent` but not `performClick`"
errorLine1=" override fun onTouchEvent(event: MotionEvent?): Boolean {"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/views/MyAppWidgetResizeFrame.kt"
line="105"
column="18"/>
</issue>
<issue
id="ContentDescription"
message="Missing `contentDescription` attribute on image"
errorLine1=" &lt;ImageView"
errorLine2=" ~~~~~~~~~">
<location
file="src/main/res/layout/item_widget_preview.xml"
line="9"
column="6"/>
</issue>
<issue
id="SetTextI18n"
message="Number formatting does not take into account locale settings. Consider using `String.format` instead."
errorLine1=" binding.settingsDrawerColumnCount.text = currentColumnCount.toString()"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/activities/SettingsActivity.kt"
line="156"
column="50"/>
</issue>
<issue
id="SetTextI18n"
message="Number formatting does not take into account locale settings. Consider using `String.format` instead."
errorLine1=" binding.settingsHomeScreenRowCount.text = currentRowCount.toString()"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/activities/SettingsActivity.kt"
line="192"
column="51"/>
</issue>
<issue
id="SetTextI18n"
message="Number formatting does not take into account locale settings. Consider using `String.format` instead."
errorLine1=" binding.settingsHomeScreenColumnCount.text = currentColumnCount.toString()"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/activities/SettingsActivity.kt"
line="218"
column="54"/>
</issue>
<issue
id="RtlSymmetry"
message="When you define `paddingStart` you should probably also define `paddingEnd` for right-to-left symmetry"
errorLine1=" android:paddingStart=&quot;@dimen/medium_margin&quot;"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/layout/item_widget_list_section.xml"
line="27"
column="9"/>
</issue>
</issues>

View File

@@ -28,7 +28,6 @@
android:appCategory="productivity"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_launcher_name"
android:localeConfig="@xml/locale_config"
android:roundIcon="@mipmap/ic_launcher"
android:supportsRtl="true"
android:theme="@style/AppTheme">
@@ -431,5 +430,17 @@
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity-alias>
<receiver
android:name=".receivers.LockDeviceAdminReceiver"
android:exported="true"
android:permission="android.permission.BIND_DEVICE_ADMIN">
<meta-data
android:name="android.app.device_admin"
android:resource="@xml/device_admin_policies" />
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
</receiver>
</application>
</manifest>

View File

@@ -21,18 +21,12 @@ class HiddenIconsActivity : SimpleActivity(), RefreshRecyclerViewListener {
private val binding by viewBinding(ActivityHiddenIconsBinding::inflate)
override fun onCreate(savedInstanceState: Bundle?) {
isMaterialActivity = true
super.onCreate(savedInstanceState)
setContentView(binding.root)
updateIcons()
updateMaterialActivityViews(
binding.manageHiddenIconsCoordinator,
binding.manageHiddenIconsList,
useTransparentNavigation = true,
useTopSearchMenu = false
)
setupMaterialScrollListener(binding.manageHiddenIconsList, binding.manageHiddenIconsToolbar)
setupEdgeToEdge(padBottomSystem = listOf(binding.manageHiddenIconsList))
setupMaterialScrollListener(binding.manageHiddenIconsList, binding.manageHiddenIconsAppbar)
val layoutManager = binding.manageHiddenIconsList.layoutManager as MyGridLayoutManager
layoutManager.spanCount = config.drawerColumnCount
@@ -40,7 +34,7 @@ class HiddenIconsActivity : SimpleActivity(), RefreshRecyclerViewListener {
override fun onResume() {
super.onResume()
setupToolbar(binding.manageHiddenIconsToolbar, NavigationIcon.Arrow)
setupTopAppBar(binding.manageHiddenIconsAppbar, NavigationIcon.Arrow)
}
private fun updateIcons() {

View File

@@ -2,15 +2,15 @@ package org.fossify.home.activities
import android.animation.ObjectAnimator
import android.annotation.SuppressLint
import android.app.Activity
import android.app.admin.DevicePolicyManager
import android.app.role.RoleManager
import android.appwidget.AppWidgetHost
import android.appwidget.AppWidgetManager
import android.appwidget.AppWidgetProviderInfo
import android.content.ActivityNotFoundException
import android.content.ComponentName
import android.content.Context
import android.content.Intent
import android.content.Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT
import android.content.pm.ActivityInfo
import android.content.pm.LauncherApps
import android.content.pm.PackageManager
@@ -19,10 +19,10 @@ import android.graphics.Bitmap
import android.graphics.Color
import android.graphics.Rect
import android.graphics.drawable.Drawable
import android.net.Uri
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.provider.Settings
import android.provider.Telephony
import android.telecom.TelecomManager
import android.view.ContextThemeWrapper
@@ -35,10 +35,9 @@ import android.view.animation.DecelerateInterpolator
import android.widget.PopupMenu
import androidx.core.graphics.drawable.toBitmap
import androidx.core.graphics.drawable.toDrawable
import androidx.core.net.toUri
import androidx.core.view.GestureDetectorCompat
import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsCompat.Type
import androidx.core.view.isVisible
import androidx.core.view.iterator
import androidx.viewbinding.ViewBinding
@@ -53,6 +52,7 @@ import org.fossify.commons.extensions.onGlobalLayout
import org.fossify.commons.extensions.performHapticFeedback
import org.fossify.commons.extensions.realScreenSize
import org.fossify.commons.extensions.showErrorToast
import org.fossify.commons.extensions.showKeyboard
import org.fossify.commons.extensions.toast
import org.fossify.commons.extensions.viewBinding
import org.fossify.commons.helpers.DARK_GREY
@@ -92,6 +92,7 @@ import org.fossify.home.interfaces.ItemMenuListener
import org.fossify.home.models.AppLauncher
import org.fossify.home.models.HiddenIcon
import org.fossify.home.models.HomeScreenGridItem
import org.fossify.home.receivers.LockDeviceAdminReceiver
import kotlin.math.abs
import kotlin.math.max
import kotlin.math.min
@@ -132,11 +133,16 @@ class MainActivity : SimpleActivity(), FlingListener {
super.onCreate(savedInstanceState)
setContentView(binding.root)
appLaunched(BuildConfig.APPLICATION_ID)
setupEdgeToEdge(
padTopSystem = listOf(binding.allAppsFragment.root, binding.widgetsFragment.root),
padBottomImeAndSystem = listOf(
binding.allAppsFragment.allAppsGrid, binding.widgetsFragment.widgetsList
),
padBottomSystem = listOf(binding.homeScreenGrid.root)
)
mDetector = GestureDetectorCompat(this, MyGestureListener(this))
WindowCompat.setDecorFitsSystemWindows(window, false)
mScreenHeight = realScreenSize.y
mAllAppsFragmentY = mScreenHeight
mWidgetsFragmentY = mScreenHeight
@@ -163,10 +169,15 @@ class MainActivity : SimpleActivity(), FlingListener {
clickedGridItem = it
)
}
if (!isDefaultLauncher()) {
requestHomeRole()
}
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
val wasAnyFragmentOpen = isAllAppsFragmentExpanded() || isWidgetsFragmentExpanded()
if (wasJustPaused) {
if (isAllAppsFragmentExpanded()) {
hideFragment(binding.allAppsFragment)
@@ -180,6 +191,13 @@ class MainActivity : SimpleActivity(), FlingListener {
}
binding.allAppsFragment.searchBar.closeSearch()
// scroll to first page when home button is pressed
val alreadyOnHome = intent.flags and FLAG_ACTIVITY_BROUGHT_TO_FRONT == 0
if (alreadyOnHome && !wasAnyFragmentOpen) {
binding.homeScreenGrid.root.skipToPage(0)
}
handleIntentAction(intent)
}
@@ -191,21 +209,11 @@ class MainActivity : SimpleActivity(), FlingListener {
override fun onResume() {
super.onResume()
wasJustPaused = false
updateStatusbarColor(Color.TRANSPARENT)
with(binding.mainHolder) {
onGlobalLayout {
binding.allAppsFragment.root.setupViews()
binding.widgetsFragment.root.setupViews()
updateStatusbarColor(Color.TRANSPARENT)
}
setOnApplyWindowInsetsListener { _, insets ->
val windowInsets = WindowInsetsCompat.toWindowInsetsCompat(insets)
val systemBarInsets = windowInsets.getInsets(Type.systemBars() or Type.ime())
binding.allAppsFragment.root.setPadding(0, systemBarInsets.top, 0, 0)
binding.widgetsFragment.root.setPadding(0, systemBarInsets.top, 0, 0)
insets
}
}
@@ -220,7 +228,7 @@ class MainActivity : SimpleActivity(), FlingListener {
if (!showIcon) {
try {
launchersDB.deleteById(it.id!!)
} catch (ignored: Exception) {
} catch (_: Exception) {
}
}
showIcon
@@ -231,11 +239,6 @@ class MainActivity : SimpleActivity(), FlingListener {
refreshLaunchers()
}
// avoid showing fully colored navigation bars
if (window.navigationBarColor != resources.getColor(R.color.semitransparent_navigation)) {
window.navigationBarColor = Color.TRANSPARENT
}
binding.homeScreenGrid.root.resizeGrid(
newRowCount = config.homeRowCount,
newColumnCount = config.homeColumnCount
@@ -246,7 +249,11 @@ class MainActivity : SimpleActivity(), FlingListener {
override fun onStop() {
super.onStop()
binding.homeScreenGrid.root.appWidgetHost.stopListening()
try {
binding.homeScreenGrid.root.appWidgetHost.stopListening()
} catch (_: Exception) {
}
wasJustPaused = false
}
@@ -255,19 +262,23 @@ class MainActivity : SimpleActivity(), FlingListener {
wasJustPaused = true
}
@SuppressLint("MissingSuperCall")
override fun onBackPressed() {
if (isAllAppsFragmentExpanded()) {
override fun onBackPressedCompat(): Boolean {
return if (isAllAppsFragmentExpanded()) {
if (!binding.allAppsFragment.root.onBackPressed()) {
hideFragment(binding.allAppsFragment)
true
} else {
true
}
} else if (isWidgetsFragmentExpanded()) {
hideFragment(binding.widgetsFragment)
true
} else if (binding.homeScreenGrid.resizeFrame.isVisible) {
binding.homeScreenGrid.root.hideResizeLines()
true
} else {
// this is a home launcher app, avoid glitching by pressing Back
//super.onBackPressed()
// this is a home launcher app, prevent back press from doing anything
true
}
}
@@ -281,19 +292,20 @@ class MainActivity : SimpleActivity(), FlingListener {
}
}
REQUEST_ALLOW_BINDING_WIDGET -> mActionOnCanBindWidget?.invoke(resultCode == Activity.RESULT_OK)
REQUEST_CONFIGURE_WIDGET -> mActionOnWidgetConfiguredWidget?.invoke(resultCode == Activity.RESULT_OK)
REQUEST_ALLOW_BINDING_WIDGET -> mActionOnCanBindWidget?.invoke(resultCode == RESULT_OK)
REQUEST_CONFIGURE_WIDGET -> mActionOnWidgetConfiguredWidget?.invoke(resultCode == RESULT_OK)
REQUEST_CREATE_SHORTCUT -> {
if (resultCode == Activity.RESULT_OK && resultData != null) {
if (resultCode == RESULT_OK && resultData != null) {
val launcherApps =
applicationContext.getSystemService(Context.LAUNCHER_APPS_SERVICE) as LauncherApps
applicationContext.getSystemService(LAUNCHER_APPS_SERVICE) as LauncherApps
if (launcherApps.hasShortcutHostPermission()) {
val item = launcherApps.getPinItemRequest(resultData)
val shortcutInfo = item?.shortcutInfo ?: return
if (item.accept()) {
val shortcutId = item.shortcutInfo?.id!!
val label = item.shortcutInfo.getLabel()
val shortcutId = shortcutInfo.id
val label = shortcutInfo.getLabel()
val icon = launcherApps.getShortcutBadgedIconDrawable(
item.shortcutInfo!!,
shortcutInfo,
resources.displayMetrics.densityDpi
)
mActionOnAddShortcut?.invoke(shortcutId, label, icon)
@@ -308,7 +320,6 @@ class MainActivity : SimpleActivity(), FlingListener {
super.onConfigurationChanged(newConfig)
binding.allAppsFragment.root.onConfigurationChanged()
binding.widgetsFragment.root.onConfigurationChanged()
updateStatusbarColor(Color.TRANSPARENT)
}
override fun onTouchEvent(event: MotionEvent?): Boolean {
@@ -322,7 +333,7 @@ class MainActivity : SimpleActivity(), FlingListener {
try {
mDetector.onTouchEvent(event)
} catch (ignored: Exception) {
} catch (_: Exception) {
}
when (event.actionMasked) {
@@ -434,17 +445,15 @@ class MainActivity : SimpleActivity(), FlingListener {
private fun handleIntentAction(intent: Intent) {
if (intent.action == LauncherApps.ACTION_CONFIRM_PIN_SHORTCUT) {
val launcherApps =
applicationContext.getSystemService(Context.LAUNCHER_APPS_SERVICE) as LauncherApps
applicationContext.getSystemService(LAUNCHER_APPS_SERVICE) as LauncherApps
val item = launcherApps.getPinItemRequest(intent)
if (item.shortcutInfo == null) {
return
}
val shortcutInfo = item?.shortcutInfo ?: return
ensureBackgroundThread {
val shortcutId = item.shortcutInfo?.id!!
val label = item.shortcutInfo.getLabel()
val shortcutId = shortcutInfo.id
val label = shortcutInfo.getLabel()
val icon = launcherApps.getShortcutBadgedIconDrawable(
item.shortcutInfo!!,
shortcutInfo,
resources.displayMetrics.densityDpi
)
val (page, rect) = findFirstEmptyCell()
@@ -455,7 +464,7 @@ class MainActivity : SimpleActivity(), FlingListener {
right = rect.right,
bottom = rect.bottom,
page = page,
packageName = item.shortcutInfo!!.`package`,
packageName = shortcutInfo.`package`,
activityName = "",
title = label,
type = ITEM_TYPE_SHORTCUT,
@@ -477,7 +486,7 @@ class MainActivity : SimpleActivity(), FlingListener {
try {
item.accept()
binding.homeScreenGrid.root.storeAndShowGridItem(gridItem)
} catch (ignored: IllegalStateException) {
} catch (_: IllegalStateException) {
}
}
}
@@ -571,11 +580,23 @@ class MainActivity : SimpleActivity(), FlingListener {
window.navigationBarColor = resources.getColor(R.color.semitransparent_navigation)
binding.homeScreenGrid.root.fragmentExpanded()
binding.homeScreenGrid.root.hideResizeLines()
@SuppressLint("AccessibilityFocus")
fragment.root.performAccessibilityAction(
AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS,
null
)
if (
fragment is AllAppsFragmentBinding
&& config.showSearchBar
&& config.autoShowKeyboardInAppDrawer
) {
fragment.root.postDelayed({
showKeyboard(fragment.searchBar.binding.topToolbarSearch)
}, animationDuration)
}
Handler(Looper.getMainLooper()).postDelayed({
updateStatusBarIcons()
}, animationDuration)
@@ -631,6 +652,23 @@ class MainActivity : SimpleActivity(), FlingListener {
}
}
fun homeScreenDoubleTapped(eventX: Float, eventY: Float) {
val (x, y) = binding.homeScreenGrid.root.intoViewSpaceCoords(eventX, eventY)
val clickedGridItem = binding.homeScreenGrid.root.isClickingGridItem(x.toInt(), y.toInt())
if (clickedGridItem != null) {
return
}
val devicePolicyManager =
getSystemService(DEVICE_POLICY_SERVICE) as DevicePolicyManager
val isLockDeviceAdminActive = devicePolicyManager.isAdminActive(
ComponentName(this, LockDeviceAdminReceiver::class.java)
)
if (isLockDeviceAdminActive) {
devicePolicyManager.lockNow()
}
}
fun closeAppDrawer(delayed: Boolean = false) {
if (isAllAppsFragmentExpanded()) {
val close = {
@@ -675,7 +713,7 @@ class MainActivity : SimpleActivity(), FlingListener {
val userHandle = android.os.Process.myUserHandle()
val shortcutBounds = binding.homeScreenGrid.root.getClickableRect(clickedGridItem)
val launcherApps =
applicationContext.getSystemService(Context.LAUNCHER_APPS_SERVICE) as LauncherApps
applicationContext.getSystemService(LAUNCHER_APPS_SERVICE) as LauncherApps
launcherApps.startShortcut(packageName, id, shortcutBounds, null, userHandle)
}
}
@@ -699,7 +737,7 @@ class MainActivity : SimpleActivity(), FlingListener {
x: Float,
y: Float,
gridItem: HomeScreenGridItem,
isOnAllAppsFragment: Boolean
isOnAllAppsFragment: Boolean,
) {
binding.homeScreenGrid.root.hideResizeLines()
mLongPressedIcon = gridItem
@@ -742,7 +780,7 @@ class MainActivity : SimpleActivity(), FlingListener {
Gravity.TOP or Gravity.END
).apply {
inflate(R.menu.menu_home_screen)
menu.findItem(R.id.set_as_default).isVisible = isQPlus() && !isDefaultLauncher()
menu.findItem(R.id.set_as_default).isVisible = !isDefaultLauncher()
setOnMenuItemClickListener { item ->
when (item.itemId) {
R.id.widgets -> showWidgetsFragment()
@@ -794,7 +832,7 @@ class MainActivity : SimpleActivity(), FlingListener {
Intent(Intent.ACTION_SET_WALLPAPER).apply {
startActivity(this)
}
} catch (e: ActivityNotFoundException) {
} catch (_: ActivityNotFoundException) {
toast(org.fossify.commons.R.string.no_app_found)
} catch (e: Exception) {
showErrorToast(e)
@@ -808,6 +846,18 @@ class MainActivity : SimpleActivity(), FlingListener {
}
private fun launchSetAsDefaultIntent() {
val intents = listOf(
Intent(Settings.ACTION_HOME_SETTINGS),
Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS),
Intent(Settings.ACTION_SETTINGS)
)
val intent = intents.firstOrNull { it.resolveActivity(packageManager) != null }
if (intent != null) {
startActivity(intent)
}
}
private fun requestHomeRole() {
if (isQPlus()) {
startActivityForResult(
roleManager.createRequestRoleIntent(RoleManager.ROLE_HOME),
@@ -864,18 +914,23 @@ class MainActivity : SimpleActivity(), FlingListener {
}
private class MyGestureListener(
private val flingListener: FlingListener
private val flingListener: FlingListener,
) : GestureDetector.SimpleOnGestureListener() {
override fun onSingleTapUp(event: MotionEvent): Boolean {
(flingListener as MainActivity).homeScreenClicked(event.x, event.y)
return super.onSingleTapUp(event)
}
override fun onDoubleTap(event: MotionEvent): Boolean {
(flingListener as MainActivity).homeScreenDoubleTapped(event.x, event.y)
return super.onDoubleTap(event)
}
override fun onFling(
event1: MotionEvent?,
event2: MotionEvent,
velocityX: Float,
velocityY: Float
velocityY: Float,
): Boolean {
// ignore fling events just after releasing an icon from dragging
if (System.currentTimeMillis() - mLastUpEvent < 500L) {
@@ -931,7 +986,7 @@ class MainActivity : SimpleActivity(), FlingListener {
Class.forName("android.app.StatusBarManager")
.getMethod("expandNotificationsPanel")
.invoke(getSystemService("statusbar"))
} catch (e: Exception) {
} catch (_: Exception) {
}
}
}
@@ -980,9 +1035,16 @@ class MainActivity : SimpleActivity(), FlingListener {
}
val label = info.loadLabel(packageManager).toString()
val drawable =
info.loadIcon(packageManager) ?: getDrawableForPackageName(packageName) ?: continue
val placeholderColor = calculateAverageColor(drawable.toBitmap())
val drawable = info.loadIcon(packageManager)
?: getDrawableForPackageName(packageName)
?: continue
val bitmap = drawable.toBitmap(
width = max(drawable.intrinsicWidth, 1),
height = max(drawable.intrinsicHeight, 1),
config = Bitmap.Config.ARGB_8888
)
val placeholderColor = calculateAverageColor(bitmap)
allApps.add(
AppLauncher(
id = null,
@@ -991,25 +1053,11 @@ class MainActivity : SimpleActivity(), FlingListener {
activityName = activityName,
order = 0,
thumbnailColor = placeholderColor,
drawable = drawable.toBitmap().toDrawable(resources)
drawable = bitmap.toDrawable(resources)
)
)
}
// add Launcher settings as an app
val drawable = getDrawableForPackageName(packageName)
val placeholderColor = calculateAverageColor(drawable!!.toBitmap())
val launcherSettings =
AppLauncher(
id = null,
title = getString(R.string.launcher_settings),
packageName = packageName,
activityName = "",
order = 0,
thumbnailColor = placeholderColor,
drawable = drawable.toBitmap().toDrawable(resources)
)
allApps.add(launcherSettings)
launchersDB.insertAll(allApps)
return allApps
}
@@ -1018,7 +1066,7 @@ class MainActivity : SimpleActivity(), FlingListener {
val homeScreenGridItems = ArrayList<HomeScreenGridItem>()
try {
val defaultDialerPackage =
(getSystemService(Context.TELECOM_SERVICE) as TelecomManager).defaultDialerPackage
(getSystemService(TELECOM_SERVICE) as TelecomManager).defaultDialerPackage
appLaunchers.firstOrNull { it.packageName == defaultDialerPackage }?.apply {
val dialerIcon =
HomeScreenGridItem(
@@ -1041,7 +1089,7 @@ class MainActivity : SimpleActivity(), FlingListener {
)
homeScreenGridItems.add(dialerIcon)
}
} catch (e: Exception) {
} catch (_: Exception) {
}
try {
@@ -1068,11 +1116,11 @@ class MainActivity : SimpleActivity(), FlingListener {
)
homeScreenGridItems.add(messengerIcon)
}
} catch (e: Exception) {
} catch (_: Exception) {
}
try {
val browserIntent = Intent("android.intent.action.VIEW", Uri.parse("http://"))
val browserIntent = Intent(Intent.ACTION_VIEW, "http://".toUri())
val resolveInfo =
packageManager.resolveActivity(browserIntent, PackageManager.MATCH_DEFAULT_ONLY)
val defaultBrowserPackage = resolveInfo!!.activityInfo.packageName
@@ -1098,7 +1146,7 @@ class MainActivity : SimpleActivity(), FlingListener {
)
homeScreenGridItems.add(browserIcon)
}
} catch (e: Exception) {
} catch (_: Exception) {
}
try {
@@ -1131,7 +1179,7 @@ class MainActivity : SimpleActivity(), FlingListener {
homeScreenGridItems.add(storeIcon)
}
}
} catch (e: Exception) {
} catch (_: Exception) {
}
try {
@@ -1161,7 +1209,7 @@ class MainActivity : SimpleActivity(), FlingListener {
)
homeScreenGridItems.add(cameraIcon)
}
} catch (e: Exception) {
} catch (_: Exception) {
}
homeScreenGridItemsDB.insertAll(homeScreenGridItems)
@@ -1171,7 +1219,7 @@ class MainActivity : SimpleActivity(), FlingListener {
appWidgetManager: AppWidgetManager,
appWidgetId: Int,
appWidgetInfo: AppWidgetProviderInfo,
callback: (canBind: Boolean) -> Unit
callback: (canBind: Boolean) -> Unit,
) {
mActionOnCanBindWidget = null
val canCreateWidget =
@@ -1191,7 +1239,7 @@ class MainActivity : SimpleActivity(), FlingListener {
fun handleWidgetConfigureScreen(
appWidgetHost: AppWidgetHost,
appWidgetId: Int,
callback: (canBind: Boolean) -> Unit
callback: (canBind: Boolean) -> Unit,
) {
mActionOnWidgetConfiguredWidget = callback
appWidgetHost.startAppWidgetConfigureActivityForResult(
@@ -1205,7 +1253,7 @@ class MainActivity : SimpleActivity(), FlingListener {
fun handleShorcutCreation(
activityInfo: ActivityInfo,
callback: (shortcutId: String, label: String, icon: Drawable) -> Unit
callback: (shortcutId: String, label: String, icon: Drawable) -> Unit,
) {
mActionOnAddShortcut = callback
val componentName = ComponentName(activityInfo.packageName, activityInfo.name)

View File

@@ -1,16 +1,14 @@
package org.fossify.home.activities
import android.annotation.SuppressLint
import android.app.admin.DevicePolicyManager
import android.content.ComponentName
import android.content.Intent
import android.os.Bundle
import org.fossify.commons.dialogs.RadioGroupDialog
import org.fossify.commons.extensions.beGoneIf
import org.fossify.commons.extensions.beVisibleIf
import org.fossify.commons.extensions.getCustomizeColorsString
import org.fossify.commons.extensions.getProperPrimaryColor
import org.fossify.commons.extensions.isOrWasThankYouInstalled
import org.fossify.commons.extensions.launchMoreAppsFromUsIntent
import org.fossify.commons.extensions.launchPurchaseThankYouIntent
import org.fossify.commons.extensions.updateTextColors
import org.fossify.commons.extensions.viewBinding
import org.fossify.commons.helpers.NavigationIcon
@@ -25,7 +23,7 @@ import org.fossify.home.helpers.MAX_COLUMN_COUNT
import org.fossify.home.helpers.MAX_ROW_COUNT
import org.fossify.home.helpers.MIN_COLUMN_COUNT
import org.fossify.home.helpers.MIN_ROW_COUNT
import org.fossify.home.helpers.REPOSITORY_NAME
import org.fossify.home.receivers.LockDeviceAdminReceiver
import java.util.Locale
import kotlin.system.exitProcess
@@ -33,29 +31,24 @@ class SettingsActivity : SimpleActivity() {
private val binding by viewBinding(ActivitySettingsBinding::inflate)
override fun onCreate(savedInstanceState: Bundle?) {
isMaterialActivity = true
super.onCreate(savedInstanceState)
setContentView(binding.root)
updateMaterialActivityViews(
mainCoordinatorLayout = binding.settingsCoordinator,
nestedView = binding.settingsHolder,
useTransparentNavigation = true,
useTopSearchMenu = false
)
setupMaterialScrollListener(binding.settingsNestedScrollview, binding.settingsToolbar)
setupEdgeToEdge(padBottomSystem = listOf(binding.settingsNestedScrollview))
setupMaterialScrollListener(binding.settingsNestedScrollview, binding.settingsAppbar)
setupOptionsMenu()
}
override fun onResume() {
super.onResume()
setupToolbar(binding.settingsToolbar, NavigationIcon.Arrow)
setupTopAppBar(binding.settingsAppbar, NavigationIcon.Arrow)
refreshMenuItems()
setupPurchaseThankYou()
setupCustomizeColors()
setupUseEnglish()
setupDoubleTapToLock()
setupCloseAppDrawerOnOtherAppOpen()
setupOpenKeyboardOnAppDrawer()
setupDrawerColumnCount()
setupDrawerSearchBar()
setupHomeRowCount()
@@ -92,22 +85,18 @@ class SettingsActivity : SimpleActivity() {
}
}
private fun setupPurchaseThankYou() {
binding.settingsPurchaseThankYouHolder.beGoneIf(isOrWasThankYouInstalled())
binding.settingsPurchaseThankYouHolder.setOnClickListener {
launchPurchaseThankYouIntent()
}
}
private fun setupCustomizeColors() {
binding.settingsColorCustomizationLabel.text = getCustomizeColorsString()
binding.settingsColorCustomizationHolder.setOnClickListener {
startCustomizationActivity()
}
}
private fun setupUseEnglish() {
binding.settingsUseEnglishHolder.beVisibleIf((config.wasUseEnglishToggled || Locale.getDefault().language != "en") && !isTiramisuPlus())
binding.settingsUseEnglishHolder.beVisibleIf(
beVisible = (config.wasUseEnglishToggled || Locale.getDefault().language != "en")
&& !isTiramisuPlus()
)
binding.settingsUseEnglish.isChecked = config.useEnglish
binding.settingsUseEnglishHolder.setOnClickListener {
binding.settingsUseEnglish.toggle()
@@ -116,6 +105,44 @@ class SettingsActivity : SimpleActivity() {
}
}
private fun setupDoubleTapToLock() {
val devicePolicyManager = getSystemService(DEVICE_POLICY_SERVICE) as DevicePolicyManager
binding.settingsDoubleTapToLock.isChecked = devicePolicyManager.isAdminActive(
ComponentName(this, LockDeviceAdminReceiver::class.java)
)
binding.settingsDoubleTapToLockHolder.setOnClickListener {
val isLockDeviceAdminActive = devicePolicyManager.isAdminActive(
ComponentName(this, LockDeviceAdminReceiver::class.java)
)
if (isLockDeviceAdminActive) {
devicePolicyManager.removeActiveAdmin(
ComponentName(this, LockDeviceAdminReceiver::class.java)
)
} else {
val intent = Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN)
intent.putExtra(
DevicePolicyManager.EXTRA_DEVICE_ADMIN,
ComponentName(this, LockDeviceAdminReceiver::class.java)
)
intent.putExtra(
DevicePolicyManager.EXTRA_ADD_EXPLANATION,
getString(R.string.lock_device_admin_hint)
)
startActivity(intent)
}
}
}
private fun setupOpenKeyboardOnAppDrawer() {
binding.settingsOpenKeyboardOnAppDrawerHolder.beVisibleIf(config.showSearchBar)
binding.settingsOpenKeyboardOnAppDrawer.isChecked = config.autoShowKeyboardInAppDrawer
binding.settingsOpenKeyboardOnAppDrawerHolder.setOnClickListener {
binding.settingsOpenKeyboardOnAppDrawer.toggle()
config.autoShowKeyboardInAppDrawer = binding.settingsOpenKeyboardOnAppDrawer.isChecked
}
}
private fun setupCloseAppDrawerOnOtherAppOpen() {
binding.settingsCloseAppDrawerOnOtherApp.isChecked = config.closeAppDrawer
binding.settingsCloseAppDrawerOnOtherAppHolder.setOnClickListener {
@@ -156,6 +183,7 @@ class SettingsActivity : SimpleActivity() {
binding.settingsDrawerSearchHolder.setOnClickListener {
binding.settingsShowSearchBar.toggle()
config.showSearchBar = binding.settingsShowSearchBar.isChecked
binding.settingsOpenKeyboardOnAppDrawerHolder.beVisibleIf(config.showSearchBar)
}
}

View File

@@ -9,7 +9,6 @@ import android.content.pm.LauncherApps
import android.content.res.ColorStateList
import android.graphics.Color
import android.graphics.Rect
import android.graphics.drawable.ColorDrawable
import android.net.Uri
import android.os.Process
import android.provider.Settings
@@ -39,12 +38,6 @@ import org.fossify.home.interfaces.ItemMenuListener
import org.fossify.home.models.HomeScreenGridItem
fun Activity.launchApp(packageName: String, activityName: String) {
// if this is true, launch the app settings
if (packageName == this.packageName) {
startActivity(Intent(applicationContext, SettingsActivity::class.java))
return
}
try {
Intent(Intent.ACTION_MAIN).apply {
addCategory(Intent.CATEGORY_LAUNCHER)
@@ -90,7 +83,7 @@ fun Activity.handleGridItemPopupMenu(
anchorView: View,
gridItem: HomeScreenGridItem,
isOnAllAppsFragment: Boolean,
listener: ItemMenuListener
listener: ItemMenuListener,
): PopupMenu {
val contextTheme = ContextThemeWrapper(this, getPopupMenuTheme())
return PopupMenu(contextTheme, anchorView, Gravity.TOP or Gravity.END).apply {
@@ -114,8 +107,9 @@ fun Activity.handleGridItemPopupMenu(
gridItem.type == ITEM_TYPE_ICON && isOnAllAppsFragment
menu.findItem(R.id.resize).isVisible = gridItem.type == ITEM_TYPE_WIDGET
menu.findItem(R.id.app_info).isVisible = gridItem.type == ITEM_TYPE_ICON
menu.findItem(R.id.uninstall).isVisible =
gridItem.type == ITEM_TYPE_ICON && canAppBeUninstalled(gridItem.packageName)
menu.findItem(R.id.uninstall).isVisible = gridItem.type == ITEM_TYPE_ICON
&& canAppBeUninstalled(gridItem.packageName)
&& gridItem.packageName != packageName
menu.findItem(R.id.remove).isVisible = !isOnAllAppsFragment
val launcherApps =
@@ -145,7 +139,7 @@ fun Activity.handleGridItemPopupMenu(
menu.add(R.id.group_shortcuts, Menu.NONE, Menu.NONE, shortcutInfo.getLabel())
.setIcon(
(iconDrawable ?: ColorDrawable(Color.TRANSPARENT))
(iconDrawable ?: Color.TRANSPARENT.toDrawable())
.toBitmap(width = iconSize, height = iconSize)
.toDrawable(resources)
)

View File

@@ -1,14 +1,18 @@
package org.fossify.home.extensions
import android.annotation.TargetApi
import android.app.role.RoleManager
import android.appwidget.AppWidgetProviderInfo
import android.content.ComponentName
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.content.pm.LauncherApps
import android.graphics.drawable.Drawable
import android.os.Build
import android.os.Process
import android.util.Size
import androidx.annotation.RequiresApi
import org.fossify.commons.helpers.isQPlus
import org.fossify.commons.helpers.isSPlus
import org.fossify.home.databases.AppsDatabase
import org.fossify.home.helpers.Config
@@ -31,7 +35,7 @@ val Context.homeScreenGridItemsDB: HomeScreenGridItemsDao
val Context.hiddenIconsDB: HiddenIconsDao
get() = AppsDatabase.getInstance(applicationContext).HiddenIconsDao()
@get:TargetApi(Build.VERSION_CODES.Q)
@get:RequiresApi(Build.VERSION_CODES.Q)
val Context.roleManager: RoleManager
get() = getSystemService(RoleManager::class.java)
@@ -76,9 +80,20 @@ fun Context.getCellCount(size: Int): Int {
return max(tiles, 1)
}
@TargetApi(Build.VERSION_CODES.Q)
fun Context.isDefaultLauncher(): Boolean {
return with(roleManager) {
isRoleAvailable(RoleManager.ROLE_HOME) && isRoleHeld(RoleManager.ROLE_HOME)
return if (isQPlus()) {
with(roleManager) {
isRoleAvailable(RoleManager.ROLE_HOME) && isRoleHeld(RoleManager.ROLE_HOME)
}
} else {
val filters = ArrayList<IntentFilter>()
val activities = ArrayList<ComponentName>()
@Suppress("DEPRECATION")
packageManager.getPreferredActivities(filters, activities, null)
return activities.indices.any { i ->
activities[i].packageName == packageName &&
filters[i].hasAction(Intent.ACTION_MAIN) &&
filters[i].hasCategory(Intent.CATEGORY_HOME)
}
}
}

View File

@@ -1,12 +1,12 @@
package org.fossify.home.extensions
import android.graphics.drawable.ColorDrawable
import android.graphics.drawable.LayerDrawable
import android.view.RoundedCorner.POSITION_TOP_LEFT
import android.view.RoundedCorner.POSITION_TOP_RIGHT
import android.view.View
import android.view.animation.AccelerateDecelerateInterpolator
import androidx.core.content.res.ResourcesCompat
import androidx.core.graphics.drawable.toDrawable
import org.fossify.commons.R
import org.fossify.commons.extensions.applyColorFilter
import org.fossify.commons.extensions.getProperBackgroundColor
@@ -28,7 +28,7 @@ fun View.animateScale(
fun View.setupDrawerBackground() {
val backgroundColor = context.getProperBackgroundColor()
background = ColorDrawable(backgroundColor)
background = backgroundColor.toDrawable()
val insets = rootWindowInsets
if (isSPlus() && insets != null) {

View File

@@ -4,22 +4,14 @@ import android.annotation.SuppressLint
import android.content.Context
import android.util.AttributeSet
import android.view.MotionEvent
import android.view.Surface
import android.view.WindowManager
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.OnScrollListener
import org.fossify.commons.R
import org.fossify.commons.extensions.beGone
import org.fossify.commons.extensions.beVisibleIf
import org.fossify.commons.extensions.getProperPrimaryColor
import org.fossify.commons.extensions.getProperTextColor
import org.fossify.commons.extensions.hideKeyboard
import org.fossify.commons.extensions.navigationBarHeight
import org.fossify.commons.extensions.navigationBarOnBottom
import org.fossify.commons.extensions.navigationBarOnSide
import org.fossify.commons.extensions.navigationBarWidth
import org.fossify.commons.extensions.normalizeString
import org.fossify.commons.helpers.isRPlus
import org.fossify.commons.views.MyGridLayoutManager
import org.fossify.home.activities.MainActivity
import org.fossify.home.adapters.LaunchersAdapter
@@ -146,9 +138,8 @@ class AllAppsFragment(
val layoutManager = binding.allAppsGrid.layoutManager as MyGridLayoutManager
layoutManager.spanCount = context.config.drawerColumnCount
var adapter = getAdapter()
if (adapter == null) {
adapter = LaunchersAdapter(activity!!, this) {
if (getAdapter() == null) {
LaunchersAdapter(activity!!, this) {
activity?.launchApp((it as AppLauncher).packageName, it.activityName)
if (activity?.config?.closeAppDrawer == true) {
activity?.closeAppDrawer(delayed = true)
@@ -161,7 +152,7 @@ class AllAppsFragment(
}
}
adapter.submitList(launchers.toMutableList())
submitList(launchers.toMutableList())
}
}
@@ -179,7 +170,7 @@ class AllAppsFragment(
removeAt(position)
}
getAdapter()?.submitList(launchers.toMutableList())
submitList(launchers.toMutableList())
}
}
@@ -189,39 +180,6 @@ class AllAppsFragment(
}
binding.allAppsFastscroller.updateColors(context.getProperPrimaryColor())
var bottomListPadding = 0
var leftListPadding = 0
var rightListPadding = 0
// TODO: Use WindowInsets API
if (activity!!.navigationBarOnBottom) {
bottomListPadding = activity!!.navigationBarHeight
leftListPadding = 0
rightListPadding = 0
} else if (activity!!.navigationBarOnSide) {
bottomListPadding = 0
val display = if (isRPlus()) {
display!!
} else {
(activity!!.getSystemService(Context.WINDOW_SERVICE) as WindowManager).defaultDisplay
}
if (display.rotation == Surface.ROTATION_90) {
rightListPadding = activity!!.navigationBarWidth
} else if (display.rotation == Surface.ROTATION_270) {
leftListPadding = activity!!.navigationBarWidth
}
}
binding.allAppsGrid.setPadding(
0,
0,
resources.getDimension(R.dimen.medium_margin).toInt(),
bottomListPadding
)
binding.allAppsFastscroller.setPadding(leftListPadding, 0, rightListPadding, 0)
binding.allAppsGrid.addOnScrollListener(object : OnScrollListener() {
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
// Hiding is expensive, only do it if focused
@@ -235,16 +193,12 @@ class AllAppsFragment(
getAdapter()?.updateTextColor(context.getProperTextColor())
binding.searchBar.beVisibleIf(context.config.showSearchBar)
binding.searchBar.getToolbar().beGone()
binding.searchBar.requireToolbar().beGone()
binding.searchBar.updateColors()
binding.searchBar.setupMenu()
binding.searchBar.onSearchTextChangedListener = { query ->
val filtered =
launchers.filter { query.isEmpty() || it.title.contains(query, ignoreCase = true) }
getAdapter()?.submitList(filtered) {
showNoResultsPlaceholderIfNeeded()
}
binding.searchBar.onSearchTextChangedListener = {
submitList(launchers)
}
}
@@ -288,4 +242,20 @@ class AllAppsFragment(
return false
}
private fun submitList(items: List<AppLauncher>) {
val searchQuery = binding.searchBar.getCurrentQuery()
val filtered = if (searchQuery.isNotEmpty()) {
items.filter {
it.title.normalizeString()
.contains(searchQuery.normalizeString(), ignoreCase = true)
}
} else {
items
}
getAdapter()?.submitList(filtered) {
showNoResultsPlaceholderIfNeeded()
}
}
}

View File

@@ -9,18 +9,11 @@ import android.content.pm.PackageManager
import android.os.Process
import android.util.AttributeSet
import android.view.MotionEvent
import android.view.Surface
import android.view.WindowManager
import org.fossify.commons.extensions.getProperPrimaryColor
import org.fossify.commons.extensions.getProperTextColor
import org.fossify.commons.extensions.navigationBarHeight
import org.fossify.commons.extensions.navigationBarOnBottom
import org.fossify.commons.extensions.navigationBarOnSide
import org.fossify.commons.extensions.navigationBarWidth
import org.fossify.commons.extensions.showErrorToast
import org.fossify.commons.extensions.toast
import org.fossify.commons.helpers.ensureBackgroundThread
import org.fossify.commons.helpers.isRPlus
import org.fossify.home.R
import org.fossify.home.activities.MainActivity
import org.fossify.home.adapters.WidgetsAdapter
@@ -232,33 +225,6 @@ class WidgetsFragment(context: Context, attributeSet: AttributeSet) :
}
binding.widgetsFastscroller.updateColors(context.getProperPrimaryColor())
var bottomListPadding = 0
var leftListPadding = 0
var rightListPadding = 0
if (activity!!.navigationBarOnBottom) {
bottomListPadding = activity!!.navigationBarHeight
leftListPadding = 0
rightListPadding = 0
} else if (activity!!.navigationBarOnSide) {
bottomListPadding = 0
val display = if (isRPlus()) {
display!!
} else {
(activity!!.getSystemService(Context.WINDOW_SERVICE) as WindowManager).defaultDisplay
}
if (display.rotation == Surface.ROTATION_90) {
rightListPadding = activity!!.navigationBarWidth
} else if (display.rotation == Surface.ROTATION_270) {
leftListPadding = activity!!.navigationBarWidth
}
}
binding.widgetsList.setPadding(0, 0, 0, bottomListPadding)
binding.widgetsFastscroller.setPadding(leftListPadding, 0, rightListPadding, 0)
(binding.widgetsList.adapter as? WidgetsAdapter)?.updateTextColor(context.getProperTextColor())
setupDrawerBackground()
}

View File

@@ -32,4 +32,9 @@ class Config(context: Context) : BaseConfig(context) {
var closeAppDrawer: Boolean
get() = prefs.getBoolean(CLOSE_APP_DRAWER, false)
set(closeAppDrawer) = prefs.edit().putBoolean(CLOSE_APP_DRAWER, closeAppDrawer).apply()
var autoShowKeyboardInAppDrawer: Boolean
get() = prefs.getBoolean(AUTO_SHOW_KEYBOARD_IN_APP_DRAWER, false)
set(autoShowKeyboardInAppDrawer) = prefs.edit()
.putBoolean(AUTO_SHOW_KEYBOARD_IN_APP_DRAWER, autoShowKeyboardInAppDrawer).apply()
}

View File

@@ -12,6 +12,7 @@ const val HOME_COLUMN_COUNT = "home_column_count"
const val DRAWER_COLUMN_COUNT = "drawer_column_count"
const val SHOW_SEARCH_BAR = "show_search_bar"
const val CLOSE_APP_DRAWER = "close_app_drawer"
const val AUTO_SHOW_KEYBOARD_IN_APP_DRAWER = "auto_show_keyboard_in_app_drawer"
// default home screen grid size
const val ROW_COUNT = 6

View File

@@ -0,0 +1,13 @@
package org.fossify.home.receivers
import android.app.admin.DeviceAdminReceiver
import android.content.Context
import android.content.Intent
import org.fossify.home.R
class LockDeviceAdminReceiver : DeviceAdminReceiver() {
override fun onDisableRequested(context: Context, intent: Intent): CharSequence {
return context.getString(R.string.lock_device_admin_warning)
}
}

View File

File diff suppressed because it is too large Load Diff

View File

@@ -5,19 +5,26 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/manage_hidden_icons_toolbar"
<org.fossify.commons.views.MyAppBarLayout
android:id="@+id/manage_hidden_icons_appbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/color_primary"
app:title="@string/hidden_icons"
app:titleTextAppearance="@style/AppTheme.ActionBar.TitleTextStyle" />
android:layout_height="wrap_content">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/manage_hidden_icons_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/color_primary"
app:title="@string/hidden_icons"
app:titleTextAppearance="@style/AppTheme.ActionBar.TitleTextStyle" />
</org.fossify.commons.views.MyAppBarLayout>
<RelativeLayout
android:id="@+id/manage_hidden_icons_wrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="?attr/actionBarSize">
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<org.fossify.commons.views.MyRecyclerView
android:id="@+id/manage_hidden_icons_list"

View File

@@ -6,22 +6,29 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/settings_toolbar"
<org.fossify.commons.views.MyAppBarLayout
android:id="@+id/settings_appbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/color_primary"
app:menu="@menu/menu_settings"
app:title="@string/settings"
app:titleTextAppearance="@style/AppTheme.ActionBar.TitleTextStyle" />
android:layout_height="wrap_content">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/settings_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/color_primary"
app:menu="@menu/menu_settings"
app:title="@string/settings"
app:titleTextAppearance="@style/AppTheme.ActionBar.TitleTextStyle" />
</org.fossify.commons.views.MyAppBarLayout>
<androidx.core.widget.NestedScrollView
android:id="@+id/settings_nested_scrollview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="?attr/actionBarSize"
android:fillViewport="true"
android:scrollbars="none">
android:scrollbars="none"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:id="@+id/settings_holder"
@@ -64,21 +71,10 @@
android:layout_height="wrap_content"
android:text="@string/general_settings" />
<RelativeLayout
<org.fossify.commons.views.PurchaseThankYouItem
android:id="@+id/settings_purchase_thank_you_holder"
style="@style/SettingsHolderTextViewOneLinerStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ripple_background">
<org.fossify.commons.views.MyTextView
android:id="@+id/settings_purchase_thank_you"
style="@style/SettingsTextLabelStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/purchase_simple_thank_you" />
</RelativeLayout>
android:layout_height="wrap_content"/>
<RelativeLayout
android:id="@+id/settings_use_english_holder"
@@ -136,6 +132,22 @@
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_double_tap_to_lock_holder"
style="@style/SettingsHolderSwitchStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ripple_background">
<org.fossify.commons.views.MyMaterialSwitch
android:id="@+id/settings_double_tap_to_lock"
style="@style/SettingsSwitchStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/double_tap_to_lock" />
</RelativeLayout>
<include
android:id="@+id/settings_general_settings_divider"
layout="@layout/divider" />
@@ -187,6 +199,22 @@
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_open_keyboard_on_app_drawer_holder"
style="@style/SettingsHolderSwitchStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ripple_background">
<org.fossify.commons.views.MyMaterialSwitch
android:id="@+id/settings_open_keyboard_on_app_drawer"
style="@style/SettingsSwitchStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/auto_show_keyboard_in_app_drawer" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_close_app_drawer_on_other_app_holder"
style="@style/SettingsHolderSwitchStyle"

View File

@@ -8,7 +8,8 @@
<org.fossify.commons.views.MySearchMenu
android:id="@+id/search_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
android:layout_height="wrap_content"
app:applyWindowInsets="false" />
<com.qtalk.recyclerviewfastscroller.RecyclerViewFastScroller
android:id="@+id/all_apps_fastscroller"
@@ -22,7 +23,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/smaller_margin"
android:layout_marginEnd="0dp"
android:layout_marginEnd="@dimen/smaller_margin"
android:clipToPadding="false"
app:layoutManager="org.fossify.commons.views.MyGridLayoutManager"
app:spanCount="@integer/portrait_column_count" />

View File

@@ -10,6 +10,6 @@
app:showAsAction="always" />
<item
android:id="@+id/more_apps_from_us"
android:title="@string/more_apps_from_us"
android:title="@string/more_fossify_apps"
app:showAsAction="never" />
</menu>

View File

@@ -0,0 +1 @@
unqualifiedResLocale=en-US

View File

@@ -1,2 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="app_launcher_name">Launçer</string>
<string name="launcher_settings">Launçer Parametrləri</string>
<string name="app_info">Tətbiq haqqında</string>
</resources>

View File

@@ -1,2 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="app_launcher_name">Лаунчар</string>
</resources>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_info">دووسمندیا برنومه</string>
<string name="uninstall">پاک کردن پۊرنیڌن</string>
<string name="app_launcher_name">لانچر</string>
<string name="add_hidden_icons">ٱووردن آیکونا بؽڌاری</string>
<string name="manage_hidden_icons">دؽوۉداری آیکونا بؽڌاری</string>
<string name="hidden_icons">آیکونا بؽڌاری</string>
<string name="hide_icon">بؽڌار کردن آیکون</string>
<string name="app_drawer_settings">کشار برنومه</string>
<string name="close_app_drawer_on_app_open">بستن کشار برنومه یل مجال گۊشیڌن ی برنومه</string>
<string name="home_screen_settings">بلگه ٱسلی</string>
<string name="widget_too_big">ویجت سی هندا بلگه هیم سکویی قلوه گپ هڌ</string>
<string name="double_tap_to_lock">سی چفت کردن بلگه دو کرت بزݩ ریس</string>
<string name="launcher_settings">سامووا لانچر</string>
<string name="touch_hold_widget">دستته واڌارن ری ویجت وو هونه ری بلگه ٱسلی خوت بکش</string>
<string name="auto_show_keyboard_in_app_drawer">نشووݩ داڌن خوتکار تخته کیلیت من کشار</string>
<string name="lock_device_admin_warning">قیر فعال کردن دسرسی ٱدمین،</string>
</resources>

View File

@@ -14,4 +14,8 @@
<string name="close_app_drawer_on_app_open">Tanca el calaix d\'aplicacions en obrir una aplicació</string>
<string name="widget_too_big">El giny és massa gros per a la mida de la pantalla d\'inici actual</string>
<string name="home_screen_settings">Pantalla inicial</string>
</resources>
<string name="double_tap_to_lock">Toc doble per a bloquejar la pantalla</string>
<string name="lock_device_admin_hint">Per a activar la funció de toc doble per a bloquejar la pantalla, heu de concedir permís d\'administració. Tingueu en compte que l\'aplicació no es pot desinstal·lar fins que no s\'elimini aquest permís.</string>
<string name="lock_device_admin_warning">Desactivant el permís d\'administració es desactivarà la funció de toc doble per a bloquejar la pantalla.</string>
<string name="auto_show_keyboard_in_app_drawer">Mostra automàticament el teclat al calaix</string>
</resources>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_launcher_name">Spuštěč</string>
<string name="app_launcher_name">Spouštěč</string>
<string name="launcher_settings">Nastavení spouštěče</string>
<string name="app_info">O aplikaci</string>
<string name="touch_hold_widget">Widget dlouze stiskněte a přetáhněte jej na domovskou obrazovku</string>
@@ -14,4 +14,8 @@
<string name="widget_too_big">Widget je příliš velký na aktuální velikost domovské obrazovky</string>
<string name="app_drawer_settings">Nabídka aplikací</string>
<string name="close_app_drawer_on_app_open">Zavřít nabídku aplikací po otevření aplikace</string>
</resources>
<string name="lock_device_admin_hint">Chcete-li povolit funkci zamykání obrazovky dvojitým klepnutím, musíte udělit oprávnění správce. Upozornění: aplikaci nelze odinstalovat, dokud toto oprávnění neodeberete.</string>
<string name="lock_device_admin_warning">Deaktivací oprávnění správce zakážete funkci zamykání obrazovky dvojitým klepnutím.</string>
<string name="double_tap_to_lock">Klepněte dvakrát pro zamknutí obrazovky</string>
<string name="auto_show_keyboard_in_app_drawer">Automaticky zobrazit klávesnici v seznamu aplikací</string>
</resources>

View File

@@ -1,5 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_launcher_name">Launcher</string>
<string name="launcher_settings">Launcher Indstillinger</string>
</resources>
<string name="launcher_settings">Launcher-indstillinger</string>
<string name="app_info">Appinfo</string>
<string name="touch_hold_widget">Tryk længe på widgetten, og træk den hen over din startskærm</string>
<string name="uninstall">Afinstaller</string>
<string name="hide_icon">Skjul ikon</string>
<string name="add_hidden_icons">Tilføj skjulte ikoner</string>
<string name="manage_hidden_icons">Administrer skjulte ikoner</string>
<string name="hidden_icons">Skjulte ikoner</string>
<string name="hidden_icons_placeholder">Nogle apps kan ikke afinstalleres grundet systembegrænsninger, men du kan i det mindste skjule deres ikoner.</string>
<string name="app_drawer_settings">App-skuffe</string>
<string name="close_app_drawer_on_app_open">Luk app-skuffen, når en app åbnes</string>
<string name="auto_show_keyboard_in_app_drawer">Vis automatisk tastatur i skuffen</string>
<string name="home_screen_settings">Startskærm</string>
<string name="widget_too_big">Widgetten er for stor til den nuværende størrelse på startskærmen</string>
<string name="double_tap_to_lock">Dobbelttryk for at låse skærmen</string>
<string name="lock_device_admin_hint">Du skal give administrator-tilladelse for at bruge dobbelttryk for at låse skærmen. Bemærk, at appen kan først afinstalleres, når tilladelsen er fjernet.</string>
<string name="lock_device_admin_warning">Deaktivering af administratortilladelser vil deaktivere funktionen dobbelttryk for at låse skærmen.</string>
</resources>

View File

@@ -14,4 +14,8 @@
<string name="home_screen_settings">Startbildschirm</string>
<string name="widget_too_big">Das Widget ist zu groß für den aktuellen Startbildschirm</string>
<string name="app_launcher_name">Launcher</string>
</resources>
<string name="lock_device_admin_hint">Um die Funktion „Doppeltes Antippen zum Sperren des Bildschirms“ zu aktivieren, musst du die Administratorberechtigung erteilen. Beachte, dass die App nicht deinstalliert werden kann, bis diese Berechtigung entfernt wird.</string>
<string name="double_tap_to_lock">Doppeltes Antippen zum Sperren des Bildschirms</string>
<string name="lock_device_admin_warning">Durch Entfernen der Administratorberechtigung wird die Funktion „Doppeltes Antippen zum Sperren des Bildschirms“ deaktiviert.</string>
<string name="auto_show_keyboard_in_app_drawer">Keyboard automatisch in App-Schublade anzeigen</string>
</resources>

View File

@@ -3,7 +3,7 @@
<string name="app_launcher_name">Εκκινητής</string>
<string name="launcher_settings">Ρυθμίσεις Εκκινητή</string>
<string name="app_info">Πληροφορίες εφαρμογής</string>
<string name="touch_hold_widget">Παρατεταμένο άγγιγμα στο Γραφικό και σύρετέ το στην αρχική σας οθόνη.</string>
<string name="touch_hold_widget">Πατήστε παρατεταμένα το γραφικό στοιχείο και σύρετέ το στην αρχική οθόνη</string>
<string name="uninstall">Απεγκατάσταση</string>
<string name="hide_icon">Απόκρυψη εικονιδίου</string>
<string name="add_hidden_icons">Προσθήκη κρυφών εικονιδίων</string>
@@ -14,4 +14,7 @@
<string name="close_app_drawer_on_app_open">Κλείστε το συρτάρι εφαρμογών κατά το άνοιγμα μιας εφαρμογής</string>
<string name="home_screen_settings">Αρχική οθόνη</string>
<string name="widget_too_big">Το γραφικό είναι πολύ μεγάλο για το τρέχον μέγεθος της αρχικής οθόνης</string>
<string name="lock_device_admin_hint">Για να ενεργοποιήσετε τη λειτουργία διπλής βρύσης για κλείδωμα οθόνης, πρέπει να παραχωρήσετε άδεια διαχειριστή. Λάβετε υπόψη ότι δεν είναι δυνατή η κατάργηση εγκατάστασης της εφαρμογής μέχρι να καταργηθεί αυτή η άδεια.</string>
<string name="double_tap_to_lock">Διπλό πάτημα για κλείδωμα οθόνης</string>
<string name="lock_device_admin_warning">Η απενεργοποίηση της άδειας διαχειριστή θα απενεργοποιήσει τη λειτουργία διπλής βρύσης για κλείδωμα οθόνης.</string>
</resources>

View File

@@ -1,2 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="app_launcher_name">Lanĉilo</string>
<string name="launcher_settings">Lanĉilaj agordoj</string>
<string name="touch_hold_widget">Longe premu la fenestraĵon kaj treni ĝin sur vian hejmekranon</string>
<string name="uninstall">Malinstali</string>
<string name="hide_icon">Kaŝi bildeton</string>
<string name="hidden_icons">Kaŝitaj bildetoj</string>
<string name="app_drawer_settings">Aplikaĵa tirkesto</string>
<string name="close_app_drawer_on_app_open">Fermi aplikaĵan tirkeston kiam aplikaĵo estas malfermita</string>
<string name="home_screen_settings">Hejmekrano</string>
<string name="widget_too_big">La fenestraĵo tro grandas por la aktuala grandeco de la hejmekrano</string>
<string name="add_hidden_icons">Aldoni kaŝitajn bildetojn</string>
<string name="manage_hidden_icons">Administri kaŝitajn bildetojn</string>
<string name="hidden_icons_placeholder">Ne eblas malinstali kelkajn aplikaĵojn pro sistemaj limigoj, sed almenaŭ eblas kaŝi iliajn bildetojn por eviti vidi ilin.</string>
<string name="double_tap_to_lock">Duoble frapetu por ŝlosi la ekranon</string>
<string name="lock_device_admin_hint">Por aktivigi la funkcion de ŝlosado de ekrano per duobla frapeto, endas koncedi administrajn permesojn. Notu, ke ne eblas malinstali la aplikaĵon antaŭ senvalidigi tiujn permesojn.</string>
<string name="lock_device_admin_warning">Malŝalto de administraj permesoj malŝaltos la funkcion de ŝlosado de ekrano per duobla frapeto.</string>
<string name="app_info">Aplikaĵaj informoj</string>
<string name="auto_show_keyboard_in_app_drawer">Aŭtomate montri klavaron en la aplikaĵa tirkesto</string>
</resources>

View File

@@ -1,2 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="app_launcher_name">Lanzador</string>
<string name="launcher_settings">Configuración del Lanzador</string>
<string name="app_info">Información de la aplicación</string>
</resources>

View File

@@ -14,4 +14,8 @@
<string name="close_app_drawer_on_app_open">Cerrar el cajón de aplicaciones al abrir una aplicación</string>
<string name="widget_too_big">El widget es demasiado grande para el tamaño actual de la pantalla de inicio</string>
<string name="home_screen_settings">Pantalla de inicio</string>
<string name="double_tap_to_lock">Toca dos veces para bloquear la pantalla</string>
<string name="lock_device_admin_warning">Al desactivar el permiso de administrador se desactivará la función de doble toque para bloquear la pantalla.</string>
<string name="lock_device_admin_hint">Para activar la función de doble toque para bloquear la pantalla, debes conceder un permiso de administrador. Tenga en cuenta que la aplicación no se puede desinstalar hasta que se elimine este permiso.</string>
<string name="auto_show_keyboard_in_app_drawer">Mostrar automáticamente el teclado en el cajón de aplicaciones</string>
</resources>

View File

@@ -14,4 +14,8 @@
<string name="close_app_drawer_on_app_open">Rakenduse avamisel sulge rakenduste kausta vaade</string>
<string name="home_screen_settings">Avaleht</string>
<string name="widget_too_big">Vidin on liiga suur praeguse ekraanimõõdu jaoks</string>
<string name="double_tap_to_lock">Topeltpuudutus lukustusvaates</string>
<string name="lock_device_admin_warning">Peakasutaja õiguste eemaldamine lülitab välja võimaluse kasutada lukustusvaates topeltpuudutust.</string>
<string name="lock_device_admin_hint">Kui soovid lukustusvaates kasutada topeltpuudutust, siis vajab rakendus peakasutaja õigusi. Palun arvesta, et rakenduse eemaldamiseks pead esmalt eemaldama need õigused.</string>
<string name="auto_show_keyboard_in_app_drawer">Näita menüüs klahvistikku automaatselt</string>
</resources>

View File

@@ -14,4 +14,8 @@
<string name="add_hidden_icons">Gehitu ezkutuko ikonoak</string>
<string name="manage_hidden_icons">Kudeatu ezkutuko ikonoak</string>
<string name="hidden_icons_placeholder">Aplikazio batzuk ezin dira desinstalatu sistemaren murrizketak direla eta, baina gutxienez haien ikonoak ezkutatu ditzakezu ez ikusteko.</string>
</resources>
<string name="double_tap_to_lock">Sakatu bi aldiz pantaila blokeatzeko</string>
<string name="lock_device_admin_hint">Bi aldiz sakatuta pantaila blokeatzeko, kudeatzaile baimena eman behar duzu. Kontuan izan baimen hau kendu arte ezingo duzula aplikazioa telefonotik kendu.</string>
<string name="lock_device_admin_warning">Kudeatzaile baimena desaktibatzean, pantaila blokeatzeko bi aldiz ikutzea desaktibatu egingo da.</string>
<string name="auto_show_keyboard_in_app_drawer">Erakutsi teklatua automatikoki tiraderan</string>
</resources>

View File

@@ -3,11 +3,19 @@
<string name="app_launcher_name">Käynnistin</string>
<string name="launcher_settings">Käynnistimen asetukset</string>
<string name="app_info">Sovelluksen tiedot</string>
<string name="touch_hold_widget">Paina widgettiä pitkään ja vedä se aloitusnäytöllesi</string>
<string name="touch_hold_widget">Paina vimpainta pitkään ja vedä se aloitusnäytöllesi</string>
<string name="uninstall">Poista asennus</string>
<string name="hide_icon">Piilota kuvake</string>
<string name="add_hidden_icons">Lisää piilotettuja kuvakkeita</string>
<string name="manage_hidden_icons">Hallitse piilotettuja kuvakkeita</string>
<string name="hidden_icons">Piilotetut kuvakkeet</string>
<string name="hidden_icons_placeholder">Joitakin sovelluksia ei ole järjestelmärajoitusten vuoksi mahdollista poistaa, mutta voit kuitenkin piilottaa niiden kuvakkeet näkyvistä.</string>
<string name="widget_too_big">Vimpain on liian suuri nykyiseen aloitusnäytön kokoon</string>
<string name="home_screen_settings">Kotinäyttö</string>
<string name="close_app_drawer_on_app_open">Sulje sovellusvedin, kun uusi sovellus avataan</string>
<string name="app_drawer_settings">Sovellusvedin</string>
<string name="lock_device_admin_hint">Näytön kaksoisnapautuslukitus vaatii pääkäyttäjäoikeuksia. Huomio, että sovellusta ei voida poistaa, ennen kuin tämä oikeus on poistettu.</string>
<string name="double_tap_to_lock">Kaksoisnapauta lukitaksesi näytön</string>
<string name="lock_device_admin_warning">Pääkäyttäjäoikeuden poiskytkentä, estää kaksoisnapautuslukituksen toiminnan.</string>
<string name="auto_show_keyboard_in_app_drawer">Näytä näppäimistö automaattisesti katsottaessa kaikkia sovelluksia</string>
</resources>

View File

@@ -14,4 +14,8 @@
<string name="close_app_drawer_on_app_open">Fermer le tiroir de l\'appli à l\'ouverture d\'une application</string>
<string name="widget_too_big">Le widget est trop grand pour la taille actuelle de l\'écran</string>
<string name="home_screen_settings">Écran d\'accueil</string>
</resources>
<string name="lock_device_admin_hint">Pour activer la fonction de double appui pour verrouiller l\'écran, vous devez accorder l\'autorisation d\'administrateur. Notez que l\'application ne peut pas être désinstallée tant que cette autorisation n\'est pas supprimée.</string>
<string name="lock_device_admin_warning">La désactivation de l\'autorisation d\'administrateur désactivera la fonction de double appui pour verrouiller l\'écran.</string>
<string name="double_tap_to_lock">Appuyer deux fois pour verrouiller l\'écran</string>
<string name="auto_show_keyboard_in_app_drawer">Afficher automatiquement le clavier du tiroir</string>
</resources>

View File

@@ -14,4 +14,8 @@
<string name="home_screen_settings">Scáileán baile</string>
<string name="widget_too_big">Tá an ghiuirléid ró-mhór do mhéid an scáileáin baile reatha</string>
<string name="hide_icon">Folaigh deilbhín</string>
</resources>
<string name="double_tap_to_lock">Tapáil faoi dhó chun an scáileán a ghlasáil</string>
<string name="lock_device_admin_warning">Má dhéantar cead riaracháin a dhíghníomhachtú, díchumasófar an sconna dúbailte chun an ghné scáileáin a ghlasáil.</string>
<string name="lock_device_admin_hint">Chun an sconna dúbailte a chumasú chun gné an scáileáin a ghlasáil, ní mór duit cead riaracháin a dheonú. Tabhair faoi deara nach féidir an aip a dhíshuiteáil go dtí go mbaintear an cead seo.</string>
<string name="auto_show_keyboard_in_app_drawer">Taispeáin an méarchlár go huathoibríoch sa tarraiceán</string>
</resources>

View File

@@ -14,4 +14,7 @@
<string name="close_app_drawer_on_app_open">Pechar o panel ao abrir unha app</string>
<string name="widget_too_big">O widget é demasiado grande para o tamaño da pantalla de inicio</string>
<string name="home_screen_settings">Pantalla de inicio</string>
</resources>
<string name="double_tap_to_lock">Toble toque para bloquear pantalla</string>
<string name="lock_device_admin_hint">Para activar a función de bloqueo por doble toque, tes que conceder permiso de administración. Ten en conta que a app non se pode desinstalar ate que retires este permiso.</string>
<string name="lock_device_admin_warning">Ao desactivar o permiso de admin desactivarás o doble toque para bloquear a pantalla.</string>
</resources>

View File

@@ -14,4 +14,7 @@
<string name="close_app_drawer_on_app_open">ऐप खोलने पर ऐप ड्रॉअर बंद कर दें</string>
<string name="home_screen_settings">होम स्क्रीन</string>
<string name="widget_too_big">वर्तमान होम स्क्रीन आकार के लिए विजेट बहुत बड़ा है</string>
<string name="lock_device_admin_hint">स्क्रीन लॉक करने के लिए डबल-टैप करने वाले फीचर को सक्षम करने के लिए प्रशासनिक अनुमति आवश्यक है। ध्यान रखें कि ये ऐप अनइंस्टॉल नहीं हो पाएगा जब तक ये अनुमति रहेगी।</string>
<string name="double_tap_to_lock">स्क्रीन लॉक करने के लिए डबल टैप करें</string>
<string name="lock_device_admin_warning">प्रशासनिक अनुमतियाँ हटाये जाने पर डबल-टैप स्क्रीन लॉक सुविधा अक्षम हो जायेगी।</string>
</resources>

View File

@@ -14,4 +14,8 @@
<string name="app_drawer_settings">Ladica aplikacije</string>
<string name="close_app_drawer_on_app_open">Zatvori ladicu aplikacija pri otvaranju aplikacije</string>
<string name="widget_too_big">Widget je prevelik za trenutnu veličinu početnog ekrana</string>
</resources>
<string name="double_tap_to_lock">Dodirni dvaput za zaključavanje ekrana</string>
<string name="lock_device_admin_hint">Za aktiviranje funkcije dvostrukog dodira za zaključavanje ekrana moraš odobriti administratorsku dozvolu. Imaj na umu da se aplikacija ne može deinstalirati sve dok se ova dozvola ne ukloni.</string>
<string name="lock_device_admin_warning">Uklanjanje administratorske dozvole će deaktivirati funkciju dvostrukog dodira za zaključavanje ekrana.</string>
<string name="auto_show_keyboard_in_app_drawer">Automatski prikaži tipkovnicu u ladici</string>
</resources>

View File

@@ -14,4 +14,7 @@
<string name="close_app_drawer_on_app_open">Alkalmazásfiók bezárása egy alkalmazás megnyitásakor</string>
<string name="widget_too_big">A modul túl nagy az aktuális kezdőképernyő méretéhez</string>
<string name="home_screen_settings">Kezdőképernyő</string>
<string name="lock_device_admin_warning">Az rendszergazdai engedély kikapcsolása letiltja a képernyő lezárásához szükséges dupla koppintás funkciót.</string>
<string name="double_tap_to_lock">Dupla koppintás a képernyő zárolásához</string>
<string name="lock_device_admin_hint">A képernyőzárolás dupla koppintás funkciójának engedélyezéséhez rendszergazdai hozzáférést kell adnia. Vegye figyelembe, hogy az alkalmazás nem távolítható el, amíg ez az engedély nem kerül eltávolításra.</string>
</resources>

View File

@@ -14,4 +14,7 @@
<string name="app_drawer_settings">Laci aplikasi</string>
<string name="widget_too_big">Widget terlalu besar untuk ukuran layar beranda saat ini</string>
<string name="home_screen_settings">Layar beranda</string>
</resources>
<string name="double_tap_to_lock">Ketuk dua kali untuk mengunci layar</string>
<string name="lock_device_admin_warning">Menonaktifkan izin admin akan menonaktifkan fitur ketuk dua kali untuk mengunci layar.</string>
<string name="lock_device_admin_hint">Untuk mengaktifkan fitur ketuk dua kali untuk mengunci layar, Anda perlu memberikan izin admin. Perhatikan bahwa aplikasi tidak dapat dihapus sampai izin ini dicabut.</string>
</resources>

View File

@@ -14,4 +14,8 @@
<string name="widget_too_big">Il widget è troppo grande per le dimensioni attuali della schermata principale</string>
<string name="app_launcher_name">Launcher</string>
<string name="home_screen_settings">Schermata iniziale</string>
</resources>
<string name="lock_device_admin_hint">Per abilitare la funzione di doppio tocco per bloccare lo schermo è necessario garantire i permessi di amministratore. L\'app non può essere disinstallata finché non vengono rimossi i permessi.</string>
<string name="double_tap_to_lock">Doppio tocco per bloccare lo schermo</string>
<string name="lock_device_admin_warning">Disattivando i permessi di amministratore disabiliterai la funzionalità di doppio tocco per bloccare lo schermo.</string>
<string name="auto_show_keyboard_in_app_drawer">Mostra automaticamente la tastiera nel cassetto</string>
</resources>

View File

@@ -1,13 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_launcher_name">משגר</string>
<string name="launcher_settings">הגדרות משגר</string>
<string name="app_info">מידע על האפליקציה</string>
<string name="launcher_settings">הגדרות המשגר</string>
<string name="app_info">פרטי היישומון</string>
<string name="touch_hold_widget">לחיצה ארוכה על הווידג\'ט וגרירה שלו במסך הראשי</string>
<string name="uninstall">הסרה</string>
<string name="hide_icon">החבא אייקון</string>
<string name="hide_icon">הסתר אייקון</string>
<string name="add_hidden_icons">הוסף אייקונים נסתרים</string>
<string name="manage_hidden_icons">ניהול אייקונים נסתרים</string>
<string name="hidden_icons">אייקונים נסתרים</string>
<string name="hidden_icons_placeholder">חלק מהאפליקציות לא ניתנות להסרה עקב הגבלות מערכת, לפחות אתה יכול להחביא את האייקונים כדי לא לראותם במסך הבית.</string>
<string name="hidden_icons_placeholder">לא ניתן להסיר אפליקציות מסוימות עקב מגבלות מערכת, אבל אתה יכול לפחות להסתיר את הסמלים שלהן כדי להימנע מלראות אותם.</string>
<string name="close_app_drawer_on_app_open">סגור את מגירת האפליקציות בעת פתיחת אפליקציה</string>
<string name="home_screen_settings">מסך בית</string>
<string name="double_tap_to_lock">הקש פעמיים כדי לנעול את המסך</string>
<string name="lock_device_admin_hint">כדי להפעיל הקשה כפולה לנעילת מסך, עליך להעניק הרשאת מנהל. שימו לב שלא ניתן להסיר את האפליקציה עד להסרת ההרשאה הזו.</string>
<string name="lock_device_admin_warning">ביטול הרשאת מנהל ישבית את אפשרות ההקשה הכפולה לנעילת מסך.</string>
<string name="app_drawer_settings">מגירת אפליקציות</string>
<string name="widget_too_big">הווידג\'ט גדול מדי לגודל מסך הבית הנוכחי</string>
<string name="auto_show_keyboard_in_app_drawer">הצגת מקלדת אוטומטית במגירה</string>
</resources>

View File

@@ -14,4 +14,6 @@
<string name="close_app_drawer_on_app_open">アプリを開く際にドローワーを閉じる</string>
<string name="home_screen_settings">ホーム画面</string>
<string name="widget_too_big">ウィジェットが現在のホーム画面のサイズよりも大きいです</string>
</resources>
<string name="auto_show_keyboard_in_app_drawer">ドロワーを開いた際に自動的にキーボードを表示する</string>
<string name="double_tap_to_lock">ダブルタップしてロック画面を表示する</string>
</resources>

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hide_icon">Ffer tignit</string>
<string name="uninstall">Kkes asbeddi</string>
<string name="hidden_icons">Tignitin yeffren</string>
<string name="hidden_icons_placeholder">Kra n yisnasen ur zmiren ara ad ttwakksen ɣef sebba n tlisa n unagraw, acukan tzemreḍ ad teffreḍ tignitin-nsen akken ur tent-twaliḍ ara.</string>
<string name="app_drawer_settings">Leqjeṛ n usnas</string>
<string name="close_app_drawer_on_app_open">Mdel leqjer n usnas deg ulday n usnas</string>
<string name="home_screen_settings">Agdil agejdan</string>
<string name="widget_too_big">Awiǧit meqqer aṭas i teɣzi n ugdil agejdan amiran</string>
<string name="lock_device_admin_warning">Asexsi n usireg anedbal ad yekkes asiti-nni s snat n tikkal akken ad yeskweṛ tmahilt n ugdil.</string>
<string name="app_launcher_name">Amsekkar</string>
<string name="launcher_settings">Iɣewwaṛen n umsekkar</string>
<string name="app_info">Talɣut n usnas</string>
<string name="touch_hold_widget">Sit aɣezfan ɣef uwiǧit, syin zuɣer-it deg ugdil-ik-im agejdan</string>
<string name="add_hidden_icons">Rnu tignitin yeffren</string>
<string name="manage_hidden_icons">Sefrek tignitin yeffren</string>
<string name="auto_show_keyboard_in_app_drawer">Sken s wudem awurman anasiw deg leqjer</string>
<string name="double_tap_to_lock">Sit snat n tikkal akken ad tsekkṛeḍ agdil</string>
<string name="lock_device_admin_hint">Akken ad tremdeḍ asiti n snat tikal i tmahilt n usekkeṛ n ugdil, yessefk ad tged assireg n unebdal. Ger tamawt dakken asnas-nni ur yezmir ara ad yettwakkes arma yettwakkes ussireg-a.</string>
</resources>

View File

@@ -1,3 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>
<string name="app_launcher_name">Paleidyklė</string>
<string name="launcher_settings">Paleidyklės nustatymai</string>
<string name="app_info">Programos informacija</string>
<string name="touch_hold_widget">Ilgai paspauskite valdiklį ir nutempkite jį į pradžios ekraną.</string>
<string name="uninstall">Išdiegti</string>
<string name="hide_icon">Slėpti piktogramą</string>
<string name="add_hidden_icons">Įtraukti paslėptas piktogramas</string>
<string name="manage_hidden_icons">Tvarkyti paslėptas piktogramas</string>
<string name="hidden_icons">Paslėptos piktogramos</string>
<string name="hidden_icons_placeholder">Kai kurios programos negali būti išdiegtos dėl sistemos apribojimų, bet galite bent jau paslėpti piktogramas, kad jų nematytumėte.</string>
<string name="app_drawer_settings">Programų sąrašas</string>
<string name="close_app_drawer_on_app_open">Užverti programų sąrašą atvėrus programą</string>
<string name="auto_show_keyboard_in_app_drawer">Automatiškai rodyti klaviatūrą sąraše</string>
<string name="home_screen_settings">Pradžios ekranas</string>
<string name="widget_too_big">Valdiklis per didelis dabartiniam pradžios ekrano dydžiui.</string>
<string name="double_tap_to_lock">Dukart paliesti norint užrakinti ekraną</string>
<string name="lock_device_admin_hint">Kad įjungtumėte dvigubo palietimo ekrano užrakinimo funkciją, turite suteikti administratoriaus leidimą. Atkreipkite dėmesį, kad programos negalima išdiegtas, kol šis leidimas bus pašalintas.</string>
<string name="lock_device_admin_warning">Išjungus administratoriaus leidimą, bus išjungta dvigubo palietimo ekrano užrakinimo funkcija.</string>
</resources>

View File

@@ -1,2 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="app_launcher_name">Palaidējs</string>
<string name="launcher_settings">Palaidēja iestatījumi</string>
<string name="app_info">Informācija par lietotni</string>
<string name="touch_hold_widget">Ilgi jāpiespiež uz logrīka un jāievelk tas sākuma ekrānā</string>
<string name="uninstall">Noņemt</string>
<string name="hide_icon">Paslēpt ikonu</string>
<string name="add_hidden_icons">Pievienot paslēptās ikonas</string>
<string name="manage_hidden_icons">Pārvaldīt paslēptās ikonas</string>
<string name="hidden_icons">Paslēptās ikonas</string>
<string name="hidden_icons_placeholder">Dažas lietotnes nevar noņemt sistēmas ierobežojumu dēļ, bet ir iespējams paslēpt to ikonas, lai neredzētu tās.</string>
<string name="app_drawer_settings">Lietotņu atvilktne</string>
<string name="close_app_drawer_on_app_open">Aizvērt lietotņu atvilktni pēc lietotnes atvēršanas</string>
<string name="auto_show_keyboard_in_app_drawer">Atvilktnē automātiski parādīt tastatūru</string>
<string name="home_screen_settings">Sākuma ekrāns</string>
<string name="widget_too_big">Logrīks ir par lielu pašreizējam sākuma ekrāna izmēram</string>
<string name="double_tap_to_lock">Aizslēgt ekrānu ar divkāršu piesitienu</string>
<string name="lock_device_admin_hint">Lai iespējotu ekrāna aizslēgšanu ar divkāršu piesitienu, ir nepieciešams piešķirt pārvaldītāja atļauju. Jāņem vērā, ka lietotni nevar noņemt, kamēr šī atļauja nav noņemta.</string>
<string name="lock_device_admin_warning">Pārvaldītāja atļaujas deaktivēšana atspējos ekrāna aizslēgšanu ar divkāršu piesitienu.</string>
</resources>

View File

@@ -1,2 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="app_launcher_name">Покренувач</string>
</resources>

View File

@@ -14,4 +14,8 @@
<string name="home_screen_settings">Beginscherm</string>
<string name="widget_too_big">Widget is te groot voor de huidige afmetingen van het beginscherm</string>
<string name="app_launcher_name">Launcher</string>
</resources>
<string name="lock_device_admin_warning">Als je het recht voor apparaatbeheer niet toekent, wordt de functie \'dubbeltikken om het scherm te vergrendelen\' uitgeschakeld.</string>
<string name="lock_device_admin_hint">Om de functie \'Dubbeltikken om het scherm te vergrendelen\' in te schakelen, moet je het recht voor apparaatbeheer toekennen. De app kan dan niet worden verwijderd totdat deze toestemming is verwijderd.</string>
<string name="double_tap_to_lock">Dubbeltikken om het scherm te vergrendelen</string>
<string name="auto_show_keyboard_in_app_drawer">Toetsenbord automatisch tonen in app-overzicht</string>
</resources>

View File

@@ -14,4 +14,8 @@
<string name="home_screen_settings">Ekran główny</string>
<string name="widget_too_big">Widżet jest za duży dla aktualnego rozmiaru ekranu głównego</string>
<string name="app_launcher_name">Launcher</string>
</resources>
<string name="double_tap_to_lock">Naciśnij dwukrotnie, aby zablokować ekran</string>
<string name="lock_device_admin_hint">Aby włączyć funkcję dwukrotnego naciśnięcia w celu zablokowania ekranu, musisz udzielić uprawnienia administratora. Uwaga: aplikacja nie może zostać odinstalowana, dopóki to uprawnienie nie zostanie usunięte.</string>
<string name="lock_device_admin_warning">Dezaktywacja uprawnienia administratora spowoduje wyłączenie funkcji dwukrotnego naciśnięcia w celu zablokowania ekranu.</string>
<string name="auto_show_keyboard_in_app_drawer">Automatycznie pokazuj klawiaturę w szufladzie</string>
</resources>

View File

@@ -13,5 +13,9 @@
<string name="close_app_drawer_on_app_open">Fechar gaveta de aplicativos ao abrir um aplicativo</string>
<string name="home_screen_settings">Tela inicial</string>
<string name="widget_too_big">O widget é muito grande para o tamanho atual da tela inicial</string>
<string name="app_launcher_name">Launcher</string>
</resources>
<string name="app_launcher_name">Iniciador</string>
<string name="double_tap_to_lock">Toque duas vezes para bloquear a tela</string>
<string name="lock_device_admin_hint">Para habilitar o recurso de toque duplo para bloquear a tela, você precisa conceder permissão de administrador. Observe que o aplicativo não pode ser desinstalado até que essa permissão seja removida.</string>
<string name="lock_device_admin_warning">Desativar a permissão de administrador desabilitará o recurso de toque duplo para bloquear a tela.</string>
<string name="auto_show_keyboard_in_app_drawer">Mostrar teclado ao abrir Gaveta</string>
</resources>

View File

@@ -14,4 +14,8 @@
<string name="close_app_drawer_on_app_open">Fechar menu de aplicações ao abrir uma aplicação</string>
<string name="widget_too_big">O widget é muito grande para o ecrã disponível</string>
<string name="home_screen_settings">Ecrã inicial</string>
</resources>
<string name="double_tap_to_lock">Dois toques para bloquear o ecrã</string>
<string name="lock_device_admin_hint">Para ativar esta funcionalidade, tem que permitir o acesso de administração. Tenha em atenção se que não conseguirá desinstalar a aplicação sem antes revogar esta permissão.</string>
<string name="lock_device_admin_warning">Ao desativar a permissão, também desativa a possibilidade de bloquear o ecrã com dois toques.</string>
<string name="auto_show_keyboard_in_app_drawer">Mostrar o teclado automaticamente na gaveta</string>
</resources>

View File

@@ -14,4 +14,8 @@
<string name="close_app_drawer_on_app_open">Закрывать боковую панель при открытии приложения</string>
<string name="home_screen_settings">Домашний экран</string>
<string name="widget_too_big">Виджет слишком велик для текущего размера домашнего экрана</string>
<string name="double_tap_to_lock">Двойное нажатие блокирует экран</string>
<string name="lock_device_admin_hint">Для включения функции блокировки экрана двойным нажатием необходимы права администратора. Учтите, что приложение нельзя будет удалить, пока данное разрешение не будет отключено.</string>
<string name="lock_device_admin_warning">Удаление прав администратора приведёт к отключению функции блокировки экрана двойным нажатием.</string>
<string name="auto_show_keyboard_in_app_drawer">Автоматически показывать клавиатуру в боковой панели</string>
</resources>

View File

@@ -1,17 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_launcher_name">Spúšťač</string>
<string name="launcher_settings">Nastavenia Spúšťača</string>
<string name="app_info">Informácie o apke</string>
<string name="launcher_settings">Nastavenia spúšťača</string>
<string name="app_info">Informácie o aplikácii</string>
<string name="touch_hold_widget">Umiestnite widget na domovskú obrazovku dlhým podržaním a potiahnutím</string>
<string name="uninstall">Odinštalovať</string>
<string name="hide_icon">Skryť ikonku</string>
<string name="add_hidden_icons">Pridať skryté ikonky</string>
<string name="manage_hidden_icons">Spravovať skryté ikonky</string>
<string name="hidden_icons">Skryté ikonky</string>
<string name="hidden_icons_placeholder">Niektoré apky nemôžu byť odinštalované kvôli systémovým obmedzeniam, viete ich ale aspoň skryť, aby ste ich nevideli.</string>
<string name="app_drawer_settings">Zoznam apiek</string>
<string name="close_app_drawer_on_app_open">Zavrieť zoznam apiek po spustení apky</string>
<string name="home_screen_settings">Domáca obrazovka</string>
<string name="hide_icon">Skryť aplikáciu</string>
<string name="add_hidden_icons">Pridať skryté aplikácie</string>
<string name="manage_hidden_icons">Spravovať skryté aplikácie</string>
<string name="hidden_icons">Skryté aplikácie</string>
<string name="hidden_icons_placeholder">Niektoré aplikácie nemôžu byť odinštalované pre systémové obmedzenia, ale je možné ich skryť, aby ste ich nevideli.</string>
<string name="app_drawer_settings">Ponuka aplikácií</string>
<string name="close_app_drawer_on_app_open">Zavrieť ponuku aplikácií po spustení aplikácie</string>
<string name="home_screen_settings">Domovská obrazovka</string>
<string name="widget_too_big">Widget je príliš veľký pre súčasnú domácu obrazovku</string>
<string name="auto_show_keyboard_in_app_drawer">Automaticky zobraziť klávesnicu v ponuke aplikácií</string>
<string name="double_tap_to_lock">Dvojitým ťuknutím uzamknúť obrazovku</string>
<string name="lock_device_admin_hint">Pre umoženie zámku obrazovky dvojitým ťuknutím je nutné aktivovať povolenie pre aplikáciu na správu zariadenia. Pre odinštalovanie aplikácie musí byť toto povolenie zrušené.</string>
<string name="lock_device_admin_warning">Deaktiváciou povolenia aplikácie na správu zariadenia sa funkcia dvojitého ťuknutia na uzamknutie obrazovky vypne.</string>
</resources>

View File

@@ -10,4 +10,12 @@
<string name="manage_hidden_icons">Управљајте скривеним иконама</string>
<string name="hidden_icons">Скривене иконе</string>
<string name="hidden_icons_placeholder">Неке апликације се не могу деинсталирати због системских ограничења, али можете барем сакрити њихове иконе да их не видите.</string>
<string name="close_app_drawer_on_app_open">Затвори фиоку апликација по отварању апликација</string>
<string name="auto_show_keyboard_in_app_drawer">Аутоматски показуј тастатуру у фиоци</string>
<string name="home_screen_settings">Почетни екран</string>
<string name="widget_too_big">Виџет не може стати на почетни екран</string>
<string name="app_drawer_settings">Фиока апликација</string>
<string name="double_tap_to_lock">Двапут додирните за закључавање екрана</string>
<string name="lock_device_admin_hint">Да бисте омогућили функцију \"двапут додирните за закључавање екрана\", морате дати администраторску дозволу. Апликацију није могуће обрисати док се дозвола не уклони.</string>
<string name="lock_device_admin_warning">Уклањање администраторске дозволе онемогућиће функцију двоструког додира за закључавање екрана.</string>
</resources>

View File

@@ -14,4 +14,8 @@
<string name="close_app_drawer_on_app_open">Stäng applådan när en app öppnas</string>
<string name="home_screen_settings">Startskärm</string>
<string name="widget_too_big">Widgeten är för stor för startskärmens aktuella storlek</string>
<string name="lock_device_admin_hint">Om du vill aktivera funktionen dubbeltryck för att låsa skärmen måste du bevilja administratörsbehörighet. Observera att appen inte kan avinstalleras förrän behörigheten har tagits bort.</string>
<string name="double_tap_to_lock">Dubbeltryck för att låsa skärmen</string>
<string name="lock_device_admin_warning">Om du inaktiverar administratörsbehörigheten inaktiveras funktionen dubbeltryck för att låsa skärmen.</string>
<string name="auto_show_keyboard_in_app_drawer">Visa tangentbordet automatiskt i lådan</string>
</resources>

View File

@@ -14,4 +14,8 @@
<string name="close_app_drawer_on_app_open">Bir uygulama açıldığında uygulama çekmecesini kapat</string>
<string name="home_screen_settings">Ana ekran</string>
<string name="widget_too_big">Widget, şu anki ana ekran boyutu için çok büyük</string>
</resources>
<string name="double_tap_to_lock">Ekranı kilitlemek için çift dokunun</string>
<string name="lock_device_admin_warning">Yönetici iznini devre dışı bırakmak, ekranı kilitlemek için çift dokunma özelliğini devre dışı bırakır.</string>
<string name="lock_device_admin_hint">Ekranı kilitlemek için çift dokunma özelliğini etkinleştirmek için yönetici izni vermeniz gerekir. Bu izin kaldırılmadığı sürece uygulamanın kaldırılamayacağını unutmayın.</string>
<string name="auto_show_keyboard_in_app_drawer">Uygulama çekmecesinde otomatik olarak klavyeyi göster</string>
</resources>

View File

@@ -14,4 +14,8 @@
<string name="close_app_drawer_on_app_open">Закривати панель застосунок при відкриті застосунку</string>
<string name="home_screen_settings">Домашній екран</string>
<string name="widget_too_big">Віджет надто великий для поточного розміру домашнього екрану</string>
<string name="lock_device_admin_warning">Скасування прав адміністратора вимкне функцію подвійного дотику для блокування екрана.</string>
<string name="double_tap_to_lock">Двічі торкніться, щоб заблокувати екран</string>
<string name="lock_device_admin_hint">Щоб увімкнути функцію блокування екрана подвійним дотиком, вам потрібно надати права адміністратора. Зверніть увагу, що застосунок не можна буде видалити, поки цей дозвіл не буде скасовано.</string>
<string name="auto_show_keyboard_in_app_drawer">Автоматично показувати клавіатуру в шухляді</string>
</resources>

View File

@@ -14,4 +14,8 @@
<string name="close_app_drawer_on_app_open">打开抽屉内应用时关闭抽屉</string>
<string name="home_screen_settings">主屏幕</string>
<string name="widget_too_big">微件对当前屏幕尺寸而言太大了</string>
</resources>
<string name="double_tap_to_lock">双击锁屏</string>
<string name="lock_device_admin_warning">停用管理员权限将禁用双击锁屏功能。</string>
<string name="lock_device_admin_hint">要启用双击锁屏功能,您需要授予管理员权限。请注意,在移除此权限之前无法卸载该应用。</string>
<string name="auto_show_keyboard_in_app_drawer">在抽屉中自动显示键盘</string>
</resources>

View File

@@ -1,2 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="app_launcher_name">啟動器</string>
<string name="launcher_settings">啟動器設定</string>
<string name="app_info">應用程式資訊</string>
<string name="touch_hold_widget">長按小工具並將其拖曳至你的主畫面</string>
<string name="uninstall">解除安裝</string>
<string name="hide_icon">隱藏圖示</string>
<string name="add_hidden_icons">新增隱藏圖示</string>
<string name="manage_hidden_icons">管理隱藏圖示</string>
<string name="hidden_icons">隱藏圖示</string>
<string name="hidden_icons_placeholder">由於系統限制,部分應用程式無法被移除,但您至少可以隱藏其圖示,避免看到它們。</string>
<string name="app_drawer_settings">應用程式抽屜</string>
<string name="close_app_drawer_on_app_open">開啟應用程式時關閉應用程式抽屜</string>
<string name="auto_show_keyboard_in_app_drawer">自動在抽屜中顯示鍵盤</string>
<string name="home_screen_settings">主畫面</string>
<string name="widget_too_big">小工具對於目前主畫面大小來說太大</string>
<string name="double_tap_to_lock">輕觸兩下以鎖定螢幕</string>
<string name="lock_device_admin_hint">要啟用輕觸兩下以鎖定螢幕的功能,您必須授予管理權限。請注意,在移除此權限前,無法解除安裝應用程式。</string>
<string name="lock_device_admin_warning">停用管理權限將會停用輕觸兩下以鎖定螢幕的功能。</string>
</resources>

View File

@@ -14,4 +14,8 @@
<string name="close_app_drawer_on_app_open">開啟應用程式時關閉應用程式抽屜</string>
<string name="home_screen_settings">主畫面</string>
<string name="widget_too_big">小工具對於目前主畫面大小來說太大</string>
</resources>
<string name="double_tap_to_lock">輕觸兩下以鎖定螢幕</string>
<string name="lock_device_admin_warning">停用管理權限將會停用輕觸兩下以鎖定螢幕的功能。</string>
<string name="lock_device_admin_hint">要啟用輕觸兩下以鎖定螢幕的功能,您必須授予管理權限。請注意,在移除此權限前,無法解除安裝應用程式。</string>
<string name="auto_show_keyboard_in_app_drawer">自動在抽屜中顯示鍵盤</string>
</resources>

View File

@@ -12,8 +12,12 @@
<string name="hidden_icons_placeholder">Some apps cannot be uninstalled due to system restrictions, but you can at least hide their icons to avoid seeing them.</string>
<string name="app_drawer_settings">App drawer</string>
<string name="close_app_drawer_on_app_open">Close app drawer on opening an app</string>
<string name="auto_show_keyboard_in_app_drawer">Automatically show keyboard in drawer</string>
<string name="home_screen_settings">Home screen</string>
<string name="widget_too_big">Widget is too big for current home screen size</string>
<string name="double_tap_to_lock">Double tap to lock screen</string>
<string name="lock_device_admin_hint">To enable the double tap to lock screen feature, you need to grant admin permission. Note that the app cannot be uninstalled until this permission is removed.</string>
<string name="lock_device_admin_warning">Deactivating admin permission will disable the double tap to lock screen feature.</string>
<!--
Haven't found some strings? There's more at
https://github.com/FossifyOrg/Commons/tree/master/commons/src/main/res

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<device-admin>
<uses-policies>
<force-lock />
</uses-policies>
</device-admin>

63
detekt.yml Normal file
View File

@@ -0,0 +1,63 @@
build:
maxIssues: 0
weights:
complexity: 2
LongParameterList: 2
style: 1
processors:
active: true
exclude:
- "FunctionCountProcessor"
- "PropertyCountProcessor"
config:
validation: true
complexity:
LongParameterList:
active: true
functionThreshold: 10
constructorThreshold: 8
ignoreDefaultParameters: true
ignoreAnnotated:
- "Composable"
LongMethod:
active: true
threshold: 120
ignoreAnnotated:
- "Composable"
- "Preview"
style:
MagicNumber:
active: true
ignoreAnnotated: ["Composable"]
ignoreEnums: true
ignoreNumbers: ["-1", "0", "1", "2", "42", "1000"]
MaxLineLength:
active: true
maxLineLength: 120
excludePackageStatements: true
excludeImportStatements: true
ReturnCount:
active: true
max: 4
excludeGuardClauses: true
excludes: ["**/test/**", "**/androidTest/**"]
naming:
FunctionNaming:
active: true
ignoreAnnotated: ["Composable", "Preview"]
functionPattern: "[a-z][A-Za-z0-9]*"
Compose: # io.nlopez.compose.rules
ComposableParametersOrdering:
active: true
ModifierDefaultValue:
active: true
MissingModifierDefaultValue:
active: true
PublicComposablePreview:
active: true

View File

@@ -1,38 +1,12 @@
# This file contains the fastlane.tools configuration
# You can find the documentation at https://docs.fastlane.tools
#
# For a list of all available actions, check out
#
# https://docs.fastlane.tools/actions
#
# For a list of all available plugins, check out
#
# https://docs.fastlane.tools/plugins/available-plugins
#
# Uncomment the line if you want fastlane to automatically update itself
# update_fastlane
default_platform(:android)
platform :android do
desc "Runs all the tests"
lane :test do
gradle(task: "test")
end
desc 'Run unit & instrumentation tests'
lane(:test) { test_android }
desc "Submit a new Beta Build to Crashlytics Beta"
lane :beta do
gradle(task: "clean assembleRelease")
crashlytics
# sh "your_script.sh"
# You can also use other beta testing services here
end
desc 'Build & deploy AAB to Google Play (includes metadata)'
lane(:deploy) { deploy_android }
desc "Deploy a new version to the Google Play"
lane :deploy do
gradle(task: "clean assembleRelease")
upload_to_play_store
end
desc 'Push Play Store metadata'
lane(:metadata) { metadata_android }
end

48
fastlane/README.md Normal file
View File

@@ -0,0 +1,48 @@
fastlane documentation
----
# Installation
Make sure you have the latest version of the Xcode command line tools installed:
```sh
xcode-select --install
```
For _fastlane_ installation instructions, see [Installing _fastlane_](https://docs.fastlane.tools/#installing-fastlane)
# Available Actions
## Android
### android test
```sh
[bundle exec] fastlane android test
```
Run unit & instrumentation tests
### android deploy
```sh
[bundle exec] fastlane android deploy
```
Build & deploy AAB to Google Play (includes metadata)
### android metadata
```sh
[bundle exec] fastlane android metadata
```
Push Play Store metadata
----
This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run.
More information about _fastlane_ can be found on [fastlane.tools](https://fastlane.tools).
The documentation of _fastlane_ can be found on [docs.fastlane.tools](https://docs.fastlane.tools).

View File

@@ -1 +0,0 @@
* প্রাথমিক প্রকাশ

View File

@@ -1 +0,0 @@
* Llançament inicial

View File

@@ -1 +0,0 @@
Fossify Launcher

View File

@@ -1 +0,0 @@
* Prvotní vydání

View File

@@ -1 +0,0 @@
Launcher Fossify

View File

@@ -1 +0,0 @@
* Erste Veröffentlichung

View File

@@ -7,7 +7,7 @@ Passe deinen Startbildschirm mit dynamischen Farbschemas, eigenen Farben und Lay
Integriere ganz einfach Widgets mit vollständig veränderbarer Größe. Egal, ob du Uhren, Kalender oder andere praktische Tools brauchst, Fossify Launcher sorgt dafür, dass sie sich nahtlos in dein Startbildschirm-Design einfügen.<br><br>
<b>📱 KEIN UNERWÜNSCHTES DURCHEINANDER:</b><br>
Verwalte deine Apps mühelos, indem du sie mit nur wenigen Fingertipps ausblendest oder deinstallierst, damit dein Startbildschirm übersichtlich bleibt.<br><br>
<b>🔒 PRIVATSPHÄRE UND SICHERHEIT:</b><br>
<b>🔒 DATENSCHUTZ UND SICHERHEIT:</b><br>
Deine Privatsphäre steht im Mittelpunkt von Fossify Launcher. Ohne Internetzugang und ohne aufdringliche Berechtigungen bleiben deine Daten bei dir. Kein Tracking, keine Werbung nur ein Launcher, der deine Privatsphäre respektiert.<br><br>
<b>🌐 OPEN-SOURCE-GARANTIE:</b><br>
Fossify Launcher wurde auf einer Open-Source-Basis entwickelt, die es dir ermöglicht, unseren Code auf GitHub zu überprüfen, was das Vertrauen und eine Gemeinschaft fördert, die sich für den Datenschutz einsetzt.<br><br>

View File

@@ -1 +1 @@
Startbildschirm mit einem schnellen, werbefreien Open-Source-Launcher anpassen
Startbildschirm mit einem schnellen, werbefreien, quelloffenen Launcher anpassen

View File

@@ -1 +0,0 @@
Fossify Launcher

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