mirror of
https://github.com/FossifyOrg/Launcher.git
synced 2025-12-24 08:08:58 -05:00
Compare commits
141 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
34dcfa9b65 | ||
|
|
e162ec23d9 | ||
|
|
0d37825fa8 | ||
|
|
f18f65d634 | ||
|
|
c9977aee10 | ||
|
|
057111000f | ||
|
|
db082920c9 | ||
|
|
acc1f058d2 | ||
|
|
d3246d2cc4 | ||
|
|
01e8dede29 | ||
|
|
408f6b6e34 | ||
|
|
8d03b1818a | ||
|
|
755bc77aed | ||
|
|
40e1c28a15 | ||
|
|
7f053cc415 | ||
|
|
e1506df987 | ||
|
|
e284a7558d | ||
|
|
0004ad8659 | ||
|
|
13d6cd323e | ||
|
|
846783806e | ||
|
|
4e2366833d | ||
|
|
c23048664d | ||
|
|
2e8835489e | ||
|
|
5618cc1c74 | ||
|
|
707f2837fd | ||
|
|
6bcc43e276 | ||
|
|
add85b7e4c | ||
|
|
f627ba0bca | ||
|
|
03497fdbb2 | ||
|
|
ef103f94c4 | ||
|
|
79ea581bb7 | ||
|
|
94bfcd3f90 | ||
|
|
5b997ca666 | ||
|
|
b05fb2cc59 | ||
|
|
fcfb34d3c8 | ||
|
|
b2888dfa40 | ||
|
|
fd5af4becc | ||
|
|
666627150e | ||
|
|
4185eeeb31 | ||
|
|
65307abd46 | ||
|
|
b70e248b7b | ||
|
|
c90853cc3a | ||
|
|
1541be6bba | ||
|
|
ab7ded014d | ||
|
|
61c1179af0 | ||
|
|
55793591f1 | ||
|
|
c0acc69e11 | ||
|
|
014cfcac06 | ||
|
|
b06fa1a477 | ||
|
|
e3620f48af | ||
|
|
4d9ba1d241 | ||
|
|
dd86c458cb | ||
|
|
7aec205cc1 | ||
|
|
15d76036d7 | ||
|
|
b1088c705e | ||
|
|
cb3978dc0e | ||
|
|
7f7c455c34 | ||
|
|
c6a56fe300 | ||
|
|
33b4e01b8f | ||
|
|
d3d53b3212 | ||
|
|
aac21411a6 | ||
|
|
5d2c08d70c | ||
|
|
532f57c46d | ||
|
|
45a957e70a | ||
|
|
baa139f5d6 | ||
|
|
f6e6d89319 | ||
|
|
5ed097c6f1 | ||
|
|
57b1b13592 | ||
|
|
4f5103fb1b | ||
|
|
1c1d0360ff | ||
|
|
eed55088ce | ||
|
|
e531f6c3e8 | ||
|
|
cebd9846f8 | ||
|
|
7e2209cc54 | ||
|
|
e92a785dbb | ||
|
|
138f8bbb9f | ||
|
|
5b15251256 | ||
|
|
f55145d2f2 | ||
|
|
678bd4ef8d | ||
|
|
cdc2a5288f | ||
|
|
f915cc2d33 | ||
|
|
1480856b85 | ||
|
|
c82648ec62 | ||
|
|
40c971fdcf | ||
|
|
e03a182899 | ||
|
|
f6404419c2 | ||
|
|
e74ef8bf0f | ||
|
|
cf9a5e176c | ||
|
|
af6565c826 | ||
|
|
33366fb1fc | ||
|
|
346f993086 | ||
|
|
aa1c7f8004 | ||
|
|
1d3407bf74 | ||
|
|
7afbcc3b67 | ||
|
|
01d8b940be | ||
|
|
8e138b9c2a | ||
|
|
0ee1f18424 | ||
|
|
b9c6bfd605 | ||
|
|
3cecc50527 | ||
|
|
d38f0fc5c1 | ||
|
|
42aef77f80 | ||
|
|
6f605c8794 | ||
|
|
4d168b315d | ||
|
|
9d7b06be04 | ||
|
|
a65858f055 | ||
|
|
5466c0bf3e | ||
|
|
fdfd7f0bde | ||
|
|
b00cc8eb0f | ||
|
|
0ff331f91f | ||
|
|
0967231d3a | ||
|
|
232e7140df | ||
|
|
8ccc12fb77 | ||
|
|
7adf3e7ca2 | ||
|
|
cce4df2de7 | ||
|
|
3912c96127 | ||
|
|
c37465b230 | ||
|
|
84dd3b46b7 | ||
|
|
a5cc4f3157 | ||
|
|
b30e21166c | ||
|
|
e79bbcf589 | ||
|
|
baf44b3ecf | ||
|
|
7cd94f4c65 | ||
|
|
76bfc030cb | ||
|
|
cadcde79bc | ||
|
|
b60fc160de | ||
|
|
eef787c633 | ||
|
|
6bc8240941 | ||
|
|
e4bde274cb | ||
|
|
b7f5846dd8 | ||
|
|
8b791e0e47 | ||
|
|
7c7e4b56e2 | ||
|
|
c0355fd2e2 | ||
|
|
535398a3c6 | ||
|
|
e9e7788fed | ||
|
|
f0b5e51a45 | ||
|
|
355e4aa7ad | ||
|
|
562ea3e5f9 | ||
|
|
7a0741ff6f | ||
|
|
dde7a3dbcd | ||
|
|
081d438dd9 | ||
|
|
c62a59c2c7 |
@@ -1,2 +1,2 @@
|
||||
# Auto-generated file. DO NOT EDIT.
|
||||
1.1.3
|
||||
1.7.0
|
||||
|
||||
5
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
5
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -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 '....'
|
||||
|
||||
2
.github/ISSUE_TEMPLATE/config.yml
vendored
2
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -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.
|
||||
4
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
4
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
@@ -16,7 +16,7 @@ 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
|
||||
@@ -33,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
|
||||
|
||||
|
||||
5
.github/workflows/testing-build.yml
vendored
5
.github/workflows/testing-build.yml
vendored
@@ -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
13
.github/workflows/update-commons.yml
vendored
Normal 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
|
||||
13
.github/workflows/update-lint-baselines.yml
vendored
Normal file
13
.github/workflows/update-lint-baselines.yml
vendored
Normal 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
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -10,3 +10,4 @@ keystore.jks
|
||||
keystore.properties
|
||||
fastlane/fastlane.json
|
||||
fastlane/report.xml
|
||||
.kotlin/
|
||||
|
||||
95
CHANGELOG.md
95
CHANGELOG.md
@@ -1,5 +1,4 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||
@@ -7,72 +6,91 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [1.1.3] - 2025-06-19
|
||||
|
||||
## [1.7.0] - 2025-12-16
|
||||
### Changed
|
||||
|
||||
- Updated translations
|
||||
|
||||
### Fixed
|
||||
- Fixed invalid search results after opening and closing apps ([#100])
|
||||
|
||||
## [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])
|
||||
- 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
|
||||
|
||||
[Unreleased]: https://github.com/FossifyOrg/Launcher/compare/1.1.3...HEAD
|
||||
[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
|
||||
|
||||
[#5]: https://github.com/FossifyOrg/Launcher/issues/5
|
||||
[#6]: https://github.com/FossifyOrg/Launcher/issues/6
|
||||
[#44]: https://github.com/FossifyOrg/Launcher/issues/44
|
||||
@@ -80,4 +98,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
[#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
|
||||
|
||||
60
Gemfile.lock
60
Gemfile.lock
@@ -1,40 +1,40 @@
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
CFPropertyList (3.0.7)
|
||||
base64
|
||||
nkf
|
||||
rexml
|
||||
CFPropertyList (3.0.8)
|
||||
abbrev (0.1.2)
|
||||
addressable (2.8.7)
|
||||
public_suffix (>= 2.0.2, < 7.0)
|
||||
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.1116.0)
|
||||
aws-sdk-core (3.225.2)
|
||||
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.105.0)
|
||||
aws-sdk-core (~> 3, >= 3.225.0)
|
||||
aws-sdk-kms (1.118.0)
|
||||
aws-sdk-core (~> 3, >= 3.239.1)
|
||||
aws-sigv4 (~> 1.5)
|
||||
aws-sdk-s3 (1.189.1)
|
||||
aws-sdk-core (~> 3, >= 3.225.0)
|
||||
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.3.0)
|
||||
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)
|
||||
@@ -54,14 +54,14 @@ GEM
|
||||
faraday-rack (~> 1.0)
|
||||
faraday-retry (~> 1.0)
|
||||
ruby2_keywords (>= 0.0.4)
|
||||
faraday-cookie_jar (0.0.7)
|
||||
faraday-cookie_jar (0.0.8)
|
||||
faraday (>= 0.8.0)
|
||||
http-cookie (~> 1.0.0)
|
||||
http-cookie (>= 1.0.0)
|
||||
faraday-em_http (1.0.0)
|
||||
faraday-em_synchrony (1.0.0)
|
||||
faraday-em_synchrony (1.0.1)
|
||||
faraday-excon (1.1.0)
|
||||
faraday-httpclient (1.0.1)
|
||||
faraday-multipart (1.1.0)
|
||||
faraday-multipart (1.1.1)
|
||||
multipart-post (~> 2.0)
|
||||
faraday-net_http (1.0.2)
|
||||
faraday-net_http_persistent (1.2.0)
|
||||
@@ -71,15 +71,18 @@ GEM
|
||||
faraday_middleware (1.2.1)
|
||||
faraday (~> 1.0)
|
||||
fastimage (2.4.0)
|
||||
fastlane (2.228.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)
|
||||
@@ -97,9 +100,12 @@ GEM
|
||||
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)
|
||||
@@ -160,37 +166,37 @@ GEM
|
||||
httpclient (2.9.0)
|
||||
mutex_m
|
||||
jmespath (1.6.2)
|
||||
json (2.12.2)
|
||||
jwt (2.10.1)
|
||||
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.15.0)
|
||||
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.6.0)
|
||||
optparse (0.8.1)
|
||||
os (1.1.4)
|
||||
plist (3.7.2)
|
||||
public_suffix (6.0.2)
|
||||
rake (13.3.0)
|
||||
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.1)
|
||||
rexml (3.4.4)
|
||||
rouge (3.28.0)
|
||||
ruby2_keywords (0.0.5)
|
||||
rubyzip (2.4.1)
|
||||
security (0.1.5)
|
||||
signet (0.20.0)
|
||||
signet (0.21.0)
|
||||
addressable (~> 2.8)
|
||||
faraday (>= 0.17.5, < 3.a)
|
||||
jwt (>= 1.5, < 3.0)
|
||||
jwt (>= 1.5, < 4.0)
|
||||
multi_json (~> 1.10)
|
||||
simctl (1.6.10)
|
||||
CFPropertyList
|
||||
|
||||
@@ -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
|
||||
@@ -100,8 +101,15 @@ android {
|
||||
includeInApk = false
|
||||
}
|
||||
|
||||
androidResources {
|
||||
@Suppress("UnstableApiUsage")
|
||||
generateLocaleConfig = true
|
||||
}
|
||||
|
||||
tasks.withType<KotlinCompile> {
|
||||
kotlinOptions.jvmTarget = project.libs.versions.app.build.kotlinJVMTarget.get()
|
||||
compilerOptions.jvmTarget.set(
|
||||
JvmTarget.fromTarget(project.libs.versions.app.build.kotlinJVMTarget.get())
|
||||
)
|
||||
}
|
||||
|
||||
namespace = project.property("APP_ID").toString()
|
||||
@@ -109,8 +117,9 @@ android {
|
||||
lint {
|
||||
checkReleaseBuilds = false
|
||||
abortOnError = true
|
||||
warningsAsErrors = true
|
||||
warningsAsErrors = false
|
||||
baseline = file("lint-baseline.xml")
|
||||
lintConfig = rootProject.file("lint.xml")
|
||||
}
|
||||
|
||||
bundle {
|
||||
@@ -122,6 +131,9 @@ android {
|
||||
|
||||
detekt {
|
||||
baseline = file("detekt-baseline.xml")
|
||||
config.setFrom("$rootDir/detekt.yml")
|
||||
buildUponDefaultConfig = true
|
||||
allRules = false
|
||||
}
|
||||
|
||||
dependencies {
|
||||
@@ -129,4 +141,5 @@ dependencies {
|
||||
|
||||
implementation(libs.bundles.room)
|
||||
ksp(libs.androidx.room.compiler)
|
||||
detektPlugins(libs.compose.detekt)
|
||||
}
|
||||
|
||||
@@ -1,464 +1,145 @@
|
||||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues></ManuallySuppressedIssues>
|
||||
<CurrentIssues>
|
||||
<ID>ComplexCondition:HomeScreenGrid.kt$AnimatedGridPager$currentPage < getMaxPage() && diffX > 0f || currentPage > 0 && diffX
|
||||
< 0f
|
||||
</ID>
|
||||
<ID>ComplexCondition:HomeScreenGrid.kt$HomeScreenGrid$item.page != 0 && gridItems.none { it.page == item.page && it.id != item.id &&
|
||||
it.parentId == null }
|
||||
</ID>
|
||||
<ID>ComplexCondition:HomeScreenGrid.kt$HomeScreenGrid$newParentId != null && gridItems.any { it.parentId == newParentId && it.left ==
|
||||
left } && (newParentId != oldParentId || left != oldLeft)
|
||||
</ID>
|
||||
<ID>ComplexCondition:HomeScreenGrid.kt$HomeScreenGrid$x >= left && x <= right && y >= top && y <= bottom</ID>
|
||||
<ID>ComplexCondition:HomeScreenGrid.kt$HomeScreenGrid$x >= rect.left && x <= rect.right && y >= rect.top && y <=
|
||||
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<AppLauncher>)</ID>
|
||||
<ID>LongMethod:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$override fun onTouchEvent(event: MotionEvent?): Boolean</ID>
|
||||
<ID>LongParameterList:HomeScreenGrid.kt$AnimatedGridPager$( private val getMaxPage: () -> Int, private val redrawGrid: () -> Unit, private val
|
||||
getWidth: () -> Int, private val getHandler: () -> Handler, private val getNextPageBound: () -> Int, private val getPrevPageBound: () ->
|
||||
Int, private val pageChangeStarted: () -> 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<HomeScreenGridItem> )
|
||||
</ID>
|
||||
<ID>LoopWithTooManyJumpStatements:MainActivity.kt$MainActivity$for</ID>
|
||||
<ID>MagicNumber:AppsDatabase.kt$AppsDatabase.Companion.<no name provided>$3</ID>
|
||||
<ID>MagicNumber:AppsDatabase.kt$AppsDatabase.Companion.<no name provided>$4</ID>
|
||||
<ID>MagicNumber:AppsDatabase.kt$AppsDatabase.Companion.<no name provided>$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.<no name provided>$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) &&
|
||||
!isOnAllAppsFragment
|
||||
</ID>
|
||||
<ID>MaxLineLength:Activity.kt$menu.findItem(R.id.uninstall).isVisible = gridItem.type == ITEM_TYPE_ICON &&
|
||||
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 ->
|
||||
title.normalizeString().lowercase().compareTo(other.title.normalizeString().lowercase())
|
||||
</ID>
|
||||
<ID>MaxLineLength:AppsDatabase.kt$AppsDatabase.Companion.<no name provided>$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.<no name provided>$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.<no name provided>$database.execSQL("CREATE UNIQUE INDEX
|
||||
`index_home_screen_grid_items_id` ON `home_screen_grid_items` (`id`)")
|
||||
</ID>
|
||||
<ID>MaxLineLength:AppsDatabase.kt$AppsDatabase.Companion.<no name provided>$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.<no name provided>$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 > 0f && item.page == currentPage - 1) ||
|
||||
(pageChangeSwipedPercentage < 0f && 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() && pager.isItemOnLastPage(it) && !it.docked
|
||||
&& it.parentId == null }
|
||||
</ID>
|
||||
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$gridItems.filter { it.parentId == item.parentId && it.left > item.left && it.id !=
|
||||
item.id }
|
||||
</ID>
|
||||
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$gridItems.filter { it.parentId == newParentId && it.left >= newItem.left && 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 && it.left ==
|
||||
coveredCell.x && 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` > :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) > mMoveGestureThreshold) || (Math.abs(mTouchDownY - event.y) >
|
||||
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<*>, binding.widgetsFragment.root as MyFragment<*>)</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) && 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: (() -> 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") && !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<AppWidget>
|
||||
</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<Int, Rect></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 < getMaxPage() && diffX > 0f || currentPage > 0 && diffX < 0f</ID>
|
||||
<ID>ComplexCondition:HomeScreenGrid.kt$HomeScreenGrid$item.page != 0 && gridItems .none { it.page == item.page && it.id != item.id && it.parentId == null }</ID>
|
||||
<ID>ComplexCondition:HomeScreenGrid.kt$HomeScreenGrid$newParentId != null && gridItems.any { it.parentId == newParentId && it.left == left } && (newParentId != oldParentId || left != oldLeft)</ID>
|
||||
<ID>ComplexCondition:HomeScreenGrid.kt$HomeScreenGrid$x >= left && x <= right && y >= top && y <= bottom</ID>
|
||||
<ID>ComplexCondition:HomeScreenGrid.kt$HomeScreenGrid$x >= rect.left && x <= rect.right && y >= rect.top && y <= 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<AppLauncher>)</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.<no name provided>$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 -> title.normalizeString().lowercase().compareTo(other.title.normalizeString().lowercase())</ID>
|
||||
<ID>MaxLineLength:FolderIconsAdapter.kt$FolderIconsAdapter.<no name provided>$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 > 0f && item.page == currentPage - 1) || (pageChangeSwipedPercentage < 0f && 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` > :shiftFrom AND id != :excludingId")</ID>
|
||||
<ID>MaxLineLength:HomeScreenGridItemsDao.kt$HomeScreenGridItemsDao$fun</ID>
|
||||
<ID>MaxLineLength:MainActivity.kt$MainActivity$(abs(mTouchDownX - event.x) > mMoveGestureThreshold || abs(mTouchDownY - event.y) > 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: (() -> 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<Int, Rect></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>
|
||||
|
||||
@@ -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=" <item name="android:enforceNavigationBarContrast">false</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=" <item name="android:enforceStatusBarContrast">false</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=" <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</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="@xml/locale_config"" 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 = "8.11.1""
|
||||
errorLine2=" ~~~~~~~~">
|
||||
<location
|
||||
file="$HOME/work/Launcher/Launcher/gradle/libs.versions.toml"
|
||||
line="14"
|
||||
column="21"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="LockedOrientationActivity"
|
||||
message="Expecting `android:screenOrientation="unspecified"` or `"fullSensor"` 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="portrait"" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location file="src/main/AndroidManifest.xml" line="47" column="13" />
|
||||
errorLine1=" android:screenOrientation="portrait""
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="src/main/AndroidManifest.xml"
|
||||
line="47"
|
||||
column="13"/>
|
||||
</issue>
|
||||
|
||||
<issue id="MissingTranslation"
|
||||
message=""app_launcher_name" is not translated in "hi" (Hindi), "fil" (Filipino; Pilipino), "lt" (Lithuanian), "lv" (Latvian), "mk" (Macedonian), "ms" (Malay), "en" (English), "eo" (Esperanto), "is" (Icelandic), "my" (Burmese), "eu" (Basque), "ar" (Arabic), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nl" (Dutch), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bn" (Bangla), "br" (Breton), "si" (Sinhala), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "ckb", "da" (Danish)"
|
||||
errorLine1=" <string name="app_launcher_name">Launcher_debug</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 = "0.4.28""
|
||||
errorLine2=" ~~~~~~~~">
|
||||
<location
|
||||
file="$HOME/work/Launcher/Launcher/gradle/libs.versions.toml"
|
||||
line="8"
|
||||
column="17"/>
|
||||
</issue>
|
||||
|
||||
<issue id="MissingTranslation"
|
||||
message=""app_name" is not translated in "hi" (Hindi), "fil" (Filipino; Pilipino), "lt" (Lithuanian), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "in" (Indonesian), "ms" (Malay), "en" (English), "eo" (Esperanto), "is" (Icelandic), "my" (Burmese), "eu" (Basque), "ar" (Arabic), "nb" (Norwegian Bokmål), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bn" (Bangla), "br" (Breton), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ca" (Catalan), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "ckb", "da" (Danish)"
|
||||
errorLine1=" <string name="app_name">Simple Launcher</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="portrait""
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="src/main/AndroidManifest.xml"
|
||||
line="47"
|
||||
column="13"/>
|
||||
</issue>
|
||||
|
||||
<issue id="MissingTranslation"
|
||||
message=""app_launcher_name" is not translated in "hi" (Hindi), "fil" (Filipino; Pilipino), "lt" (Lithuanian), "lv" (Latvian), "mk" (Macedonian), "ms" (Malay), "en" (English), "eo" (Esperanto), "is" (Icelandic), "my" (Burmese), "eu" (Basque), "ar" (Arabic), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nl" (Dutch), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bn" (Bangla), "br" (Breton), "si" (Sinhala), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "ckb", "da" (Danish)"
|
||||
errorLine1=" <string name="app_launcher_name">Launcher</string>" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location file="src/main/res/values/strings.xml" line="4" column="13" />
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""app_launcher_name" is not translated in "fil" (Filipino; Pilipino), "ms" (Malay), "en" (English), "is" (Icelandic), "my" (Burmese), "ar" (Arabic), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bn" (Bangla), "br" (Breton), "si" (Sinhala), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "ckb""
|
||||
errorLine1=" <string name="app_launcher_name">Launcher_debug</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="src/debug/res/values/strings.xml"
|
||||
line="3"
|
||||
column="13"/>
|
||||
</issue>
|
||||
|
||||
<issue id="MissingTranslation"
|
||||
message=""launcher_settings" is not translated in "hi" (Hindi), "fil" (Filipino; Pilipino), "lt" (Lithuanian), "lv" (Latvian), "mk" (Macedonian), "ms" (Malay), "en" (English), "eo" (Esperanto), "is" (Icelandic), "my" (Burmese), "eu" (Basque), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bn" (Bangla), "br" (Breton), "si" (Sinhala), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "da" (Danish)"
|
||||
errorLine1=" <string name="launcher_settings">Launcher Settings</string>" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location file="src/main/res/values/strings.xml" line="5" column="13" />
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""app_launcher_name" is not translated in "fil" (Filipino; Pilipino), "ms" (Malay), "en" (English), "is" (Icelandic), "my" (Burmese), "ar" (Arabic), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bn" (Bangla), "br" (Breton), "si" (Sinhala), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "ckb""
|
||||
errorLine1=" <string name="app_launcher_name">Launcher</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="src/main/res/values/strings.xml"
|
||||
line="3"
|
||||
column="13"/>
|
||||
</issue>
|
||||
|
||||
<issue id="MissingTranslation"
|
||||
message=""app_info" is not translated in "hi" (Hindi), "fil" (Filipino; Pilipino), "lt" (Lithuanian), "lv" (Latvian), "mk" (Macedonian), "ms" (Malay), "en" (English), "eo" (Esperanto), "is" (Icelandic), "my" (Burmese), "eu" (Basque), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bn" (Bangla), "br" (Breton), "si" (Sinhala), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "da" (Danish)"
|
||||
errorLine1=" <string name="app_info">App info</string>" errorLine2=" ~~~~~~~~~~~~~~~">
|
||||
<location file="src/main/res/values/strings.xml" line="6" column="13" />
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""launcher_settings" is not translated in "fil" (Filipino; Pilipino), "mk" (Macedonian), "ms" (Malay), "en" (English), "is" (Icelandic), "my" (Burmese), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bn" (Bangla), "br" (Breton), "si" (Sinhala), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh)"
|
||||
errorLine1=" <string name="launcher_settings">Launcher Settings</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="src/main/res/values/strings.xml"
|
||||
line="4"
|
||||
column="13"/>
|
||||
</issue>
|
||||
|
||||
<issue id="MissingTranslation"
|
||||
message=""touch_hold_widget" is not translated in "hi" (Hindi), "fil" (Filipino; Pilipino), "lt" (Lithuanian), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "eo" (Esperanto), "is" (Icelandic), "my" (Burmese), "eu" (Basque), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bn" (Bangla), "br" (Breton), "si" (Sinhala), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "da" (Danish)"
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""app_info" is not translated in "fil" (Filipino; Pilipino), "mk" (Macedonian), "ms" (Malay), "en" (English), "is" (Icelandic), "my" (Burmese), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bn" (Bangla), "br" (Breton), "si" (Sinhala), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh)"
|
||||
errorLine1=" <string name="app_info">App info</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="src/main/res/values/strings.xml"
|
||||
line="5"
|
||||
column="13"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""touch_hold_widget" is not translated in "fil" (Filipino; Pilipino), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "is" (Icelandic), "my" (Burmese), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bn" (Bangla), "br" (Breton), "si" (Sinhala), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh)"
|
||||
errorLine1=" <string name="touch_hold_widget">Long press the widget and drag it on your home screen</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=""uninstall" is not translated in "hi" (Hindi), "fil" (Filipino; Pilipino), "lt" (Lithuanian), "lv" (Latvian), "mk" (Macedonian), "ms" (Malay), "en" (English), "eo" (Esperanto), "is" (Icelandic), "my" (Burmese), "eu" (Basque), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bn" (Bangla), "br" (Breton), "si" (Sinhala), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "da" (Danish)"
|
||||
errorLine1=" <string name="uninstall">Uninstall</string>" errorLine2=" ~~~~~~~~~~~~~~~~">
|
||||
<location file="src/main/res/values/strings.xml" line="8" column="13" />
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""uninstall" is not translated in "fil" (Filipino; Pilipino), "mk" (Macedonian), "ms" (Malay), "en" (English), "is" (Icelandic), "my" (Burmese), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bn" (Bangla), "br" (Breton), "si" (Sinhala), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh)"
|
||||
errorLine1=" <string name="uninstall">Uninstall</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="src/main/res/values/strings.xml"
|
||||
line="7"
|
||||
column="13"/>
|
||||
</issue>
|
||||
|
||||
<issue id="MissingTranslation"
|
||||
message=""hide_icon" is not translated in "hi" (Hindi), "fil" (Filipino; Pilipino), "lt" (Lithuanian), "lv" (Latvian), "mk" (Macedonian), "ms" (Malay), "en" (English), "eo" (Esperanto), "is" (Icelandic), "my" (Burmese), "eu" (Basque), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bn" (Bangla), "br" (Breton), "si" (Sinhala), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "da" (Danish)"
|
||||
errorLine1=" <string name="hide_icon">Hide icon</string>" errorLine2=" ~~~~~~~~~~~~~~~~">
|
||||
<location file="src/main/res/values/strings.xml" line="9" column="13" />
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""hide_icon" is not translated in "fil" (Filipino; Pilipino), "mk" (Macedonian), "ms" (Malay), "en" (English), "is" (Icelandic), "my" (Burmese), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bn" (Bangla), "br" (Breton), "si" (Sinhala), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh)"
|
||||
errorLine1=" <string name="hide_icon">Hide icon</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="src/main/res/values/strings.xml"
|
||||
line="8"
|
||||
column="13"/>
|
||||
</issue>
|
||||
|
||||
<issue id="MissingTranslation"
|
||||
message=""add_hidden_icons" is not translated in "hi" (Hindi), "fil" (Filipino; Pilipino), "lt" (Lithuanian), "lv" (Latvian), "mk" (Macedonian), "ms" (Malay), "en" (English), "eo" (Esperanto), "is" (Icelandic), "my" (Burmese), "eu" (Basque), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bn" (Bangla), "br" (Breton), "si" (Sinhala), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "da" (Danish)"
|
||||
errorLine1=" <string name="add_hidden_icons">Add hidden icons</string>" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location file="src/main/res/values/strings.xml" line="10" column="13" />
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""add_hidden_icons" is not translated in "fil" (Filipino; Pilipino), "mk" (Macedonian), "ms" (Malay), "en" (English), "is" (Icelandic), "my" (Burmese), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bn" (Bangla), "br" (Breton), "si" (Sinhala), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh)"
|
||||
errorLine1=" <string name="add_hidden_icons">Add hidden icons</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="src/main/res/values/strings.xml"
|
||||
line="9"
|
||||
column="13"/>
|
||||
</issue>
|
||||
|
||||
<issue id="MissingTranslation"
|
||||
message=""manage_hidden_icons" is not translated in "hi" (Hindi), "fil" (Filipino; Pilipino), "lt" (Lithuanian), "lv" (Latvian), "mk" (Macedonian), "ms" (Malay), "en" (English), "eo" (Esperanto), "is" (Icelandic), "my" (Burmese), "eu" (Basque), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bn" (Bangla), "br" (Breton), "si" (Sinhala), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "da" (Danish)"
|
||||
errorLine1=" <string name="manage_hidden_icons">Manage hidden icons</string>" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location file="src/main/res/values/strings.xml" line="11" column="13" />
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""manage_hidden_icons" is not translated in "fil" (Filipino; Pilipino), "mk" (Macedonian), "ms" (Malay), "en" (English), "is" (Icelandic), "my" (Burmese), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bn" (Bangla), "br" (Breton), "si" (Sinhala), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh)"
|
||||
errorLine1=" <string name="manage_hidden_icons">Manage hidden icons</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="src/main/res/values/strings.xml"
|
||||
line="10"
|
||||
column="13"/>
|
||||
</issue>
|
||||
|
||||
<issue id="MissingTranslation"
|
||||
message=""hidden_icons" is not translated in "hi" (Hindi), "fil" (Filipino; Pilipino), "lt" (Lithuanian), "lv" (Latvian), "mk" (Macedonian), "ms" (Malay), "en" (English), "eo" (Esperanto), "is" (Icelandic), "my" (Burmese), "eu" (Basque), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bn" (Bangla), "br" (Breton), "si" (Sinhala), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "da" (Danish)"
|
||||
errorLine1=" <string name="hidden_icons">Hidden icons</string>" errorLine2=" ~~~~~~~~~~~~~~~~~~~">
|
||||
<location file="src/main/res/values/strings.xml" line="12" column="13" />
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""hidden_icons" is not translated in "fil" (Filipino; Pilipino), "mk" (Macedonian), "ms" (Malay), "en" (English), "is" (Icelandic), "my" (Burmese), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bn" (Bangla), "br" (Breton), "si" (Sinhala), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh)"
|
||||
errorLine1=" <string name="hidden_icons">Hidden icons</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="src/main/res/values/strings.xml"
|
||||
line="11"
|
||||
column="13"/>
|
||||
</issue>
|
||||
|
||||
<issue id="MissingTranslation"
|
||||
message=""hidden_icons_placeholder" is not translated in "hi" (Hindi), "fil" (Filipino; Pilipino), "lt" (Lithuanian), "lv" (Latvian), "mk" (Macedonian), "ms" (Malay), "en" (English), "eo" (Esperanto), "is" (Icelandic), "my" (Burmese), "eu" (Basque), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bn" (Bangla), "br" (Breton), "si" (Sinhala), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "da" (Danish)"
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""hidden_icons_placeholder" is not translated in "fil" (Filipino; Pilipino), "mk" (Macedonian), "ms" (Malay), "en" (English), "is" (Icelandic), "my" (Burmese), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bn" (Bangla), "br" (Breton), "si" (Sinhala), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "bqi""
|
||||
errorLine1=" <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>"
|
||||
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=""app_drawer_settings" is not translated in "hi" (Hindi), "fil" (Filipino; Pilipino), "lt" (Lithuanian), "hr" (Croatian), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "in" (Indonesian), "ms" (Malay), "en" (English), "eo" (Esperanto), "is" (Icelandic), "my" (Burmese), "iw" (Hebrew), "eu" (Basque), "nb" (Norwegian Bokmål), "ja" (Japanese), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "fi" (Finnish), "bg" (Bulgarian), "bn" (Bangla), "br" (Breton), "bs" (Bosnian), "si" (Sinhala), "sl" (Slovenian), "zgh" (Standard Moroccan Tamazight), "ltg", "sr" (Serbian), "kn" (Kannada), "or" (Odia), "ko" (Korean), "gl" (Galician), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "pa" (Punjabi), "te" (Telugu), "th" (Thai), "cy" (Welsh), "da" (Danish)"
|
||||
errorLine1=" <string name="app_drawer_settings">App drawer</string>" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location file="src/main/res/values/strings.xml" line="14" column="13" />
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""app_drawer_settings" is not translated in "fil" (Filipino; Pilipino), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "is" (Icelandic), "my" (Burmese), "nb" (Norwegian Bokmål), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bg" (Bulgarian), "bn" (Bangla), "br" (Breton), "bs" (Bosnian), "si" (Sinhala), "sl" (Slovenian), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "pa" (Punjabi), "te" (Telugu), "th" (Thai), "cy" (Welsh)"
|
||||
errorLine1=" <string name="app_drawer_settings">App drawer</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="src/main/res/values/strings.xml"
|
||||
line="13"
|
||||
column="13"/>
|
||||
</issue>
|
||||
|
||||
<issue id="MissingTranslation"
|
||||
message=""close_app_drawer_on_app_open" is not translated in "hi" (Hindi), "fil" (Filipino; Pilipino), "lt" (Lithuanian), "hr" (Croatian), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "in" (Indonesian), "ms" (Malay), "en" (English), "eo" (Esperanto), "is" (Icelandic), "my" (Burmese), "iw" (Hebrew), "eu" (Basque), "nb" (Norwegian Bokmål), "ja" (Japanese), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "fi" (Finnish), "bg" (Bulgarian), "bn" (Bangla), "br" (Breton), "bs" (Bosnian), "si" (Sinhala), "sl" (Slovenian), "zgh" (Standard Moroccan Tamazight), "ltg", "sr" (Serbian), "kn" (Kannada), "or" (Odia), "ko" (Korean), "gl" (Galician), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "pa" (Punjabi), "te" (Telugu), "th" (Thai), "cy" (Welsh), "da" (Danish)"
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""close_app_drawer_on_app_open" is not translated in "fil" (Filipino; Pilipino), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "is" (Icelandic), "my" (Burmese), "nb" (Norwegian Bokmål), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bg" (Bulgarian), "bn" (Bangla), "br" (Breton), "bs" (Bosnian), "si" (Sinhala), "sl" (Slovenian), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "pa" (Punjabi), "te" (Telugu), "th" (Thai), "cy" (Welsh)"
|
||||
errorLine1=" <string name="close_app_drawer_on_app_open">Close app drawer on opening an app</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=""home_screen_settings" is not translated in "hi" (Hindi), "fil" (Filipino; Pilipino), "lt" (Lithuanian), "hr" (Croatian), "lv" (Latvian), "hu" (Hungarian), "mk" (Macedonian), "ml" (Malayalam), "in" (Indonesian), "ms" (Malay), "en" (English), "eo" (Esperanto), "is" (Icelandic), "my" (Burmese), "iw" (Hebrew), "eu" (Basque), "ar" (Arabic), "nb" (Norwegian Bokmål), "ja" (Japanese), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "fi" (Finnish), "bg" (Bulgarian), "bn" (Bangla), "br" (Breton), "bs" (Bosnian), "si" (Sinhala), "sl" (Slovenian), "zgh" (Standard Moroccan Tamazight), "ca" (Catalan), "ltg", "sr" (Serbian), "kn" (Kannada), "or" (Odia), "ko" (Korean), "gl" (Galician), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "pa" (Punjabi), "te" (Telugu), "th" (Thai), "cy" (Welsh), "da" (Danish)"
|
||||
errorLine1=" <string name="home_screen_settings">Home screen</string>" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location file="src/main/res/values/strings.xml" line="16" column="13" />
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""auto_show_keyboard_in_app_drawer" is not translated in "hi" (Hindi), "fil" (Filipino; Pilipino), "hu" (Hungarian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "in" (Indonesian), "ms" (Malay), "el" (Greek), "en" (English), "is" (Icelandic), "my" (Burmese), "ar" (Arabic), "vi" (Vietnamese), "nb" (Norwegian Bokmål), "ja" (Japanese), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "ro" (Romanian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bg" (Bulgarian), "bn" (Bangla), "br" (Breton), "bs" (Bosnian), "si" (Sinhala), "sl" (Slovenian), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "gl" (Galician), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "pa" (Punjabi), "te" (Telugu), "th" (Thai), "cy" (Welsh), "ckb""
|
||||
errorLine1=" <string name="auto_show_keyboard_in_app_drawer">Automatically show keyboard in drawer</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="src/main/res/values/strings.xml"
|
||||
line="15"
|
||||
column="13"/>
|
||||
</issue>
|
||||
|
||||
<issue id="MissingTranslation"
|
||||
message=""widget_too_big" is not translated in "hi" (Hindi), "fil" (Filipino; Pilipino), "lt" (Lithuanian), "hr" (Croatian), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "in" (Indonesian), "ms" (Malay), "en" (English), "eo" (Esperanto), "is" (Icelandic), "my" (Burmese), "iw" (Hebrew), "eu" (Basque), "nb" (Norwegian Bokmål), "ja" (Japanese), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "fi" (Finnish), "bg" (Bulgarian), "bn" (Bangla), "br" (Breton), "bs" (Bosnian), "si" (Sinhala), "sl" (Slovenian), "zgh" (Standard Moroccan Tamazight), "ltg", "sr" (Serbian), "kn" (Kannada), "or" (Odia), "ko" (Korean), "gl" (Galician), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "pa" (Punjabi), "te" (Telugu), "th" (Thai), "cy" (Welsh), "da" (Danish)"
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""home_screen_settings" is not translated in "fil" (Filipino; Pilipino), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "is" (Icelandic), "my" (Burmese), "ar" (Arabic), "nb" (Norwegian Bokmål), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bg" (Bulgarian), "bn" (Bangla), "br" (Breton), "bs" (Bosnian), "si" (Sinhala), "sl" (Slovenian), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "pa" (Punjabi), "te" (Telugu), "th" (Thai), "cy" (Welsh)"
|
||||
errorLine1=" <string name="home_screen_settings">Home screen</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="src/main/res/values/strings.xml"
|
||||
line="16"
|
||||
column="13"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""widget_too_big" is not translated in "fil" (Filipino; Pilipino), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "is" (Icelandic), "my" (Burmese), "nb" (Norwegian Bokmål), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bg" (Bulgarian), "bn" (Bangla), "br" (Breton), "bs" (Bosnian), "si" (Sinhala), "sl" (Slovenian), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "pa" (Punjabi), "te" (Telugu), "th" (Thai), "cy" (Welsh)"
|
||||
errorLine1=" <string name="widget_too_big">Widget is too big for current home screen size</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=""double_tap_to_lock" is not translated in "fil" (Filipino; Pilipino), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "is" (Icelandic), "my" (Burmese), "ar" (Arabic), "vi" (Vietnamese), "nb" (Norwegian Bokmål), "ja" (Japanese), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "ro" (Romanian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bg" (Bulgarian), "bn" (Bangla), "br" (Breton), "bs" (Bosnian), "si" (Sinhala), "sl" (Slovenian), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "pa" (Punjabi), "te" (Telugu), "th" (Thai), "cy" (Welsh), "ckb""
|
||||
errorLine1=" <string name="double_tap_to_lock">Double tap to lock screen</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="src/main/res/values/strings.xml"
|
||||
line="18"
|
||||
column="13"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""lock_device_admin_hint" is not translated in "fil" (Filipino; Pilipino), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "is" (Icelandic), "my" (Burmese), "ar" (Arabic), "vi" (Vietnamese), "nb" (Norwegian Bokmål), "ja" (Japanese), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "ro" (Romanian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bg" (Bulgarian), "bn" (Bangla), "br" (Breton), "bs" (Bosnian), "si" (Sinhala), "sl" (Slovenian), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "pa" (Punjabi), "te" (Telugu), "th" (Thai), "cy" (Welsh), "bqi", "ckb""
|
||||
errorLine1=" <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>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="src/main/res/values/strings.xml"
|
||||
line="19"
|
||||
column="13"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""lock_device_admin_warning" is not translated in "fil" (Filipino; Pilipino), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "is" (Icelandic), "my" (Burmese), "ar" (Arabic), "vi" (Vietnamese), "nb" (Norwegian Bokmål), "ja" (Japanese), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "ro" (Romanian), "nn" (Norwegian Nynorsk), "be" (Belarusian), "bg" (Bulgarian), "bn" (Bangla), "br" (Breton), "bs" (Bosnian), "si" (Sinhala), "sl" (Slovenian), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "pa" (Punjabi), "te" (Telugu), "th" (Thai), "cy" (Welsh), "ckb""
|
||||
errorLine1=" <string name="lock_device_admin_warning">Deactivating admin permission will disable the double tap to lock screen feature.</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=" <path android:fillColor="#FFFFFFFF" android:pathData="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"/>"
|
||||
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="?attr/selectableItemBackground"" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location file="src/main/res/layout/item_hidden_icon.xml" line="6" column="5" />
|
||||
errorLine1=" android:background="?attr/selectableItemBackground""
|
||||
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="?attr/selectableItemBackground"" 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="<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android""
|
||||
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="<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"" 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=" <dimen name="icon_long_press_anchor_offset_y">150dp</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=" <dimen name="min_folder_view_height">200dp</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=" <dimen name="min_folder_view_height">200dp</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=" <dimen name="max_folder_view_height">500dp</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=" <dimen name="max_folder_view_height">500dp</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=" <string name="hide_icon">Hide icon</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=" <color name="ic_launcher_amber_background">#106D20</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=" <string name="add_hidden_icons">Add hidden icons</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=" <color name="ic_launcher_blue_background">#106D20</color>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="src/main/res/values/ic_launcher_blue_background.xml"
|
||||
line="3"
|
||||
column="12"/>
|
||||
</issue>
|
||||
|
||||
<issue id="AlwaysShowAction" message="Prefer "`ifRoom`" instead of "`always`""
|
||||
errorLine1=" app:showAsAction="always" />" 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=" <string name="hide_icon">Hide icon</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="src/main/res/values/strings.xml"
|
||||
line="8"
|
||||
column="13"/>
|
||||
</issue>
|
||||
|
||||
<issue id="AlwaysShowAction" message="Prefer "`ifRoom`" instead of "`always`""
|
||||
errorLine1=" app:showAsAction="always" />" 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=" <string name="add_hidden_icons">Add hidden icons</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=" <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="@dimen/medium_margin"" 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=" <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="@dimen/medium_margin""
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="src/main/res/layout/item_widget_list_section.xml"
|
||||
line="27"
|
||||
column="9"/>
|
||||
</issue>
|
||||
|
||||
</issues>
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -10,6 +10,7 @@ import android.appwidget.AppWidgetProviderInfo
|
||||
import android.content.ActivityNotFoundException
|
||||
import android.content.ComponentName
|
||||
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
|
||||
@@ -21,6 +22,7 @@ import android.graphics.drawable.Drawable
|
||||
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
|
||||
@@ -33,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
|
||||
@@ -51,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
|
||||
@@ -94,7 +96,6 @@ import org.fossify.home.receivers.LockDeviceAdminReceiver
|
||||
import kotlin.math.abs
|
||||
import kotlin.math.max
|
||||
import kotlin.math.min
|
||||
import androidx.core.net.toUri
|
||||
|
||||
class MainActivity : SimpleActivity(), FlingListener {
|
||||
private var mTouchDownX = -1
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
@@ -259,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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -313,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 {
|
||||
@@ -581,6 +587,16 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
null
|
||||
)
|
||||
|
||||
if (
|
||||
fragment is AllAppsFragmentBinding
|
||||
&& config.showSearchBar
|
||||
&& config.autoShowKeyboardInAppDrawer
|
||||
) {
|
||||
fragment.root.postDelayed({
|
||||
showKeyboard(fragment.searchBar.binding.topToolbarSearch)
|
||||
}, animationDuration)
|
||||
}
|
||||
|
||||
Handler(Looper.getMainLooper()).postDelayed({
|
||||
updateStatusBarIcons()
|
||||
}, animationDuration)
|
||||
@@ -764,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()
|
||||
@@ -830,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),
|
||||
|
||||
@@ -6,13 +6,9 @@ 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
|
||||
@@ -35,30 +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()
|
||||
@@ -95,15 +85,7 @@ 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()
|
||||
}
|
||||
@@ -152,6 +134,15 @@ class SettingsActivity : SimpleActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
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 {
|
||||
@@ -192,6 +183,7 @@ class SettingsActivity : SimpleActivity() {
|
||||
binding.settingsDrawerSearchHolder.setOnClickListener {
|
||||
binding.settingsShowSearchBar.toggle()
|
||||
config.showSearchBar = binding.settingsShowSearchBar.isChecked
|
||||
binding.settingsOpenKeyboardOnAppDrawerHolder.beVisibleIf(config.showSearchBar)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -38,6 +38,7 @@ import androidx.core.graphics.toRect
|
||||
import androidx.core.graphics.withScale
|
||||
import androidx.core.graphics.withTranslation
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowInsetsCompat.Type
|
||||
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat
|
||||
import androidx.customview.widget.ExploreByTouchHelper
|
||||
import com.google.android.material.math.MathUtils
|
||||
@@ -48,9 +49,7 @@ import org.fossify.commons.extensions.beVisible
|
||||
import org.fossify.commons.extensions.getContrastColor
|
||||
import org.fossify.commons.extensions.getProperBackgroundColor
|
||||
import org.fossify.commons.extensions.getProperTextColor
|
||||
import org.fossify.commons.extensions.navigationBarHeight
|
||||
import org.fossify.commons.extensions.performHapticFeedback
|
||||
import org.fossify.commons.extensions.statusBarHeight
|
||||
import org.fossify.commons.helpers.ensureBackgroundThread
|
||||
import org.fossify.commons.helpers.isSPlus
|
||||
import org.fossify.home.R
|
||||
@@ -189,18 +188,41 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) :
|
||||
style = Paint.Style.FILL
|
||||
}
|
||||
|
||||
val sideMargin =
|
||||
context.resources.getDimension(org.fossify.commons.R.dimen.normal_margin).toInt()
|
||||
sideMargins.apply {
|
||||
top = context.statusBarHeight
|
||||
bottom = context.navigationBarHeight
|
||||
left = sideMargin
|
||||
right = sideMargin
|
||||
ViewCompat.setOnApplyWindowInsetsListener(this) { _, insets ->
|
||||
val bars = insets.getInsets(Type.systemBars() or Type.displayCutout())
|
||||
val gestures = insets.getInsets(Type.systemGestures())
|
||||
val navIgnoring = insets.getInsetsIgnoringVisibility(Type.navigationBars())
|
||||
|
||||
val sideMargin = context.resources
|
||||
.getDimension(org.fossify.commons.R.dimen.normal_margin).toInt()
|
||||
|
||||
val newLeft = sideMargin + bars.left
|
||||
val newRight = sideMargin + bars.right
|
||||
val newTop = bars.top
|
||||
val newBottom = max(bars.bottom, max(gestures.bottom, navIgnoring.bottom))
|
||||
val marginsChanged = sideMargins.left != newLeft
|
||||
|| sideMargins.top != newTop
|
||||
|| sideMargins.right != newRight
|
||||
|| sideMargins.bottom != newBottom
|
||||
if (marginsChanged) {
|
||||
sideMargins.set(newLeft, newTop, newRight, newBottom)
|
||||
cells.clear()
|
||||
gridCenters.clear()
|
||||
isFirstDraw = true
|
||||
redrawGrid()
|
||||
}
|
||||
|
||||
insets
|
||||
}
|
||||
|
||||
fetchGridItems()
|
||||
}
|
||||
|
||||
override fun dispatchHoverEvent(event: MotionEvent): Boolean {
|
||||
if (accessibilityHelper.dispatchHoverEvent(event)) return true
|
||||
return super.dispatchHoverEvent(event)
|
||||
}
|
||||
|
||||
override fun onFinishInflate() {
|
||||
super.onFinishInflate()
|
||||
binding = HomeScreenGridBinding.bind(this)
|
||||
@@ -1266,10 +1288,15 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) :
|
||||
gridItems
|
||||
.filter { it.type == ITEM_TYPE_WIDGET && !it.outOfBounds() }
|
||||
.forEach { item ->
|
||||
val appWidgetProviderInfo = item.providerInfo
|
||||
val providerInfo = item.providerInfo
|
||||
?: appWidgetManager!!.installedProviders
|
||||
.firstOrNull { it.provider.className == item.className }
|
||||
placeAppWidget(appWidgetProviderInfo!!, item)
|
||||
|
||||
if (providerInfo != null) {
|
||||
placeAppWidget(providerInfo, item)
|
||||
} else {
|
||||
removeWidget(item)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
gridItems
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
@@ -203,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"
|
||||
|
||||
@@ -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" />
|
||||
|
||||
1
app/src/main/res/resources.properties
Normal file
1
app/src/main/res/resources.properties
Normal file
@@ -0,0 +1 @@
|
||||
unqualifiedResLocale=en-US
|
||||
@@ -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>
|
||||
|
||||
@@ -1,2 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
||||
<resources>
|
||||
<string name="app_launcher_name">Лаунчар</string>
|
||||
</resources>
|
||||
|
||||
19
app/src/main/res/values-bqi/strings.xml
Normal file
19
app/src/main/res/values-bqi/strings.xml
Normal 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>
|
||||
@@ -17,4 +17,5 @@
|
||||
<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>
|
||||
</resources>
|
||||
<string name="auto_show_keyboard_in_app_drawer">Mostra automàticament el teclat al calaix</string>
|
||||
</resources>
|
||||
|
||||
@@ -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>
|
||||
@@ -17,4 +17,5 @@
|
||||
<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>
|
||||
</resources>
|
||||
<string name="auto_show_keyboard_in_app_drawer">Automaticky zobrazit klávesnici v seznamu aplikací</string>
|
||||
</resources>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -17,4 +17,5 @@
|
||||
<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>
|
||||
</resources>
|
||||
<string name="auto_show_keyboard_in_app_drawer">Keyboard automatisch in App-Schublade anzeigen</string>
|
||||
</resources>
|
||||
|
||||
@@ -17,4 +17,5 @@
|
||||
<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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -17,4 +17,5 @@
|
||||
<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>
|
||||
|
||||
@@ -17,4 +17,5 @@
|
||||
<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>
|
||||
</resources>
|
||||
<string name="auto_show_keyboard_in_app_drawer">Näita menüüs klahvistikku automaatselt</string>
|
||||
</resources>
|
||||
|
||||
@@ -17,4 +17,5 @@
|
||||
<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>
|
||||
|
||||
@@ -17,4 +17,5 @@
|
||||
<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>
|
||||
|
||||
@@ -16,5 +16,6 @@
|
||||
<string name="home_screen_settings">Écran d\'accueil</string>
|
||||
<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">Appuyez deux fois 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>
|
||||
|
||||
@@ -17,4 +17,5 @@
|
||||
<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>
|
||||
</resources>
|
||||
<string name="auto_show_keyboard_in_app_drawer">Taispeáin an méarchlár go huathoibríoch sa tarraiceán</string>
|
||||
</resources>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -17,4 +17,5 @@
|
||||
<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>
|
||||
</resources>
|
||||
<string name="auto_show_keyboard_in_app_drawer">Automatski prikaži tipkovnicu u ladici</string>
|
||||
</resources>
|
||||
|
||||
@@ -17,4 +17,5 @@
|
||||
<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>
|
||||
</resources>
|
||||
<string name="auto_show_keyboard_in_app_drawer">Mostra automaticamente la tastiera nel cassetto</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?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>
|
||||
@@ -17,4 +17,5 @@
|
||||
<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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
21
app/src/main/res/values-kab/strings.xml
Normal file
21
app/src/main/res/values-kab/strings.xml
Normal 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>
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -17,4 +17,5 @@
|
||||
<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>
|
||||
</resources>
|
||||
<string name="auto_show_keyboard_in_app_drawer">Toetsenbord automatisch tonen in app-overzicht</string>
|
||||
</resources>
|
||||
|
||||
@@ -17,4 +17,5 @@
|
||||
<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>
|
||||
</resources>
|
||||
<string name="auto_show_keyboard_in_app_drawer">Automatycznie pokazuj klawiaturę w szufladzie</string>
|
||||
</resources>
|
||||
|
||||
@@ -17,4 +17,5 @@
|
||||
<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>
|
||||
|
||||
@@ -17,4 +17,5 @@
|
||||
<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>
|
||||
</resources>
|
||||
<string name="auto_show_keyboard_in_app_drawer">Mostrar o teclado automaticamente na gaveta</string>
|
||||
</resources>
|
||||
|
||||
@@ -17,4 +17,5 @@
|
||||
<string name="double_tap_to_lock">Двойное нажатие блокирует экран</string>
|
||||
<string name="lock_device_admin_hint">Для включения функции блокировки экрана двойным нажатием необходимы права администратора. Учтите, что приложение нельзя будет удалить, пока данное разрешение не будет отключено.</string>
|
||||
<string name="lock_device_admin_warning">Удаление прав администратора приведёт к отключению функции блокировки экрана двойным нажатием.</string>
|
||||
</resources>
|
||||
<string name="auto_show_keyboard_in_app_drawer">Автоматически показывать клавиатуру в боковой панели</string>
|
||||
</resources>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -17,4 +17,5 @@
|
||||
<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>
|
||||
|
||||
@@ -14,7 +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>
|
||||
<string name="double_tap_to_lock">Kilit ekranına çift dokun</string>
|
||||
<string name="lock_device_admin_warning">Yönetici iznini devre dışı bırakmak, kilit ekranı özelliğini devre dışı bırakır.</string>
|
||||
<string name="lock_device_admin_hint">Kilit ekranı çift dokun özelliğini etkinleştirmek için yönetici izni vermeniz gerekir. Bu izin uygulama kaldırılana kadar kaldırılmayacağını unutmayın.</string>
|
||||
<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>
|
||||
|
||||
@@ -17,4 +17,5 @@
|
||||
<string name="lock_device_admin_warning">Скасування прав адміністратора вимкне функцію подвійного дотику для блокування екрана.</string>
|
||||
<string name="double_tap_to_lock">Двічі торкніться, щоб заблокувати екран</string>
|
||||
<string name="lock_device_admin_hint">Щоб увімкнути функцію блокування екрана подвійним дотиком, вам потрібно надати права адміністратора. Зверніть увагу, що застосунок не можна буде видалити, поки цей дозвіл не буде скасовано.</string>
|
||||
</resources>
|
||||
<string name="auto_show_keyboard_in_app_drawer">Автоматично показувати клавіатуру в шухляді</string>
|
||||
</resources>
|
||||
|
||||
@@ -17,4 +17,5 @@
|
||||
<string name="double_tap_to_lock">双击锁屏</string>
|
||||
<string name="lock_device_admin_warning">停用管理员权限将禁用双击锁屏功能。</string>
|
||||
<string name="lock_device_admin_hint">要启用双击锁屏功能,您需要授予管理员权限。请注意,在移除此权限之前无法卸载该应用。</string>
|
||||
</resources>
|
||||
<string name="auto_show_keyboard_in_app_drawer">在抽屉中自动显示键盘</string>
|
||||
</resources>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -17,4 +17,5 @@
|
||||
<string name="double_tap_to_lock">輕觸兩下以鎖定螢幕</string>
|
||||
<string name="lock_device_admin_warning">停用管理權限將會停用輕觸兩下以鎖定螢幕的功能。</string>
|
||||
<string name="lock_device_admin_hint">要啟用輕觸兩下以鎖定螢幕的功能,您必須授予管理權限。請注意,在移除此權限前,無法解除安裝應用程式。</string>
|
||||
</resources>
|
||||
<string name="auto_show_keyboard_in_app_drawer">自動在抽屜中顯示鍵盤</string>
|
||||
</resources>
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
<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>
|
||||
|
||||
63
detekt.yml
Normal file
63
detekt.yml
Normal 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
|
||||
5
fastlane/metadata/android/en-US/changelogs/10.txt
Normal file
5
fastlane/metadata/android/en-US/changelogs/10.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
Changed:
|
||||
|
||||
• Pressing home button on home screen now returns to the first page
|
||||
• Updated translations
|
||||
|
||||
5
fastlane/metadata/android/en-US/changelogs/11.txt
Normal file
5
fastlane/metadata/android/en-US/changelogs/11.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
Changed:
|
||||
|
||||
• Compatibility updates for Android 15 & 16
|
||||
• Updated translations
|
||||
|
||||
9
fastlane/metadata/android/en-US/changelogs/12.txt
Normal file
9
fastlane/metadata/android/en-US/changelogs/12.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Changed:
|
||||
|
||||
• Search now ignores accents and diacritics
|
||||
• Updated translations
|
||||
|
||||
Fixed:
|
||||
|
||||
• Fixed overlap between app drawer and status bar
|
||||
|
||||
8
fastlane/metadata/android/en-US/changelogs/13.txt
Normal file
8
fastlane/metadata/android/en-US/changelogs/13.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
Changed:
|
||||
|
||||
• Updated translations
|
||||
|
||||
Fixed:
|
||||
|
||||
• Fixed invalid search results after opening and closing apps
|
||||
|
||||
4
fastlane/metadata/android/en-US/changelogs/7.txt
Normal file
4
fastlane/metadata/android/en-US/changelogs/7.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
Fixed:
|
||||
|
||||
• Addressed crash on startup due to widgets
|
||||
|
||||
8
fastlane/metadata/android/en-US/changelogs/8.txt
Normal file
8
fastlane/metadata/android/en-US/changelogs/8.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
Added:
|
||||
|
||||
• Option to show keyboard automatically in app drawer
|
||||
|
||||
Changed:
|
||||
|
||||
• Updated translations
|
||||
|
||||
9
fastlane/metadata/android/en-US/changelogs/9.txt
Normal file
9
fastlane/metadata/android/en-US/changelogs/9.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Changed:
|
||||
|
||||
• The app will now prompt to set as default launcher on startup
|
||||
• Updated translations
|
||||
|
||||
Fixed:
|
||||
|
||||
• Fixed home screen hover events not working with TalkBack
|
||||
|
||||
@@ -1 +1 @@
|
||||
התאם אישית את מסך הבית שלך עם משגר מהיר, ללא פרסומות, ובקוד פתוח
|
||||
התאימו אישית את מסך הבית עם משגר מהיר, ללא פרסומות, ובקוד פתוח
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
Лаунчер Fossify — это ваш способ быстрого, персонализированного и приватному домашнему экрану. Без рекламы, никаких излишеств — просто плавный, эффективный лаунчер, разработанный с учётом вашего уникального стиля и предпочтений.<br><br>
|
||||
|
||||
<b>🚀 LIGHTNING-FAST NAVIGATION:</b><br>
|
||||
Navigate your device with speed and precision. Fossify Launcher is optimized to be responsive and fluid, giving you instant access to your favorite apps without lag.<br><br>
|
||||
<b>🎨 FULL CUSTOMIZATION:</b><br>
|
||||
Tailor your home screen with dynamic themes, custom colors, and layouts. Personalize your launcher to match your style with easy-to-use tools that let you create a truly unique setup.<br><br>
|
||||
<b>🖼️ COMPLETE WIDGET SUPPORT:</b><br>
|
||||
Integrate fully resizable widgets with ease. Whether you need clocks, calendars, or other handy tools, Fossify Launcher ensures they blend seamlessly into your home screen design.<br><br>
|
||||
<b>📱 NO UNWANTED CLUTTER:</b><br>
|
||||
Effortlessly manage your apps by hiding or uninstalling them in just a few taps, keeping your home screen organized and clutter-free.<br><br>
|
||||
<b>🔒 PRIVACY AND SECURITY:</b><br>
|
||||
Your privacy is at the heart of Fossify Launcher. With no internet access and no intrusive permissions, your data stays with you. No tracking, no ads – just a launcher built to respect your privacy.<br><br>
|
||||
<b>🌐 OPEN-SOURCE ASSURANCE:</b><br>
|
||||
Fossify Launcher is built on an open-source foundation, allowing you to review our code on GitHub, fostering trust and a community committed to privacy.<br><br>
|
||||
Find your balance of speed, customization, and privacy with Fossify Launcher.<br><br>
|
||||
Ознакомьтесь с другими приложениями от Fossify: https://www.fossify.org
|
||||
Исходный код: https://www.github.com/FossifyOrg
|
||||
Присоединяйтесь к сообществу на Reddit: https://www.reddit.com/r/Fossify
|
||||
Подключайтесь в Telegram: https://t.me/Fossify
|
||||
Лаунчер Fossify – это ваш быстрый, персонализируемый и приватный домашний экран. Никакой рекламы, никаких излишеств – только плавный и быстрый лаунчер, разработанный специально для вас.<br><br>
|
||||
<b>🚀 БЫСТРАЯ НАВИГАЦИЯ:</b><br>
|
||||
Точно и быстро ориентируйтесь по экрану. Лаунчер оптимизирован быть отзывчивым и плавным, предоставляя быстрый доступ к приложениям.<br><br>
|
||||
<b>🎨 ПОЛНАЯ КАСТОМИЗАЦИЯ:</b><br>
|
||||
Украсьте свой экран динамическими темами, цветами и раскладками. Вы можете настроить лаунчер с помощью простых инструментов, создав свой уникальный дизайн.<br><br>
|
||||
<b>🖼️ ПОЛНАЯ ПОДДЕРЖКА ВИДЖЕТОВ:</b><br>
|
||||
Легко вставляйте настраиваемые виджеты – часы, календарь или другие инструменты. Лаунчер красиво впишет их в ваш дизайн.<br><br>
|
||||
<b>📱 ЧИСТОТА И ОРГАНИЗАЦИЯ:</b><br>
|
||||
Легко управляйте приложениями, скрывая или удаляя их в пару нажатий. Экран остаётся в чистоте и порядке.<br><br>
|
||||
<b>🔒 ПРИВАТНОСТЬ И БЕЗОПАСНОСТЬ:</b><br>
|
||||
Ваша приватность – это сердце лаунчера. В нем нет навязчивых разрешений или нужды в интернете, ваши данные остаются при вас. Ни трекеров, ни рекламы, только ваш приватный лаунчер.<br><br>
|
||||
<b>🌐 ОТКРЫТЫЙ ИСХОДНЫЙ КОД:</b><br>
|
||||
Лаунчер Fossify свободный, что позволяет вам изучить его исходный код на GitHub, чтобы удостовериться в его безопасности.<br><br>
|
||||
Найдите свой баланс скорости, красочности и приватности с лаунчером Fossify.<br><br>
|
||||
Ознакомьтесь с другими приложениями от Fossify: https://www.fossify.org<br>
|
||||
Исходный код: https://www.github.com/FossifyOrg<br>
|
||||
Присоединяйтесь к сообществу на Reddit: https://www.reddit.com/r/Fossify<br>
|
||||
Подключайтесь в Telegram: https://t.me/Fossify<br>
|
||||
|
||||
18
fastlane/metadata/android/zh-HK/full_description.txt
Normal file
18
fastlane/metadata/android/zh-HK/full_description.txt
Normal file
@@ -0,0 +1,18 @@
|
||||
Fossify Launcher 是你通往快速、個人化及私隱至上的主畫面體驗的門戶。無廣告,無臃腫 – 只是一個流暢、高效的啟動器,專為滿足你獨特的風格和偏好而設計。<br><br>
|
||||
<b>🚀 閃電般的快速導航:</b><br>
|
||||
快速、精確地導航你的裝置。 Fossify Launcher 經過優化,反應靈敏且流暢,讓你可即時存取你喜愛的應用程式,無任何延遲。<br><br>
|
||||
<b>🎨 完全自訂:</b><br>
|
||||
使用動態主題、自訂顏色和佈局自訂你的主畫面。使用易於使用的工具個人化你的啟動器,以配合你的風格,打造真正獨特的設定。<br><br>
|
||||
<b>🖼️ 完整的小工具支援:</b><br>
|
||||
輕鬆整合完全可調整大小的小工具。無論你需要時鐘、日曆或其他便捷工具,Fossify Launcher 都能確保它們無縫融入你的主畫面設計。<br><br>
|
||||
<b>📱 無不必要的混亂:</b><br>
|
||||
只需輕按幾下即可隱藏或解除安裝應用程式,輕鬆管理你的應用程式,使你的主畫面保持井然有序且整潔。<br><br>
|
||||
<b>🔒 私隱與安全:</b><br>
|
||||
你的私隱是 Fossify Launcher 的核心。無需網絡存取,亦無侵入性權限,你的資料將留在你身邊。無追蹤,無廣告 – 只是一個尊重你私隱的啟動器。<br><br>
|
||||
<b>🌐 開源保證:</b><br>
|
||||
Fossify Launcher 基於開源平台構建,你可在 GitHub 上查看我們的程式碼,從而促進信任及致力於私隱的社群。<br><br>
|
||||
使用 Fossify Launcher 找到速度、自訂和私隱之間的平衡。<br><br>
|
||||
探索更多 Fossify 應用程式:https://www.fossify.org<br>
|
||||
開源程式碼:https://www.github.com/FossifyOrg<br>
|
||||
加入 Reddit 社群:https://www.reddit.com/r/Fossify<br>
|
||||
透過 Telegram 連接:https://t.me/Fossify<br>
|
||||
1
fastlane/metadata/android/zh-HK/short_description.txt
Normal file
1
fastlane/metadata/android/zh-HK/short_description.txt
Normal file
@@ -0,0 +1 @@
|
||||
使用快速、無廣告、開源啟動器自訂你的主畫面
|
||||
18
fastlane/metadata/android/zh-TW/full_description.txt
Normal file
18
fastlane/metadata/android/zh-TW/full_description.txt
Normal file
@@ -0,0 +1,18 @@
|
||||
Fossify Launcher 是您通往快速、個人化和隱私第一的主螢幕體驗的門戶。無廣告,無臃腫 – 只是一個流暢、高效的啟動器,專為滿足您獨特的風格和偏好而設計。<br><br>
|
||||
<b>🚀 閃電般的快速導航:</b><br>
|
||||
快速、精確地導航您的裝置。 Fossify Launcher 經過優化,反應靈敏且流暢,讓您可以即時訪問您喜愛的應用程序,不會出現延遲。<br><br>
|
||||
<b>🎨 完全客製化:</b><br>
|
||||
使用動態主題、自訂顏色和佈局自訂您的主螢幕。使用易於使用的工具個性化您的啟動器,以配合您的風格,讓您創建真正獨特的設定。<br><br>
|
||||
<b>🖼️完整的小部件支援:</b><br>
|
||||
輕鬆整合完全可調整大小的小部件。無論您需要時鐘、日曆或其他方便的工具,Fossify Launcher 都能確保它們無縫融入您的主螢幕設計。<br><br>
|
||||
<b>📱沒有不必要的混亂:</b><br>
|
||||
只需輕按幾下即可隱藏或卸載應用程序,輕鬆管理您的應用程序,使您的主螢幕保持井然有序且整潔。<br><br>
|
||||
<b>🔒 隱私與安全:</b><br>
|
||||
您的隱私是 Fossify Launcher 的核心。無需訪問互聯網,也沒有侵入性權限,您的資料將保留在您身邊。無跟踪,無廣告 – 只是一個尊重您隱私的啟動器。<br><br>
|
||||
<b>🌐開源保證:</b><br>
|
||||
Fossify Launcher 基於開源基礎構建,可讓您在 GitHub 上查看我們的程式碼,從而促進信任和致力於隱私的社群。<br><br>
|
||||
使用 Fossify Launcher 找到速度、自訂和隱私之間的平衡。<br><br>
|
||||
探索更多 Fossify 應用程式:https://www.fossify.org<br>
|
||||
開源程式碼:https://www.github.com/FossifyOrg<br>
|
||||
加入 Reddit 社群:https://www.reddit.com/r/Fossify<br>
|
||||
透過 Telegram 連接:https://t.me/Fossify<br>
|
||||
@@ -1 +1 @@
|
||||
使用快速、無廣告、且開源的啟動器自訂您的主畫面
|
||||
使用快速、無廣告、開源啟動器自訂你的主畫面
|
||||
|
||||
@@ -5,6 +5,6 @@ android.nonTransitiveRClass=true
|
||||
org.gradle.jvmargs=-Xmx4096M
|
||||
|
||||
# Versioning
|
||||
VERSION_NAME=1.1.3
|
||||
VERSION_CODE=6
|
||||
VERSION_NAME=1.7.0
|
||||
VERSION_CODE=13
|
||||
APP_ID=org.fossify.home
|
||||
|
||||
@@ -1,19 +1,20 @@
|
||||
[versions]
|
||||
#jetbrains
|
||||
kotlin = "2.1.21"
|
||||
kotlin = "2.2.21"
|
||||
#KSP
|
||||
ksp = "2.1.21-2.0.2"
|
||||
ksp = "2.3.4"
|
||||
#Detekt
|
||||
detekt = "1.23.8"
|
||||
detektCompose = "0.4.28"
|
||||
#Room
|
||||
room = "2.7.1"
|
||||
room = "2.8.4"
|
||||
#Fossify
|
||||
commons = "3.0.5"
|
||||
commons = "5.12.0"
|
||||
#Gradle
|
||||
gradlePlugins-agp = "8.10.1"
|
||||
gradlePlugins-agp = "8.11.1"
|
||||
#build
|
||||
app-build-compileSDKVersion = "34"
|
||||
app-build-targetSDK = "34"
|
||||
app-build-compileSDKVersion = "36"
|
||||
app-build-targetSDK = "36"
|
||||
app-build-minimumSDK = "26"
|
||||
app-build-javaVersion = "VERSION_17"
|
||||
app-build-kotlinJVMTarget = "17"
|
||||
@@ -22,6 +23,8 @@ app-build-kotlinJVMTarget = "17"
|
||||
androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" }
|
||||
androidx-room-ktx = { module = "androidx.room:room-ktx", version.ref = "room" }
|
||||
androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" }
|
||||
#Compose
|
||||
compose-detekt = { module = "io.nlopez.compose.rules:detekt", version.ref = "detektCompose" }
|
||||
#Fossify
|
||||
fossify-commons = { module = "org.fossify:commons", version.ref = "commons" }
|
||||
[bundles]
|
||||
|
||||
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,6 +1,6 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
|
||||
networkTimeout=10000
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
|
||||
5
gradlew
vendored
5
gradlew
vendored
@@ -86,8 +86,7 @@ done
|
||||
# shellcheck disable=SC2034
|
||||
APP_BASE_NAME=${0##*/}
|
||||
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
|
||||
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
|
||||
' "$PWD" ) || exit
|
||||
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD=maximum
|
||||
@@ -206,7 +205,7 @@ fi
|
||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||
|
||||
# Collect all arguments for the java command:
|
||||
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
|
||||
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
|
||||
# and any embedded shellness will be escaped.
|
||||
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
|
||||
# treated as '${Hostname}' itself on the command line.
|
||||
|
||||
35
lint.xml
Normal file
35
lint.xml
Normal file
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<lint>
|
||||
<!-- Fatal -->
|
||||
<issue id="ExportedReceiver" severity="error" />
|
||||
<issue id="ExportedService" severity="error" />
|
||||
<issue id="ExportedContentProvider" severity="error" />
|
||||
<issue id="MissingPermission" severity="error" />
|
||||
<issue id="NotificationPermission" severity="error" />
|
||||
<issue id="UnsafeOptInUsageError" severity="error" />
|
||||
<issue id="StringFormatMatches" severity="error" />
|
||||
<issue id="StringFormatInvalid" severity="error" />
|
||||
<issue id="StringFormatCount" severity="error" />
|
||||
<issue id="Range" severity="error" />
|
||||
<issue id="CheckResult" severity="error" />
|
||||
<issue id="WrongThread" severity="error" />
|
||||
<issue id="Recycle" severity="error" />
|
||||
<issue id="StaticFieldLeak" severity="error" />
|
||||
<issue id="UseRequireInsteadOfGet" severity="error" />
|
||||
<issue id="ClickableViewAccessibility" severity="error" />
|
||||
<issue id="RtlSymmetry" severity="warning" />
|
||||
<issue id="SetTextI18n" severity="warning" />
|
||||
|
||||
<!-- Warnings -->
|
||||
<issue id="AllowBackup" severity="warning" />
|
||||
<issue id="MissingTranslation" severity="warning" />
|
||||
<issue id="UnusedResources" severity="warning" />
|
||||
<issue id="UnusedQuantity" severity="warning" />
|
||||
<issue id="MissingQuantity" severity="warning" />
|
||||
<issue id="ContentDescription" severity="warning" />
|
||||
<issue id="VectorPath" severity="warning" />
|
||||
<issue id="IconDensities" severity="warning" />
|
||||
<issue id="GradleDependency" severity="warning" />
|
||||
<issue id="Overdraw" severity="warning" />
|
||||
<issue id="ExtraTranslation" severity="warning" />
|
||||
</lint>
|
||||
@@ -11,6 +11,7 @@ dependencyResolutionManagement {
|
||||
google()
|
||||
mavenCentral()
|
||||
maven { setUrl("https://jitpack.io") }
|
||||
mavenLocal()
|
||||
}
|
||||
}
|
||||
include(":app")
|
||||
|
||||
Reference in New Issue
Block a user