mirror of
https://github.com/FossifyOrg/File-Manager.git
synced 2026-11-04 12:03:02 -05:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9ae4b70ae6 | ||
|
|
ef7524c013 | ||
|
|
5a1027caa1 | ||
|
|
68e06aab8e | ||
|
|
aef9f9566e | ||
|
|
82b3c98c9a | ||
|
|
6bfcd8d1ea | ||
|
|
7a90732f96 | ||
|
|
e299956da2 | ||
|
|
a5d92c7f76 | ||
|
|
7844f4b85a | ||
|
|
95548acecc | ||
|
|
9c29ef68a8 | ||
|
|
3fdb6cd380 | ||
|
|
0856c68e2a | ||
|
|
4080ea9b06 | ||
|
|
ef41411d5b | ||
|
|
f79e8b5ebd | ||
|
|
a2eeb40309 | ||
|
|
a4390a22b0 | ||
|
|
6591c26758 | ||
|
|
577f510c61 | ||
|
|
0e22535a06 | ||
|
|
77e6f4fb9e | ||
|
|
c1253e1de2 | ||
|
|
ab8989ad92 | ||
|
|
bfe06e62c6 | ||
|
|
fea0394118 | ||
|
|
d7636f9d4a | ||
|
|
02c508d4e1 | ||
|
|
328a0a8f3c | ||
|
|
a5d0f3cf1b | ||
|
|
87b1dabca3 | ||
|
|
aabfcde47b | ||
|
|
77b2611dc9 | ||
|
|
99f13929e3 | ||
|
|
6cf1bfe5c5 | ||
|
|
f53f84677c | ||
|
|
7493541725 | ||
|
|
5e316369df | ||
|
|
878fa50963 | ||
|
|
893526efa0 | ||
|
|
2d3cb1a555 | ||
|
|
5b4a82615e | ||
|
|
a660857cc6 | ||
|
|
d8bef198cd | ||
|
|
3a3ccfe959 | ||
|
|
60c6fbc304 | ||
|
|
3f0f9e2df8 | ||
|
|
74b34e8fb0 | ||
|
|
06db3c88b4 | ||
|
|
d6987db37f | ||
|
|
d98e78eda1 | ||
|
|
1fbfc978ca | ||
|
|
c9b998f4a7 | ||
|
|
2258a58a2d | ||
|
|
eb95cb540d | ||
|
|
8f74c493e0 | ||
|
|
a2d6e4d7c2 | ||
|
|
1480831b15 | ||
|
|
0211111a34 | ||
|
|
64032a3082 | ||
|
|
463d016d68 | ||
|
|
4346de59d2 | ||
|
|
9f5b41d6fa | ||
|
|
6879b7871a | ||
|
|
efcc213ed6 | ||
|
|
432c9bf929 | ||
|
|
900d9c197b | ||
|
|
b09e037e61 | ||
|
|
ddb8afdfc6 | ||
|
|
4cfc92b0fe | ||
|
|
a1f06bfcbc | ||
|
|
be63034b1c | ||
|
|
8a8b9b9da8 | ||
|
|
c76a56061b | ||
|
|
23f0e848c4 | ||
|
|
65ebbf059a | ||
|
|
8887b510ca | ||
|
|
1f8efdf9fe | ||
|
|
7b6e49111a | ||
|
|
60f30bca73 | ||
|
|
d056d6d57b | ||
|
|
1e64ef351c | ||
|
|
1b6241aaff | ||
|
|
dd6f701f39 | ||
|
|
16e51ca4f5 | ||
|
|
0dea8e0576 | ||
|
|
323c882128 | ||
|
|
1476234289 | ||
|
|
b96aee5a2d | ||
|
|
e25bd7750f | ||
|
|
ae8ca6b2e8 | ||
|
|
07fb062a0d | ||
|
|
75c5d3c5ec | ||
|
|
8e5ccc05ba | ||
|
|
26fc5f1c22 | ||
|
|
86e79e5e0b | ||
|
|
42ba12b1ce | ||
|
|
2a36e87588 | ||
|
|
a155339348 | ||
|
|
24eb4ad3cd | ||
|
|
0d36078e70 | ||
|
|
67d77b3431 | ||
|
|
d9ef0f78b3 | ||
|
|
f57e492c16 | ||
|
|
5f7b12e736 | ||
|
|
40091ff02b | ||
|
|
8231505848 | ||
|
|
3b8eb29e28 | ||
|
|
baaf7ffa80 | ||
|
|
046c2c1bc0 | ||
|
|
2237f84971 | ||
|
|
4cc0ce941c | ||
|
|
ff35055f8f | ||
|
|
8eea02c2aa | ||
|
|
c0d7f64551 | ||
|
|
749c398aa6 | ||
|
|
8812e0ba58 | ||
|
|
6a30697c16 | ||
|
|
146ad3b129 | ||
|
|
b3fc8c7e6f | ||
|
|
599b2cad0b | ||
|
|
f0631e274a | ||
|
|
90741e28ea | ||
|
|
d1ed44688e | ||
|
|
eb75e8bafc | ||
|
|
8c723eb004 | ||
|
|
4ed2868456 | ||
|
|
547bf5421e | ||
|
|
c97940a3d9 | ||
|
|
2889538bf7 | ||
|
|
d911299f2f | ||
|
|
e8ca000dce | ||
|
|
b098f3dc99 | ||
|
|
f820b6e617 | ||
|
|
a0bbc177d7 | ||
|
|
0a0590cab6 | ||
|
|
7a4adb8783 | ||
|
|
044ac49a9c | ||
|
|
5921c27328 | ||
|
|
c12d1d7631 | ||
|
|
0c9892a9e5 | ||
|
|
57fbcea742 | ||
|
|
7ae71a5d22 | ||
|
|
00b21b8b0f | ||
|
|
18ae5f3229 | ||
|
|
b1b1599cc5 | ||
|
|
97791feaed | ||
|
|
a4c8da6c31 | ||
|
|
e6c465d9d0 | ||
|
|
ee20fa406f | ||
|
|
c55d685022 | ||
|
|
1e2e304f70 | ||
|
|
e0b1e884ce | ||
|
|
dfd73bddd0 | ||
|
|
a88355c9ad | ||
|
|
e6593a5c6b | ||
|
|
880f383e76 | ||
|
|
ab31c828a1 | ||
|
|
f71a4b7f55 | ||
|
|
c2482ee5dc | ||
|
|
de5b6da9d5 | ||
|
|
4812bc8d4b | ||
|
|
3ec4591b58 | ||
|
|
d11a710106 | ||
|
|
2cf0fdf7d1 | ||
|
|
25fe232c27 | ||
|
|
f733553ff3 | ||
|
|
5b278f6e4a | ||
|
|
fec28af74f | ||
|
|
eb4d38d25a | ||
|
|
8647071c66 | ||
|
|
630d7b2cea | ||
|
|
223e644f36 | ||
|
|
055bfbd3b8 | ||
|
|
ceb7a5f2a2 | ||
|
|
20aee9162d | ||
|
|
7a5f797a2a | ||
|
|
10a83a18b1 | ||
|
|
fb3384fb08 | ||
|
|
666c8d8c53 | ||
|
|
8c711104ed | ||
|
|
e7186a9c79 | ||
|
|
55eff8a6ae | ||
|
|
8b76e7f28a | ||
|
|
0bee809420 | ||
|
|
2b51c3f2fa | ||
|
|
1b03d62494 | ||
|
|
e9ecfe53a4 | ||
|
|
da8202ee2d | ||
|
|
31d4fdbf4f | ||
|
|
f68fe061e0 | ||
|
|
f24a8089d2 | ||
|
|
1571214647 | ||
|
|
5da4a63e8d | ||
|
|
aeb8977a77 | ||
|
|
0b93fcbb3e | ||
|
|
39f9b00f6a | ||
|
|
cfc1a89300 | ||
|
|
5e8cd437d2 | ||
|
|
3832e9db5d |
No files matched your search
@@ -1,2 +1,2 @@
|
||||
# Auto-generated file. DO NOT EDIT.
|
||||
1.2.0
|
||||
1.6.3 (15)
|
||||
@@ -18,7 +18,7 @@ body:
|
||||
required: true
|
||||
- label: "I made sure that there are **no existing issues** - [open](https://github.com/FossifyOrg/File-Manager/issues) or [closed](https://github.com/FossifyOrg/File-Manager/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/File-Manager/discussions) or [closed](https://github.com/FossifyOrg/File-Manager/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:filemanager) or [closed](https://github.com/orgs/FossifyOrg/discussions?discussions_q=is:closed+label:filemanager) - 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 '....'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Questions
|
||||
url: https://github.com/FossifyOrg/File-Manager/discussions
|
||||
url: https://github.com/orgs/FossifyOrg/discussions
|
||||
about: Please ask and answer questions here.
|
||||
@@ -16,7 +16,7 @@ body:
|
||||
options:
|
||||
- label: "I made sure that there are **no existing issues** - [open](https://github.com/FossifyOrg/File-Manager/issues) or [closed](https://github.com/FossifyOrg/File-Manager/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/File-Manager/discussions) or [closed](https://github.com/FossifyOrg/File-Manager/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:filemanager) or [closed](https://github.com/orgs/FossifyOrg/discussions?discussions_q=is:closed+label:filemanager) - 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
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ registries:
|
||||
|
||||
jitpack:
|
||||
type: maven-repository
|
||||
url: "https://jitpack.io"
|
||||
url: "https://www.jitpack.io"
|
||||
|
||||
updates:
|
||||
- package-ecosystem: "bundler"
|
||||
@@ -35,6 +35,8 @@ updates:
|
||||
prefix: "chore"
|
||||
prefix-development: "chore"
|
||||
include: "scope"
|
||||
ignore:
|
||||
- dependency-name: "org.fossify:commons"
|
||||
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
|
||||
@@ -2,7 +2,11 @@ name: PR
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
branches: [main]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: read
|
||||
|
||||
jobs:
|
||||
call-pr-workflow:
|
||||
|
||||
@@ -2,9 +2,17 @@ name: Testing build (on PR)
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
types: [ labeled, opened, synchronize, reopened ]
|
||||
branches: [main]
|
||||
types: [labeled, opened, synchronize, reopened]
|
||||
paths-ignore:
|
||||
- ".github/**"
|
||||
- "CHANGELOG.md"
|
||||
- "docs/**"
|
||||
- "fastlane/**"
|
||||
- "LICENSE"
|
||||
- "README.md"
|
||||
|
||||
jobs:
|
||||
call-testing-build-workflow:
|
||||
uses: FossifyOrg/.github/.github/workflows/testing-build.yml@main
|
||||
secrets: inherit
|
||||
@@ -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
|
||||
@@ -1,6 +1,8 @@
|
||||
name: Update lint baselines
|
||||
|
||||
on:
|
||||
repository_dispatch:
|
||||
types: [update-lint-baselines]
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: "0 0 1 * *"
|
||||
|
||||
+98
-1
@@ -6,6 +6,81 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [1.6.3] - 2026-10-20
|
||||
### Changed
|
||||
- Updated translations
|
||||
|
||||
## [1.6.2] - 2026-10-10
|
||||
### Changed
|
||||
- Updated translations
|
||||
|
||||
### Fixed
|
||||
- Fixed the modification of the original timestamp when decompressing folders ([#190])
|
||||
|
||||
## [1.6.1] - 2026-02-14
|
||||
### Changed
|
||||
- Updated translations
|
||||
|
||||
### Fixed
|
||||
- Fixed file size calculations to use SI decimal units (divide by 1000)
|
||||
|
||||
## [1.6.0] - 2026-01-30
|
||||
### Added
|
||||
- Added support for custom fonts
|
||||
|
||||
### Changed
|
||||
- Updated translations
|
||||
|
||||
## [1.5.0] - 2025-12-16
|
||||
### Changed
|
||||
- Updated translations
|
||||
|
||||
### Fixed
|
||||
- Fixed an issue where existing files were overwritten when saving new files ([#131])
|
||||
|
||||
## [1.4.0] - 2025-10-29
|
||||
### Changed
|
||||
- Compatibility updates for Android 15 & 16
|
||||
- Updated translations
|
||||
|
||||
### Fixed
|
||||
- Fixed duplicated entries when viewing protected ZIP files ([#76])
|
||||
|
||||
## [1.3.1] - 2025-10-02
|
||||
### Changed
|
||||
- Updated translations
|
||||
|
||||
### Fixed
|
||||
- Fixed files from hidden folders showing up in storage tab browser ([#217])
|
||||
- Fixed an issue where existing files were overwritten when saving new files ([#131])
|
||||
|
||||
## [1.3.0] - 2025-09-30
|
||||
### Added
|
||||
- Added a separate "Save as" option in the text editor ([#224])
|
||||
|
||||
### Changed
|
||||
- Save button now overwrites files directly in the text editor ([#224])
|
||||
- Search now ignores accents and diacritics ([#95])
|
||||
- Updated translations
|
||||
|
||||
### Fixed
|
||||
- Fixed folders showing up incorrectly as files in copy/move dialog ([#267])
|
||||
- Fixed error when saving files with unsupported characters ([#250])
|
||||
- Fixed missing permission prompt on initial "Save as" launch ([#85])
|
||||
- Fixed printing text files containing a "#" ([#104])
|
||||
- Fixed files in hidden folders showing up in recent tab ([#217])
|
||||
|
||||
## [1.2.3] - 2025-09-15
|
||||
### Fixed
|
||||
- Fixed folders showing up incorrectly as files in some cases ([#80])
|
||||
|
||||
## [1.2.2] - 2025-09-01
|
||||
### Changed
|
||||
- Updated translations
|
||||
|
||||
### Fixed
|
||||
- Fixed empty storage usage bars on initial load ([#251])
|
||||
|
||||
## [1.2.0] - 2025-07-12
|
||||
### Changed
|
||||
- Updated translations
|
||||
@@ -51,15 +126,37 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
[#27]: https://github.com/FossifyOrg/File-Manager/issues/27
|
||||
[#37]: https://github.com/FossifyOrg/File-Manager/issues/37
|
||||
[#76]: https://github.com/FossifyOrg/File-Manager/issues/76
|
||||
[#80]: https://github.com/FossifyOrg/File-Manager/issues/80
|
||||
[#85]: https://github.com/FossifyOrg/File-Manager/issues/85
|
||||
[#95]: https://github.com/FossifyOrg/File-Manager/issues/95
|
||||
[#104]: https://github.com/FossifyOrg/File-Manager/issues/104
|
||||
[#105]: https://github.com/FossifyOrg/File-Manager/issues/105
|
||||
[#106]: https://github.com/FossifyOrg/File-Manager/issues/106
|
||||
[#120]: https://github.com/FossifyOrg/File-Manager/issues/120
|
||||
[#131]: https://github.com/FossifyOrg/File-Manager/issues/131
|
||||
[#136]: https://github.com/FossifyOrg/File-Manager/issues/136
|
||||
[#149]: https://github.com/FossifyOrg/File-Manager/issues/149
|
||||
[#150]: https://github.com/FossifyOrg/File-Manager/issues/150
|
||||
[#176]: https://github.com/FossifyOrg/File-Manager/issues/176
|
||||
[#190]: https://github.com/FossifyOrg/File-Manager/issues/190
|
||||
[#217]: https://github.com/FossifyOrg/File-Manager/issues/217
|
||||
[#224]: https://github.com/FossifyOrg/File-Manager/issues/224
|
||||
[#250]: https://github.com/FossifyOrg/File-Manager/issues/250
|
||||
[#251]: https://github.com/FossifyOrg/File-Manager/issues/251
|
||||
[#267]: https://github.com/FossifyOrg/File-Manager/issues/267
|
||||
|
||||
[Unreleased]: https://github.com/FossifyOrg/File-Manager/compare/1.2.0...HEAD
|
||||
[Unreleased]: https://github.com/FossifyOrg/File-Manager/compare/1.6.3...HEAD
|
||||
[1.6.3]: https://github.com/FossifyOrg/File-Manager/compare/1.6.2...1.6.3
|
||||
[1.6.2]: https://github.com/FossifyOrg/File-Manager/compare/1.6.1...1.6.2
|
||||
[1.6.1]: https://github.com/FossifyOrg/File-Manager/compare/1.6.0...1.6.1
|
||||
[1.6.0]: https://github.com/FossifyOrg/File-Manager/compare/1.5.0...1.6.0
|
||||
[1.5.0]: https://github.com/FossifyOrg/File-Manager/compare/1.4.0...1.5.0
|
||||
[1.4.0]: https://github.com/FossifyOrg/File-Manager/compare/1.3.1...1.4.0
|
||||
[1.3.1]: https://github.com/FossifyOrg/File-Manager/compare/1.3.0...1.3.1
|
||||
[1.3.0]: https://github.com/FossifyOrg/File-Manager/compare/1.2.3...1.3.0
|
||||
[1.2.3]: https://github.com/FossifyOrg/File-Manager/compare/1.2.2...1.2.3
|
||||
[1.2.2]: https://github.com/FossifyOrg/File-Manager/compare/1.2.0...1.2.2
|
||||
[1.2.0]: https://github.com/FossifyOrg/File-Manager/compare/1.1.0...1.2.0
|
||||
[1.1.0]: https://github.com/FossifyOrg/File-Manager/compare/1.0.1...1.1.0
|
||||
[1.0.1]: https://github.com/FossifyOrg/File-Manager/compare/1.0.0...1.0.1
|
||||
|
||||
+153
-113
@@ -1,112 +1,117 @@
|
||||
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.9.0)
|
||||
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.1296.0)
|
||||
aws-sdk-core (3.257.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)
|
||||
rexml (~> 3.4, >= 3.4.2)
|
||||
aws-sdk-kms (1.132.0)
|
||||
aws-sdk-core (~> 3, >= 3.256.0)
|
||||
aws-sigv4 (~> 1.5)
|
||||
aws-sdk-s3 (1.189.1)
|
||||
aws-sdk-core (~> 3, >= 3.225.0)
|
||||
aws-sdk-s3 (1.233.2)
|
||||
aws-sdk-core (~> 3, >= 3.256.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)
|
||||
benchmark (0.5.0)
|
||||
bigdecimal (4.1.3)
|
||||
cgi (0.5.2)
|
||||
claide (1.1.0)
|
||||
colored (1.2)
|
||||
colored2 (3.1.2)
|
||||
commander (4.6.0)
|
||||
highline (~> 2.0.0)
|
||||
csv (3.3.6)
|
||||
declarative (0.0.20)
|
||||
digest-crc (0.7.0)
|
||||
rake (>= 12.0.0, < 14.0.0)
|
||||
domain_name (0.6.20240107)
|
||||
domain_name (0.7.20261007)
|
||||
dotenv (2.8.1)
|
||||
emoji_regex (3.2.3)
|
||||
excon (0.112.0)
|
||||
faraday (1.10.4)
|
||||
faraday-em_http (~> 1.0)
|
||||
faraday-em_synchrony (~> 1.0)
|
||||
faraday-excon (~> 1.1)
|
||||
faraday-httpclient (~> 1.0)
|
||||
faraday-multipart (~> 1.0)
|
||||
faraday-net_http (~> 1.0)
|
||||
faraday-net_http_persistent (~> 1.0)
|
||||
faraday-patron (~> 1.0)
|
||||
faraday-rack (~> 1.0)
|
||||
faraday-retry (~> 1.0)
|
||||
ruby2_keywords (>= 0.0.4)
|
||||
faraday-cookie_jar (0.0.7)
|
||||
erb (6.0.7)
|
||||
excon (1.7.3)
|
||||
logger
|
||||
faraday (2.15.0)
|
||||
faraday-net_http (>= 2.0, < 3.6)
|
||||
json
|
||||
logger
|
||||
faraday-cookie_jar (0.0.8)
|
||||
faraday (>= 0.8.0)
|
||||
http-cookie (~> 1.0.0)
|
||||
faraday-em_http (1.0.0)
|
||||
faraday-em_synchrony (1.0.0)
|
||||
faraday-excon (1.1.0)
|
||||
faraday-httpclient (1.0.1)
|
||||
faraday-multipart (1.1.0)
|
||||
http-cookie (>= 1.0.0)
|
||||
faraday-follow_redirects (0.5.0)
|
||||
faraday (>= 1, < 3)
|
||||
faraday-multipart (1.2.0)
|
||||
multipart-post (~> 2.0)
|
||||
faraday-net_http (1.0.2)
|
||||
faraday-net_http_persistent (1.2.0)
|
||||
faraday-patron (1.0.0)
|
||||
faraday-rack (1.0.0)
|
||||
faraday-retry (1.0.3)
|
||||
faraday_middleware (1.2.1)
|
||||
faraday (~> 1.0)
|
||||
fastimage (2.4.0)
|
||||
fastlane (2.228.0)
|
||||
CFPropertyList (>= 2.3, < 4.0.0)
|
||||
addressable (>= 2.8, < 3.0.0)
|
||||
faraday-net_http (3.5.0)
|
||||
net-http (~> 0.5)
|
||||
faraday-retry (2.4.0)
|
||||
faraday (~> 2.0)
|
||||
fastimage (2.4.1)
|
||||
fastlane (2.241.1)
|
||||
CFPropertyList (>= 2.3, < 5.0.0)
|
||||
abbrev (~> 0.1)
|
||||
addressable (>= 2.9.0, < 3.0.0)
|
||||
artifactory (~> 3.0)
|
||||
aws-sdk-s3 (~> 1.0)
|
||||
aws-sdk-s3 (~> 1.197)
|
||||
babosa (>= 1.0.3, < 2.0.0)
|
||||
bundler (>= 1.12.0, < 3.0.0)
|
||||
base64 (~> 0.2)
|
||||
benchmark (>= 0.1.0)
|
||||
bundler (>= 2.4.0, < 5.0.0)
|
||||
cgi (~> 0.4)
|
||||
colored (~> 1.2)
|
||||
commander (~> 4.6)
|
||||
csv (~> 3.3)
|
||||
dotenv (>= 2.1.1, < 3.0.0)
|
||||
emoji_regex (>= 0.1, < 4.0)
|
||||
excon (>= 0.71.0, < 1.0.0)
|
||||
faraday (~> 1.0)
|
||||
faraday-cookie_jar (~> 0.0.6)
|
||||
faraday_middleware (~> 1.0)
|
||||
erb (>= 4.0, < 7.0)
|
||||
excon (>= 1.0.0, < 2.0.0)
|
||||
faraday (~> 2.7)
|
||||
faraday-cookie_jar (~> 0.0.8)
|
||||
faraday-follow_redirects (~> 0.3)
|
||||
faraday-multipart (~> 1.0)
|
||||
faraday-retry (~> 2.0)
|
||||
fastimage (>= 2.1.0, < 3.0.0)
|
||||
fastlane-sirp (>= 1.0.0)
|
||||
fastlane-sirp (>= 1.1.0)
|
||||
gh_inspector (>= 1.1.2, < 2.0.0)
|
||||
google-apis-androidpublisher_v3 (~> 0.3)
|
||||
google-apis-androidpublisher_v3 (~> 0.99)
|
||||
google-apis-playcustomapp_v1 (~> 0.1)
|
||||
google-cloud-env (>= 1.6.0, < 2.0.0)
|
||||
google-cloud-env (>= 1.6.0, < 2.5.0)
|
||||
google-cloud-storage (~> 1.31)
|
||||
highline (~> 2.0)
|
||||
http-cookie (~> 1.0.5)
|
||||
irb (>= 1.8)
|
||||
json (< 3.0.0)
|
||||
jwt (>= 2.1.0, < 3)
|
||||
jwt (>= 2.10.3, < 4)
|
||||
logger (>= 1.6, < 2.0)
|
||||
mini_magick (>= 4.9.4, < 5.0.0)
|
||||
multi_json (~> 1.12)
|
||||
multipart-post (>= 2.0.0, < 3.0.0)
|
||||
mutex_m (~> 0.3)
|
||||
naturally (~> 2.2)
|
||||
nkf (~> 0.2)
|
||||
optparse (>= 0.1.1, < 1.0.0)
|
||||
ostruct (>= 0.1.0)
|
||||
plist (>= 3.1.0, < 4.0.0)
|
||||
rubyzip (>= 2.0.0, < 3.0.0)
|
||||
security (= 0.1.5)
|
||||
rubyzip (>= 3.4.0, < 4.0.0)
|
||||
security (~> 0.3)
|
||||
simctl (~> 1.6.3)
|
||||
terminal-notifier (>= 2.0.0, < 3.0.0)
|
||||
terminal-table (~> 3)
|
||||
terminal-notifier (>= 3.1.0, < 4.0.0)
|
||||
terminal-table (~> 4)
|
||||
tty-screen (>= 0.6.3, < 1.0.0)
|
||||
tty-spinner (>= 0.8.0, < 1.0.0)
|
||||
word_wrap (~> 1.0.0)
|
||||
@@ -115,104 +120,139 @@ GEM
|
||||
xcpretty-travis-formatter (>= 0.0.3, < 2.0.0)
|
||||
fastlane-plugin-fossify (1.0.2)
|
||||
abbrev
|
||||
fastlane-sirp (1.0.0)
|
||||
sysrandom (~> 1.0)
|
||||
fastlane-sirp (1.1.0)
|
||||
gh_inspector (1.1.3)
|
||||
google-apis-androidpublisher_v3 (0.54.0)
|
||||
google-apis-core (>= 0.11.0, < 2.a)
|
||||
google-apis-core (0.11.3)
|
||||
addressable (~> 2.5, >= 2.5.1)
|
||||
googleauth (>= 0.16.2, < 2.a)
|
||||
httpclient (>= 2.8.1, < 3.a)
|
||||
mini_mime (~> 1.0)
|
||||
google-apis-androidpublisher_v3 (0.109.0)
|
||||
google-apis-core (>= 0.15.0, < 2.a)
|
||||
google-apis-core (1.3.1)
|
||||
addressable (~> 2.9)
|
||||
faraday (~> 2.13)
|
||||
faraday-follow_redirects (~> 0.3)
|
||||
googleauth (~> 1.14)
|
||||
mini_mime (~> 1.1)
|
||||
multi_json (~> 1.11)
|
||||
representable (~> 3.0)
|
||||
retriable (>= 2.0, < 4.a)
|
||||
rexml
|
||||
google-apis-iamcredentials_v1 (0.17.0)
|
||||
google-apis-core (>= 0.11.0, < 2.a)
|
||||
google-apis-playcustomapp_v1 (0.13.0)
|
||||
google-apis-core (>= 0.11.0, < 2.a)
|
||||
google-apis-storage_v1 (0.31.0)
|
||||
google-apis-core (>= 0.11.0, < 2.a)
|
||||
google-cloud-core (1.8.0)
|
||||
retriable (>= 3.1, < 5.0)
|
||||
google-apis-iamcredentials_v1 (0.28.0)
|
||||
google-apis-core (>= 0.15.0, < 2.a)
|
||||
google-apis-playcustomapp_v1 (0.18.0)
|
||||
google-apis-core (>= 0.15.0, < 2.a)
|
||||
google-apis-storage_v1 (0.69.0)
|
||||
google-apis-core (>= 0.15.0, < 2.a)
|
||||
google-cloud-core (1.9.0)
|
||||
google-cloud-env (>= 1.0, < 3.a)
|
||||
google-cloud-errors (~> 1.0)
|
||||
google-cloud-env (1.6.0)
|
||||
faraday (>= 0.17.3, < 3.0)
|
||||
google-cloud-errors (1.5.0)
|
||||
google-cloud-storage (1.47.0)
|
||||
google-cloud-env (2.4.1)
|
||||
base64 (~> 0.2)
|
||||
faraday (>= 1.0, < 3.a)
|
||||
google-cloud-errors (1.7.0)
|
||||
google-cloud-storage (1.62.1)
|
||||
addressable (~> 2.8)
|
||||
digest-crc (~> 0.4)
|
||||
google-apis-iamcredentials_v1 (~> 0.1)
|
||||
google-apis-storage_v1 (~> 0.31.0)
|
||||
google-apis-core (>= 0.18, < 2)
|
||||
google-apis-iamcredentials_v1 (~> 0.18)
|
||||
google-apis-storage_v1 (>= 0.42)
|
||||
google-cloud-core (~> 1.6)
|
||||
googleauth (>= 0.16.2, < 2.a)
|
||||
googleauth (~> 1.9)
|
||||
mini_mime (~> 1.0)
|
||||
googleauth (1.8.1)
|
||||
faraday (>= 0.17.3, < 3.a)
|
||||
jwt (>= 1.4, < 3.0)
|
||||
multi_json (~> 1.11)
|
||||
google-logging-utils (0.2.1)
|
||||
googleauth (1.17.5)
|
||||
faraday (>= 1.0, < 3.a)
|
||||
google-cloud-env (~> 2.2)
|
||||
google-logging-utils (~> 0.1)
|
||||
jwt (>= 1.4, < 4.0)
|
||||
os (>= 0.9, < 2.0)
|
||||
pstore (~> 0.1)
|
||||
signet (>= 0.16, < 2.a)
|
||||
highline (2.0.3)
|
||||
http-cookie (1.0.8)
|
||||
http-cookie (1.1.6)
|
||||
domain_name (~> 0.5)
|
||||
httpclient (2.9.0)
|
||||
mutex_m
|
||||
io-console (0.9.4)
|
||||
irb (1.18.0)
|
||||
pp (>= 0.6.0)
|
||||
prism (>= 1.3.0)
|
||||
rdoc (>= 4.0.0)
|
||||
reline (>= 0.4.2)
|
||||
jmespath (1.6.2)
|
||||
json (2.12.2)
|
||||
jwt (2.10.1)
|
||||
json (2.21.2)
|
||||
jwt (3.3.0)
|
||||
base64
|
||||
logger (1.7.0)
|
||||
mini_magick (4.13.2)
|
||||
mini_mime (1.1.5)
|
||||
multi_json (1.15.0)
|
||||
multi_json (1.21.2)
|
||||
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)
|
||||
net-http (0.10.0)
|
||||
net-protocol (>= 0.3.0)
|
||||
uri (>= 0.11.1)
|
||||
net-protocol (0.4.0)
|
||||
timeout
|
||||
nkf (0.3.0)
|
||||
optparse (0.8.1)
|
||||
os (1.1.4)
|
||||
ostruct (0.6.3)
|
||||
plist (3.7.2)
|
||||
public_suffix (6.0.2)
|
||||
rake (13.3.0)
|
||||
representable (3.2.0)
|
||||
pp (0.6.4)
|
||||
prettyprint
|
||||
prettyprint (0.2.1)
|
||||
prism (1.9.0)
|
||||
pstore (0.2.1)
|
||||
public_suffix (7.0.5)
|
||||
rake (13.4.2)
|
||||
rbs (4.2.0)
|
||||
logger
|
||||
prism (>= 1.6.0)
|
||||
tsort
|
||||
rdoc (8.1.0)
|
||||
erb
|
||||
prism (>= 1.6.0)
|
||||
rbs (>= 4.0.0)
|
||||
tsort
|
||||
reline (0.7.0)
|
||||
io-console (~> 0.5)
|
||||
representable (3.3.1)
|
||||
declarative (< 0.1.0)
|
||||
trailblazer-option (>= 0.1.1, < 0.2.0)
|
||||
uber (< 0.2.0)
|
||||
retriable (3.1.2)
|
||||
rexml (3.4.1)
|
||||
retriable (4.2.0)
|
||||
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)
|
||||
rubyzip (3.7.0)
|
||||
security (0.3.0)
|
||||
signet (0.22.1)
|
||||
addressable (~> 2.8)
|
||||
faraday (>= 0.17.5, < 3.a)
|
||||
jwt (>= 1.5, < 3.0)
|
||||
multi_json (~> 1.10)
|
||||
jwt (>= 1.5, < 4.0)
|
||||
simctl (1.6.10)
|
||||
CFPropertyList
|
||||
naturally
|
||||
sysrandom (1.0.5)
|
||||
terminal-notifier (2.0.0)
|
||||
terminal-table (3.0.2)
|
||||
unicode-display_width (>= 1.1.1, < 3)
|
||||
terminal-notifier (3.1.0)
|
||||
terminal-table (4.0.0)
|
||||
unicode-display_width (>= 1.1.1, < 4)
|
||||
timeout (0.6.1)
|
||||
trailblazer-option (0.1.2)
|
||||
tsort (0.2.0)
|
||||
tty-cursor (0.7.1)
|
||||
tty-screen (0.8.2)
|
||||
tty-spinner (0.9.3)
|
||||
tty-cursor (~> 0.7)
|
||||
uber (0.1.0)
|
||||
unicode-display_width (2.6.0)
|
||||
unicode-display_width (3.3.0)
|
||||
unicode-emoji (~> 4.3)
|
||||
unicode-emoji (4.3.0)
|
||||
uri (1.1.2)
|
||||
word_wrap (1.0.0)
|
||||
xcodeproj (1.27.0)
|
||||
xcodeproj (1.28.1)
|
||||
CFPropertyList (>= 2.3.3, < 4.0)
|
||||
atomos (~> 0.1.3)
|
||||
base64
|
||||
claide (>= 1.0.2, < 2.0)
|
||||
colored2 (~> 3.1)
|
||||
nanaimo (~> 0.4.0)
|
||||
nkf
|
||||
rexml (>= 3.3.6, < 4.0)
|
||||
xcpretty (0.4.1)
|
||||
rouge (~> 3.28.0)
|
||||
|
||||
@@ -5,7 +5,6 @@ import java.io.FileInputStream
|
||||
|
||||
plugins {
|
||||
alias(libs.plugins.android)
|
||||
alias(libs.plugins.kotlinAndroid)
|
||||
alias(libs.plugins.detekt)
|
||||
}
|
||||
|
||||
@@ -22,6 +21,11 @@ fun hasSigningVars(): Boolean {
|
||||
&& providers.environmentVariable("SIGNING_STORE_PASSWORD").orNull != null
|
||||
}
|
||||
|
||||
base {
|
||||
val versionCode = project.property("VERSION_CODE").toString().toInt()
|
||||
archivesName = "file-manager-$versionCode"
|
||||
}
|
||||
|
||||
android {
|
||||
compileSdk = project.libs.versions.app.build.compileSDKVersion.get().toInt()
|
||||
|
||||
@@ -33,7 +37,6 @@ android {
|
||||
versionCode = project.property("VERSION_CODE").toString().toInt()
|
||||
multiDexEnabled = true
|
||||
vectorDrawables.useSupportLibrary = true
|
||||
setProperty("archivesBaseName", "file-manager-$versionCode")
|
||||
}
|
||||
|
||||
signingConfigs {
|
||||
@@ -79,13 +82,12 @@ android {
|
||||
|
||||
flavorDimensions.add("variants")
|
||||
productFlavors {
|
||||
register("core")
|
||||
register("foss")
|
||||
register("gplay")
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
getByName("main").java.srcDirs("src/main/kotlin")
|
||||
getByName("main").java.directories.add("src/main/kotlin")
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
|
||||
+1
-16
@@ -52,12 +52,10 @@
|
||||
<ID>MaxLineLength:CompressAsDialog.kt$CompressAsDialog$val indexOfDot = if (filename.contains('.') && !activity.getIsPathDirectory(path)) filename.lastIndexOf(".") else filename.length</ID>
|
||||
<ID>MaxLineLength:Config.kt$Config$set(wasStorageAnalysisTabAdded) = prefs.edit().putBoolean(WAS_STORAGE_ANALYSIS_TAB_ADDED, wasStorageAnalysisTabAdded).apply()</ID>
|
||||
<ID>MaxLineLength:Context.kt$fun Context.isPathOnRoot(path: String)</ID>
|
||||
<ID>MaxLineLength:DecompressActivity.kt$DecompressActivity$updateMaterialActivityViews(decompressCoordinator, decompressList, useTransparentNavigation = true, useTopSearchMenu = false)</ID>
|
||||
<ID>MaxLineLength:DecompressItemsAdapter.kt$DecompressItemsAdapter$class</ID>
|
||||
<ID>MaxLineLength:DecompressItemsAdapter.kt$DecompressItemsAdapter$val drawable = fileDrawables.getOrElse(fileName.substringAfterLast(".").lowercase(Locale.getDefault()), { fileDrawable })</ID>
|
||||
<ID>MaxLineLength:FavoritesActivity.kt$FavoritesActivity$FilePickerDialog</ID>
|
||||
<ID>MaxLineLength:FavoritesActivity.kt$FavoritesActivity$ManageFavoritesAdapter(this@FavoritesActivity, favorites, this@FavoritesActivity, manageFavoritesList) { }</ID>
|
||||
<ID>MaxLineLength:FavoritesActivity.kt$FavoritesActivity$updateMaterialActivityViews(manageFavoritesCoordinator, manageFavoritesList, useTransparentNavigation = true, useTopSearchMenu = false)</ID>
|
||||
<ID>MaxLineLength:ItemsAdapter.kt$ItemsAdapter$}</ID>
|
||||
<ID>MaxLineLength:ItemsFragment.kt$ItemsFragment$ItemsAdapter</ID>
|
||||
<ID>MaxLineLength:ItemsFragment.kt$ItemsFragment$class</ID>
|
||||
@@ -81,35 +79,23 @@
|
||||
<ID>MaxLineLength:MainActivity.kt$MainActivity$if</ID>
|
||||
<ID>MaxLineLength:MainActivity.kt$MainActivity$private fun getInactiveTabIndexes(activeIndex: Int)</ID>
|
||||
<ID>MaxLineLength:MainActivity.kt$MainActivity$resultIntent.flags = Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION or Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION</ID>
|
||||
<ID>MaxLineLength:MainActivity.kt$MainActivity$updateMaterialActivityViews(binding.mainCoordinator, null, useTransparentNavigation = false, useTopSearchMenu = true)</ID>
|
||||
<ID>MaxLineLength:MainActivity.kt$MainActivity$val licenses = LICENSE_GLIDE or LICENSE_PATTERN or LICENSE_REPRINT or LICENSE_GESTURE_VIEWS or LICENSE_AUTOFITTEXTVIEW or LICENSE_ZIP4J</ID>
|
||||
<ID>MaxLineLength:MimeTypesActivity.kt$MimeTypesActivity$!extraAudioMimeTypes.contains(fullMimetype)</ID>
|
||||
<ID>MaxLineLength:MimeTypesActivity.kt$MimeTypesActivity$if</ID>
|
||||
<ID>MaxLineLength:MimeTypesActivity.kt$MimeTypesActivity$updateMaterialActivityViews(mimetypesCoordinator, mimetypesList, useTransparentNavigation = true, useTopSearchMenu = false)</ID>
|
||||
<ID>MaxLineLength:MimeTypesActivity.kt$MimeTypesActivity$val fullMimetype = cursor.getStringValue(MediaStore.Files.FileColumns.MIME_TYPE)?.lowercase(Locale.getDefault()) ?: return@queryCursor</ID>
|
||||
<ID>MaxLineLength:MyViewPagerFragment.kt$MyViewPagerFragment$abstract</ID>
|
||||
<ID>MaxLineLength:MyViewPagerFragment.kt$MyViewPagerFragment$val fabIcon = context.resources.getColoredDrawableWithColor(iconId, context.getProperPrimaryColor().getContrastColor())</ID>
|
||||
<ID>MaxLineLength:ReadTextActivity.kt$ReadTextActivity$if</ID>
|
||||
<ID>MaxLineLength:ReadTextActivity.kt$ReadTextActivity$private</ID>
|
||||
<ID>MaxLineLength:ReadTextActivity.kt$ReadTextActivity$updateMaterialActivityViews(readTextCoordinator, readTextView, useTransparentNavigation = true, useTopSearchMenu = false)</ID>
|
||||
<ID>MaxLineLength:RecentsFragment.kt$RecentsFragment$ItemsAdapter</ID>
|
||||
<ID>MaxLineLength:RecentsFragment.kt$RecentsFragment$binding.recentsSwipeRefresh.isEnabled = lastSearchedText.isEmpty() && activity?.config?.enablePullToRefresh != false</ID>
|
||||
<ID>MaxLineLength:RecentsFragment.kt$RecentsFragment$class</ID>
|
||||
<ID>MaxLineLength:RecentsFragment.kt$RecentsFragment$if</ID>
|
||||
<ID>MaxLineLength:RecentsFragment.kt$RecentsFragment$val filtered = filesIgnoringSearch.filter { it.mName.contains(text, true) }.toMutableList() as ArrayList<ListItem></ID>
|
||||
<ID>MaxLineLength:RootHelpers.kt$RootHelpers$fun</ID>
|
||||
<ID>MaxLineLength:RootHelpers.kt$RootHelpers$private</ID>
|
||||
<ID>MaxLineLength:SaveAsActivity.kt$SaveAsActivity$FilePickerDialog</ID>
|
||||
<ID>MaxLineLength:SaveAsDialog.kt$SaveAsDialog$val title = String.format(activity.getString(R.string.file_already_exists_overwrite), newFilename)</ID>
|
||||
<ID>MaxLineLength:SettingsActivity.kt$SettingsActivity$settingsUseEnglishHolder.beVisibleIf((config.wasUseEnglishToggled || Locale.getDefault().language != "en") && !isTiramisuPlus())</ID>
|
||||
<ID>MaxLineLength:SettingsActivity.kt$SettingsActivity$updateMaterialActivityViews(settingsCoordinator, settingsHolder, useTransparentNavigation = true, useTopSearchMenu = false)</ID>
|
||||
<ID>MaxLineLength:StorageFragment.kt$StorageFragment$class</ID>
|
||||
<ID>MaxLineLength:StorageFragment.kt$StorageFragment$mainStorageUsageProgressbar</ID>
|
||||
<ID>MaxLineLength:StorageFragment.kt$StorageFragment$mainStorageUsageProgressbar.progress = ((totalStorageSpace - freeStorageSpace) / SIZE_DIVIDER).toInt()</ID>
|
||||
<ID>MaxLineLength:StorageFragment.kt$StorageFragment$totalSpace.text = String.format(context.getString(R.string.total_storage), totalStorageSpace.formatSizeThousand())</ID>
|
||||
<ID>MaxLineLength:StorageFragment.kt$StorageFragment$val filtered = allDeviceListItems.filter { it.mName.contains(text, true) }.toMutableList() as ArrayList<ListItem></ID>
|
||||
<ID>MaxLineLength:StorageFragment.kt$StorageFragment$val mimeType = cursor.getStringValue(MediaStore.Files.FileColumns.MIME_TYPE)?.lowercase(Locale.getDefault())</ID>
|
||||
<ID>MaxLineLength:StorageFragment.kt$StorageFragment$val storageStatsManager = context.getSystemService(AppCompatActivity.STORAGE_STATS_SERVICE) as StorageStatsManager</ID>
|
||||
<ID>NestedBlockDepth:DecompressActivity.kt$DecompressActivity$private fun decompressTo(destination: String)</ID>
|
||||
<ID>NestedBlockDepth:ItemsAdapter.kt$ItemsAdapter$@SuppressLint("NewApi") private fun compressPaths( sourcePaths: List<String>, targetPath: String, password: String? = null ): Boolean</ID>
|
||||
<ID>NestedBlockDepth:ItemsAdapter.kt$ItemsAdapter$private fun decompressPaths( paths: List<String>, conflictResolutions: LinkedHashMap<String, Int>, callback: (success: Boolean) -> Unit )</ID>
|
||||
@@ -120,14 +106,13 @@
|
||||
<ID>NestedBlockDepth:RecentsFragment.kt$RecentsFragment$private fun getRecents(callback: (recents: ArrayList<ListItem>) -> Unit)</ID>
|
||||
<ID>NestedBlockDepth:StorageFragment.kt$StorageFragment$override fun setupFragment(activity: SimpleActivity)</ID>
|
||||
<ID>NestedBlockDepth:StorageFragment.kt$StorageFragment$private fun getAllFiles(volumeName: String): ArrayList<FileDirItem></ID>
|
||||
<ID>ReturnCount:ItemsAdapter.kt$ItemsAdapter$@SuppressLint("NewApi") private fun compressPaths( sourcePaths: List<String>, targetPath: String, password: String? = null ): Boolean</ID>
|
||||
<ID>ReturnCount:MainActivity.kt$MainActivity$override fun onBackPressedCompat(): Boolean</ID>
|
||||
<ID>SwallowedException:ItemsAdapter.kt$ItemsAdapter$e: Exception</ID>
|
||||
<ID>SwallowedException:MimeTypesActivity.kt$MimeTypesActivity$e: Exception</ID>
|
||||
<ID>SwallowedException:StorageFragment.kt$StorageFragment$e: Exception</ID>
|
||||
<ID>TooGenericExceptionCaught:DecompressActivity.kt$DecompressActivity$e: Exception</ID>
|
||||
<ID>TooGenericExceptionCaught:ItemsAdapter.kt$ItemsAdapter$e: Exception</ID>
|
||||
<ID>TooGenericExceptionCaught:ItemsAdapter.kt$ItemsAdapter$exception: Exception</ID>
|
||||
<ID>TooGenericExceptionCaught:MainActivity.kt$MainActivity$e: Exception</ID>
|
||||
<ID>TooGenericExceptionCaught:MimeTypesActivity.kt$MimeTypesActivity$e: Exception</ID>
|
||||
<ID>TooGenericExceptionCaught:ReadTextActivity.kt$ReadTextActivity$e: Exception</ID>
|
||||
<ID>TooGenericExceptionCaught:RecentsFragment.kt$RecentsFragment$e: Exception</ID>
|
||||
|
||||
+99
-77
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<issues format="6" by="lint 8.11.0" type="baseline" client="gradle" dependencies="false" name="AGP (8.11.0)" variant="all" version="8.11.0">
|
||||
<issues format="6" by="lint 9.4.1" type="baseline" client="gradle" dependencies="false" name="AGP (9.4.1)" variant="all" version="9.4.1">
|
||||
|
||||
<issue
|
||||
id="ScopedStorage"
|
||||
@@ -19,17 +19,17 @@
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="src/main/kotlin/org/fossify/filemanager/activities/SettingsActivity.kt"
|
||||
line="92"
|
||||
line="91"
|
||||
column="17"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="OldTargetApi"
|
||||
message="Not targeting the latest versions of Android; compatibility modes apply. Consider testing and updating this version. Consult the `android.os.Build.VERSION_CODES` javadoc for details."
|
||||
errorLine1="app-build-targetSDK = "34""
|
||||
errorLine1="app-build-targetSDK = "36""
|
||||
errorLine2=" ~~~~">
|
||||
<location
|
||||
file="$HOME/Projects/Fossify/FossifyOrg/File-Manager/gradle/libs.versions.toml"
|
||||
file="$HOME/work/File-Manager/File-Manager/gradle/libs.versions.toml"
|
||||
line="22"
|
||||
column="23"/>
|
||||
</issue>
|
||||
@@ -47,35 +47,46 @@
|
||||
|
||||
<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=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
message="A newer version of Gradle than 9.7.1 is available: 9.8.0"
|
||||
errorLine1="distributionUrl=https\://services.gradle.org/distributions/gradle-9.7.1-bin.zip"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="$HOME/Projects/Fossify/FossifyOrg/File-Manager/gradle/wrapper/gradle-wrapper.properties"
|
||||
file="$HOME/work/File-Manager/File-Manager/gradle/wrapper/gradle-wrapper.properties"
|
||||
line="3"
|
||||
column="17"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="AndroidGradlePluginVersion"
|
||||
message="A newer version of com.android.application than 8.11.0 is available: 8.11.1"
|
||||
errorLine1="gradlePlugins-agp = "8.11.0""
|
||||
errorLine2=" ~~~~~~~~">
|
||||
id="GradleDependency"
|
||||
message="A newer version of `app-build-compileSDKVersion` than 36 is available: 37"
|
||||
errorLine1="app-build-compileSDKVersion = "36""
|
||||
errorLine2=" ~~~~">
|
||||
<location
|
||||
file="$HOME/Projects/Fossify/FossifyOrg/File-Manager/gradle/libs.versions.toml"
|
||||
line="19"
|
||||
column="21"/>
|
||||
file="$HOME/work/File-Manager/File-Manager/gradle/libs.versions.toml"
|
||||
line="21"
|
||||
column="31"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="GradleDependency"
|
||||
message="A newer version of `compileSdkVersion` than 34 is available: 36"
|
||||
errorLine1="app-build-compileSDKVersion = "34""
|
||||
errorLine2=" ~~~~">
|
||||
id="NewerVersionAvailable"
|
||||
message="A newer version of io.nlopez.compose.rules:detekt than 0.4.28 is available: 0.6.7"
|
||||
errorLine1="detektCompose = "0.4.28""
|
||||
errorLine2=" ~~~~~~~~">
|
||||
<location
|
||||
file="$HOME/Projects/Fossify/FossifyOrg/File-Manager/gradle/libs.versions.toml"
|
||||
line="21"
|
||||
column="31"/>
|
||||
file="$HOME/work/File-Manager/File-Manager/gradle/libs.versions.toml"
|
||||
line="6"
|
||||
column="17"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="NewerVersionAvailable"
|
||||
message="A newer version of com.alexvasilkov:gesture-views than 2.9.0 is available: 2.10.0"
|
||||
errorLine1="gestureviews = "2.9.0""
|
||||
errorLine2=" ~~~~~~~">
|
||||
<location
|
||||
file="$HOME/work/File-Manager/File-Manager/gradle/libs.versions.toml"
|
||||
line="14"
|
||||
column="16"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
@@ -107,13 +118,13 @@
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="src/main/kotlin/org/fossify/filemanager/adapters/ItemsAdapter.kt"
|
||||
line="1144"
|
||||
line="1152"
|
||||
column="24"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""app_launcher_name" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai)"
|
||||
message=""app_launcher_name" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ml" (Malayalam), "ms" (Malay), "ne" (Nepali), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai)"
|
||||
errorLine1=" <string name="app_launcher_name">File Manager_debug</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -124,7 +135,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""app_launcher_name" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai)"
|
||||
message=""app_launcher_name" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ml" (Malayalam), "ms" (Malay), "ne" (Nepali), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai)"
|
||||
errorLine1=" <string name="app_launcher_name">File Manager</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -135,7 +146,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""press_back_again" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""press_back_again" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "ml" (Malayalam), "ms" (Malay), "ne" (Nepali), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai)"
|
||||
errorLine1=" <string name="press_back_again">Press back again to exit</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -146,7 +157,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""go_to_home_folder" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""go_to_home_folder" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "ne" (Nepali), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
errorLine1=" <string name="go_to_home_folder">Go to home folder</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -157,7 +168,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""set_as_home_folder" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""set_as_home_folder" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "ne" (Nepali), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
errorLine1=" <string name="set_as_home_folder">Set as home folder</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -168,7 +179,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""home_folder_updated" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""home_folder_updated" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
errorLine1=" <string name="home_folder_updated">Home folder updated</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -179,7 +190,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""copy_path" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""copy_path" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
errorLine1=" <string name="copy_path">Copy path to clipboard</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -190,7 +201,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""path_copied" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""path_copied" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
errorLine1=" <string name="path_copied">Path copied</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -201,7 +212,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""select_audio_file" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""select_audio_file" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
errorLine1=" <string name="select_audio_file">Please select an audio file</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -212,7 +223,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""search_folder" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""search_folder" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
errorLine1=" <string name="search_folder">Search folder</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -223,7 +234,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""rooted_device_only" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""rooted_device_only" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "bqi", "ckb""
|
||||
errorLine1=" <string name="rooted_device_only">This operation works only on rooted devices</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -234,7 +245,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""recents" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "ckb""
|
||||
message=""recents" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh)"
|
||||
errorLine1=" <string name="recents">Recents</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -245,7 +256,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""show_recents" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "ckb""
|
||||
message=""show_recents" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "ckb""
|
||||
errorLine1=" <string name="show_recents">Show recents</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -256,7 +267,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""invert_colors" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "nb" (Norwegian Bokmål), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "ta" (Tamil), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "ckb""
|
||||
message=""invert_colors" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "ne" (Nepali), "az" (Azerbaijani), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "ckb""
|
||||
errorLine1=" <string name="invert_colors">Invert colors</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -267,7 +278,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""open_as" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""open_as" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai)"
|
||||
errorLine1=" <string name="open_as">Open as</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -278,7 +289,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""text_file" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""text_file" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai)"
|
||||
errorLine1=" <string name="text_file">Text file</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -289,7 +300,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""image_file" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""image_file" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai)"
|
||||
errorLine1=" <string name="image_file">Image file</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -300,7 +311,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""audio_file" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""audio_file" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai)"
|
||||
errorLine1=" <string name="audio_file">Audio file</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -311,7 +322,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""video_file" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""video_file" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai)"
|
||||
errorLine1=" <string name="video_file">Video file</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -322,7 +333,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""other_file" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""other_file" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai)"
|
||||
errorLine1=" <string name="other_file">Other file</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -333,7 +344,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""compress" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""compress" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "bqi""
|
||||
errorLine1=" <string name="compress">Compress</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -344,7 +355,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""decompress" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""decompress" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "bqi""
|
||||
errorLine1=" <string name="decompress">Decompress</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -355,7 +366,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""compress_as" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""compress_as" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "bqi""
|
||||
errorLine1=" <string name="compress_as">Compress as</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -366,7 +377,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""compressing" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""compressing" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "bqi""
|
||||
errorLine1=" <string name="compressing">Compressing…</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -377,7 +388,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""decompressing" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""decompressing" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "bqi""
|
||||
errorLine1=" <string name="decompressing">Decompressing…</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -388,7 +399,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""compression_successful" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""compression_successful" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "bqi""
|
||||
errorLine1=" <string name="compression_successful">Compression successful</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -399,7 +410,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""decompression_successful" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""decompression_successful" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "bqi""
|
||||
errorLine1=" <string name="decompression_successful">Decompression successful</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -410,7 +421,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""compressing_failed" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""compressing_failed" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "bqi", "ckb""
|
||||
errorLine1=" <string name="compressing_failed">Compressing failed</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -421,7 +432,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""decompressing_failed" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""decompressing_failed" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "bqi", "ckb""
|
||||
errorLine1=" <string name="decompressing_failed">Decompressing failed</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -432,7 +443,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""manage_favorites" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""manage_favorites" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "bqi", "ckb""
|
||||
errorLine1=" <string name="manage_favorites">Manage favorites</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -443,7 +454,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""go_to_favorite" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""go_to_favorite" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "bqi", "ckb""
|
||||
errorLine1=" <string name="go_to_favorite">Go to favorite</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -454,7 +465,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""favorites_activity_placeholder" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""favorites_activity_placeholder" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "bqi", "ckb""
|
||||
errorLine1=" <string name="favorites_activity_placeholder">You can add frequently used folders to favorites for easy access from anywhere.</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -465,7 +476,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""file_editor" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""file_editor" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "bqi""
|
||||
errorLine1=" <string name="file_editor">File Editor</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -476,7 +487,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""storage_analysis" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "nb" (Norwegian Bokmål), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "ckb""
|
||||
message=""storage_analysis" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "bqi", "ckb""
|
||||
errorLine1=" <string name="storage_analysis">Storage analysis</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -487,7 +498,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""images" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "nn" (Norwegian Nynorsk), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""images" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "nn" (Norwegian Nynorsk), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "bqi""
|
||||
errorLine1=" <string name="images">Images</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -498,7 +509,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""videos" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""videos" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "nn" (Norwegian Nynorsk), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "bqi""
|
||||
errorLine1=" <string name="videos">Videos</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -509,7 +520,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""audio" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "sk" (Slovak), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "ckb""
|
||||
message=""audio" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "ne" (Nepali), "az" (Azerbaijani), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "cy" (Welsh)"
|
||||
errorLine1=" <string name="audio">Audio</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -520,7 +531,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""documents" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "ckb""
|
||||
message=""documents" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "bqi""
|
||||
errorLine1=" <string name="documents">Documents</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -531,7 +542,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""downloads" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "ckb""
|
||||
message=""downloads" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "bqi""
|
||||
errorLine1=" <string name="downloads">Downloads</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -542,7 +553,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""archives" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "ckb""
|
||||
message=""archives" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "bqi""
|
||||
errorLine1=" <string name="archives">Archives</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -553,7 +564,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""others" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "nb" (Norwegian Bokmål), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "ckb""
|
||||
message=""others" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "bqi""
|
||||
errorLine1=" <string name="others">Others</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -564,7 +575,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""storage_free" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "ko" (Korean), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "ckb""
|
||||
message=""storage_free" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "bqi""
|
||||
errorLine1=" <string name="storage_free">free</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -575,7 +586,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""total_storage" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "ckb""
|
||||
message=""total_storage" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "bqi""
|
||||
errorLine1=" <string name="total_storage">Total storage: %s</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -586,7 +597,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""enable_root_access" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "ckb""
|
||||
message=""enable_root_access" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "bqi", "ckb""
|
||||
errorLine1=" <string name="enable_root_access">Enable root access</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -597,7 +608,7 @@
|
||||
|
||||
<issue
|
||||
id="MissingTranslation"
|
||||
message=""press_back_twice" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "nb" (Norwegian Bokmål), "ne" (Nepali), "az" (Azerbaijani), "fa" (Persian), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "ckb""
|
||||
message=""press_back_twice" is not translated in "fil" (Filipino; Pilipino), "lv" (Latvian), "ia" (Interlingua), "mk" (Macedonian), "ml" (Malayalam), "ms" (Malay), "en" (English), "ne" (Nepali), "az" (Azerbaijani), "nn" (Norwegian Nynorsk), "bn" (Bangla), "bs" (Bosnian), "si" (Sinhala), "zgh" (Standard Moroccan Tamazight), "ltg", "kn" (Kannada), "or" (Odia), "kr" (Kanuri), "sat" (Santali), "cr" (Cree), "te" (Telugu), "th" (Thai), "cy" (Welsh), "bqi", "ckb""
|
||||
errorLine1=" <string name="press_back_twice">Require pressing Back twice to leave the app</string>"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
@@ -613,7 +624,7 @@
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="src/main/kotlin/org/fossify/filemanager/adapters/ItemsAdapter.kt"
|
||||
line="972"
|
||||
line="980"
|
||||
column="13"/>
|
||||
</issue>
|
||||
|
||||
@@ -624,7 +635,7 @@
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="src/main/kotlin/org/fossify/filemanager/adapters/ItemsAdapter.kt"
|
||||
line="976"
|
||||
line="984"
|
||||
column="13"/>
|
||||
</issue>
|
||||
|
||||
@@ -635,7 +646,7 @@
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="src/main/kotlin/org/fossify/filemanager/adapters/ItemsAdapter.kt"
|
||||
line="983"
|
||||
line="991"
|
||||
column="9"/>
|
||||
</issue>
|
||||
|
||||
@@ -646,7 +657,7 @@
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="src/main/kotlin/org/fossify/filemanager/adapters/ItemsAdapter.kt"
|
||||
line="989"
|
||||
line="997"
|
||||
column="9"/>
|
||||
</issue>
|
||||
|
||||
@@ -657,7 +668,7 @@
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="src/main/kotlin/org/fossify/filemanager/adapters/ItemsAdapter.kt"
|
||||
line="994"
|
||||
line="1002"
|
||||
column="9"/>
|
||||
</issue>
|
||||
|
||||
@@ -822,6 +833,17 @@
|
||||
column="13"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="NotShrinkingResources"
|
||||
message="If enabling minification, also set isShrinkResources = true"
|
||||
errorLine1=" isMinifyEnabled = true"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="build.gradle.kts"
|
||||
line="72"
|
||||
column="13"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="UselessParent"
|
||||
message="This `RelativeLayout` layout or its `FrameLayout` parent is possibly unnecessary; transfer the `background` attribute to the other view"
|
||||
@@ -993,8 +1015,8 @@
|
||||
errorLine1=" intent.data = Uri.parse("package:$packageName")"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="src/main/kotlin/org/fossify/filemanager/activities/MainActivity.kt"
|
||||
line="340"
|
||||
file="src/main/kotlin/org/fossify/filemanager/activities/SimpleActivity.kt"
|
||||
line="80"
|
||||
column="43"/>
|
||||
</issue>
|
||||
|
||||
@@ -1004,8 +1026,8 @@
|
||||
errorLine1=" intent.data = Uri.parse("package:$packageName")"
|
||||
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
||||
<location
|
||||
file="src/main/kotlin/org/fossify/filemanager/activities/MainActivity.kt"
|
||||
line="340"
|
||||
file="src/main/kotlin/org/fossify/filemanager/activities/SimpleActivity.kt"
|
||||
line="80"
|
||||
column="43"/>
|
||||
</issue>
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<bool name="show_donate_in_about">true</bool>
|
||||
<bool name="hide_google_relations">true</bool>
|
||||
<bool name="pretend_thank_you_installed">true</bool>
|
||||
<bool name="is_google_play_build">false</bool>
|
||||
</resources>
|
||||
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<bool name="show_donate_in_about">false</bool>
|
||||
<bool name="hide_google_relations">false</bool>
|
||||
<bool name="hide_all_external_links">true</bool>
|
||||
<bool name="is_google_play_build">true</bool>
|
||||
</resources>
|
||||
@@ -60,14 +60,6 @@
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.OPEN_DOCUMENT" />
|
||||
<data android:mimeType="*/*" />
|
||||
|
||||
<category android:name="android.intent.category.OPENABLE" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.RINGTONE_PICKER" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
|
||||
@@ -45,13 +45,12 @@ class DecompressActivity : SimpleActivity() {
|
||||
private var filename = ""
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
isMaterialActivity = true
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(binding.root)
|
||||
setupOptionsMenu()
|
||||
binding.apply {
|
||||
updateMaterialActivityViews(decompressCoordinator, decompressList, useTransparentNavigation = true, useTopSearchMenu = false)
|
||||
setupMaterialScrollListener(decompressList, decompressToolbar)
|
||||
setupEdgeToEdge(padBottomSystem = listOf(decompressList))
|
||||
setupMaterialScrollListener(binding.decompressList, binding.decompressAppbar)
|
||||
}
|
||||
|
||||
uri = intent.data
|
||||
@@ -70,7 +69,7 @@ class DecompressActivity : SimpleActivity() {
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
setupToolbar(binding.decompressToolbar, NavigationIcon.Arrow)
|
||||
setupTopAppBar(binding.decompressAppbar, NavigationIcon.Arrow)
|
||||
}
|
||||
|
||||
override fun onSaveInstanceState(outState: Bundle) {
|
||||
@@ -88,16 +87,18 @@ class DecompressActivity : SimpleActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
override fun onBackPressed() {
|
||||
if (currentPath.isEmpty()) {
|
||||
super.onBackPressed()
|
||||
override fun onBackPressedCompat(): Boolean {
|
||||
return if (currentPath.isEmpty()) {
|
||||
false
|
||||
} else {
|
||||
val newPath = if (currentPath.contains("/")) currentPath.getParentPath() else ""
|
||||
updateCurrentPath(newPath)
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupFilesList() {
|
||||
allFiles.clear()
|
||||
fillAllListItems(uri!!) {
|
||||
updateCurrentPath("")
|
||||
}
|
||||
@@ -154,6 +155,7 @@ class DecompressActivity : SimpleActivity() {
|
||||
zipInputStream.setPassword(password?.toCharArray())
|
||||
}
|
||||
val buffer = ByteArray(1024)
|
||||
val foldersTimestamp = mutableListOf<Pair<File, LocalFileHeader>>()
|
||||
|
||||
zipInputStream.use {
|
||||
while (true) {
|
||||
@@ -162,16 +164,13 @@ class DecompressActivity : SimpleActivity() {
|
||||
val parent = "$destination/$filename"
|
||||
val newPath = "$parent/${entry.fileName.trimEnd('/')}"
|
||||
|
||||
|
||||
if (!getDoesFilePathExist(parent)) {
|
||||
if (!createDirectorySync(parent)) {
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
if (entry.isDirectory) {
|
||||
continue
|
||||
}
|
||||
|
||||
val outputFile = File(newPath)
|
||||
|
||||
val isVulnerableForZipPathTraversal = !outputFile.canonicalPath.startsWith(parent)
|
||||
@@ -179,6 +178,14 @@ class DecompressActivity : SimpleActivity() {
|
||||
continue
|
||||
}
|
||||
|
||||
if (entry.isDirectory) {
|
||||
if (!outputFile.exists()) {
|
||||
outputFile.mkdirs()
|
||||
}
|
||||
foldersTimestamp.add(Pair(outputFile, entry))
|
||||
continue
|
||||
}
|
||||
|
||||
val fos = getFileOutputStreamSync(newPath, newPath.getMimeType())
|
||||
var count: Int
|
||||
while (true) {
|
||||
@@ -192,7 +199,9 @@ class DecompressActivity : SimpleActivity() {
|
||||
fos!!.close()
|
||||
outputFile.setLastModified(entry)
|
||||
}
|
||||
|
||||
for ((outputFile, entry) in foldersTimestamp.asReversed()) {
|
||||
outputFile.setLastModified(entry)
|
||||
}
|
||||
toast(R.string.decompression_successful)
|
||||
finish()
|
||||
}
|
||||
|
||||
@@ -18,20 +18,19 @@ class FavoritesActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
||||
private val binding by viewBinding(ActivityFavoritesBinding::inflate)
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
isMaterialActivity = true
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(binding.root)
|
||||
setupOptionsMenu()
|
||||
updateFavorites()
|
||||
binding.apply {
|
||||
updateMaterialActivityViews(manageFavoritesCoordinator, manageFavoritesList, useTransparentNavigation = true, useTopSearchMenu = false)
|
||||
setupMaterialScrollListener(manageFavoritesList, manageFavoritesToolbar)
|
||||
setupEdgeToEdge(padBottomSystem = listOf(manageFavoritesList))
|
||||
setupMaterialScrollListener(binding.manageFavoritesList, binding.manageFavoritesAppbar)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
setupToolbar(binding.manageFavoritesToolbar, NavigationIcon.Arrow)
|
||||
setupTopAppBar(binding.manageFavoritesAppbar, NavigationIcon.Arrow)
|
||||
}
|
||||
|
||||
private fun setupOptionsMenu() {
|
||||
|
||||
@@ -1,22 +1,17 @@
|
||||
package org.fossify.filemanager.activities
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.Activity
|
||||
import android.content.ClipData
|
||||
import android.content.Intent
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.media.RingtoneManager
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.os.Environment
|
||||
import android.os.Handler
|
||||
import android.provider.Settings
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.viewpager.widget.ViewPager
|
||||
import com.stericson.RootTools.RootTools
|
||||
import me.grantland.widget.AutofitHelper
|
||||
import org.fossify.commons.dialogs.ConfirmationAdvancedDialog
|
||||
import org.fossify.commons.dialogs.RadioGroupDialog
|
||||
import org.fossify.commons.extensions.appLaunched
|
||||
import org.fossify.commons.extensions.appLockManager
|
||||
@@ -43,7 +38,6 @@ import org.fossify.commons.extensions.launchMoreAppsFromUsIntent
|
||||
import org.fossify.commons.extensions.onGlobalLayout
|
||||
import org.fossify.commons.extensions.onTabSelectionChanged
|
||||
import org.fossify.commons.extensions.sdCardPath
|
||||
import org.fossify.commons.extensions.showErrorToast
|
||||
import org.fossify.commons.extensions.toast
|
||||
import org.fossify.commons.extensions.updateBottomTabItemColors
|
||||
import org.fossify.commons.extensions.viewBinding
|
||||
@@ -59,7 +53,6 @@ import org.fossify.commons.helpers.TAB_RECENT_FILES
|
||||
import org.fossify.commons.helpers.TAB_STORAGE_ANALYSIS
|
||||
import org.fossify.commons.helpers.VIEW_TYPE_GRID
|
||||
import org.fossify.commons.helpers.ensureBackgroundThread
|
||||
import org.fossify.commons.helpers.isRPlus
|
||||
import org.fossify.commons.models.FAQItem
|
||||
import org.fossify.commons.models.RadioItem
|
||||
import org.fossify.commons.models.Release
|
||||
@@ -82,9 +75,10 @@ import org.fossify.filemanager.interfaces.ItemOperationsListener
|
||||
import java.io.File
|
||||
|
||||
class MainActivity : SimpleActivity() {
|
||||
override var isSearchBarEnabled = true
|
||||
|
||||
companion object {
|
||||
private const val BACK_PRESS_TIMEOUT = 5000
|
||||
private const val MANAGE_STORAGE_RC = 201
|
||||
private const val PICKED_PATH = "picked_path"
|
||||
}
|
||||
|
||||
@@ -99,7 +93,6 @@ class MainActivity : SimpleActivity() {
|
||||
private var mStoredShowTabs = 0
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
isMaterialActivity = true
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(binding.root)
|
||||
appLaunched(BuildConfig.APPLICATION_ID)
|
||||
@@ -117,7 +110,7 @@ class MainActivity : SimpleActivity() {
|
||||
storeStateVariables()
|
||||
setupTabs()
|
||||
|
||||
updateMaterialActivityViews(binding.mainCoordinator, null, useTransparentNavigation = false, useTopSearchMenu = true)
|
||||
setupEdgeToEdge(padBottomImeAndSystem = listOf(binding.mainTabsHolder))
|
||||
|
||||
if (savedInstanceState == null) {
|
||||
config.temporarilyShowHidden = false
|
||||
@@ -168,12 +161,13 @@ class MainActivity : SimpleActivity() {
|
||||
config.lastUsedViewPagerPage = binding.mainViewPager.currentItem
|
||||
}
|
||||
|
||||
override fun onBackPressed() {
|
||||
override fun onBackPressedCompat(): Boolean {
|
||||
val currentFragment = getCurrentFragment()
|
||||
if (binding.mainMenu.isSearchOpen) {
|
||||
binding.mainMenu.closeSearch()
|
||||
return true
|
||||
} else if (currentFragment is RecentsFragment || currentFragment is StorageFragment) {
|
||||
super.onBackPressed()
|
||||
return false
|
||||
} else if ((currentFragment as ItemsFragment).getBreadcrumbs().getItemCount() <= 1) {
|
||||
if (!wasBackJustPressed && config.pressBackTwice) {
|
||||
wasBackJustPressed = true
|
||||
@@ -181,13 +175,16 @@ class MainActivity : SimpleActivity() {
|
||||
Handler().postDelayed({
|
||||
wasBackJustPressed = false
|
||||
}, BACK_PRESS_TIMEOUT.toLong())
|
||||
return true
|
||||
} else {
|
||||
appLockManager.lock()
|
||||
finish()
|
||||
return true
|
||||
}
|
||||
} else {
|
||||
currentFragment.getBreadcrumbs().removeBreadcrumb()
|
||||
openPath(currentFragment.getBreadcrumbs().getLastItem().path)
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
@@ -197,7 +194,7 @@ class MainActivity : SimpleActivity() {
|
||||
val currentViewType = config.getFolderViewType(currentFragment.currentPath)
|
||||
val favorites = config.favorites
|
||||
|
||||
binding.mainMenu.getToolbar().menu.apply {
|
||||
binding.mainMenu.requireToolbar().menu.apply {
|
||||
findItem(R.id.sort).isVisible = currentFragment is ItemsFragment
|
||||
findItem(R.id.change_view_type).isVisible = currentFragment !is StorageFragment
|
||||
|
||||
@@ -214,7 +211,7 @@ class MainActivity : SimpleActivity() {
|
||||
|
||||
findItem(R.id.column_count).isVisible = currentViewType == VIEW_TYPE_GRID && currentFragment !is StorageFragment
|
||||
|
||||
findItem(R.id.more_apps_from_us).isVisible = !resources.getBoolean(R.bool.hide_google_relations)
|
||||
findItem(R.id.more_apps_from_us).isVisible = resources.getBoolean(R.bool.is_google_play_build)
|
||||
findItem(R.id.settings).isVisible = !isCreateDocumentIntent
|
||||
findItem(R.id.about).isVisible = !isCreateDocumentIntent
|
||||
}
|
||||
@@ -222,7 +219,7 @@ class MainActivity : SimpleActivity() {
|
||||
|
||||
private fun setupOptionsMenu() {
|
||||
binding.mainMenu.apply {
|
||||
getToolbar().inflateMenu(R.menu.menu)
|
||||
requireToolbar().inflateMenu(R.menu.menu)
|
||||
toggleHideOnScroll(false)
|
||||
setupMenu()
|
||||
|
||||
@@ -236,7 +233,7 @@ class MainActivity : SimpleActivity() {
|
||||
getCurrentFragment()?.searchQueryChanged(text)
|
||||
}
|
||||
|
||||
getToolbar().setOnMenuItemClickListener { menuItem ->
|
||||
requireToolbar().setOnMenuItemClickListener { menuItem ->
|
||||
if (getCurrentFragment() == null) {
|
||||
return@setOnMenuItemClickListener true
|
||||
}
|
||||
@@ -281,17 +278,7 @@ class MainActivity : SimpleActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("NewApi")
|
||||
override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) {
|
||||
super.onActivityResult(requestCode, resultCode, resultData)
|
||||
isAskingPermissions = false
|
||||
if (requestCode == MANAGE_STORAGE_RC && isRPlus()) {
|
||||
actionOnPermission?.invoke(Environment.isExternalStorageManager())
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateMenuColors() {
|
||||
updateStatusbarColor(getProperBackgroundColor())
|
||||
binding.mainMenu.updateColors()
|
||||
}
|
||||
|
||||
@@ -323,38 +310,6 @@ class MainActivity : SimpleActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("InlinedApi")
|
||||
private fun handleStoragePermission(callback: (granted: Boolean) -> Unit) {
|
||||
actionOnPermission = null
|
||||
if (hasStoragePermission()) {
|
||||
callback(true)
|
||||
} else {
|
||||
if (isRPlus()) {
|
||||
ConfirmationAdvancedDialog(this, "", R.string.access_storage_prompt, R.string.ok, 0, false) { success ->
|
||||
if (success) {
|
||||
isAskingPermissions = true
|
||||
actionOnPermission = callback
|
||||
try {
|
||||
val intent = Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION)
|
||||
intent.addCategory("android.intent.category.DEFAULT")
|
||||
intent.data = Uri.parse("package:$packageName")
|
||||
startActivityForResult(intent, MANAGE_STORAGE_RC)
|
||||
} catch (e: Exception) {
|
||||
showErrorToast(e)
|
||||
val intent = Intent()
|
||||
intent.action = Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION
|
||||
startActivityForResult(intent, MANAGE_STORAGE_RC)
|
||||
}
|
||||
} else {
|
||||
finish()
|
||||
}
|
||||
}
|
||||
} else {
|
||||
handlePermission(PERMISSION_WRITE_STORAGE, callback)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun initFileManager(refreshRecents: Boolean) {
|
||||
if (intent.action == Intent.ACTION_VIEW && intent.data != null) {
|
||||
val data = intent.data
|
||||
@@ -414,7 +369,6 @@ class MainActivity : SimpleActivity() {
|
||||
val isPickFileIntent = action == RingtoneManager.ACTION_RINGTONE_PICKER
|
||||
|| action == Intent.ACTION_GET_CONTENT
|
||||
|| action == Intent.ACTION_PICK
|
||||
|| action == Intent.ACTION_OPEN_DOCUMENT
|
||||
val isCreateDocumentIntent = action == Intent.ACTION_CREATE_DOCUMENT
|
||||
|
||||
if (isPickFileIntent) {
|
||||
@@ -467,7 +421,6 @@ class MainActivity : SimpleActivity() {
|
||||
}
|
||||
|
||||
val bottomBarColor = getBottomNavigationBackgroundColor()
|
||||
updateNavigationBarColor(bottomBarColor)
|
||||
mainTabsHolder.setBackgroundColor(bottomBarColor)
|
||||
}
|
||||
}
|
||||
@@ -631,7 +584,7 @@ class MainActivity : SimpleActivity() {
|
||||
FAQItem(R.string.faq_9_title_commons, R.string.faq_9_text_commons)
|
||||
)
|
||||
|
||||
if (!resources.getBoolean(R.bool.hide_google_relations)) {
|
||||
if (resources.getBoolean(R.bool.is_google_play_build)) {
|
||||
faqItems.add(FAQItem(R.string.faq_2_title_commons, R.string.faq_2_text_commons))
|
||||
faqItems.add(FAQItem(R.string.faq_6_title_commons, R.string.faq_6_text_commons))
|
||||
faqItems.add(FAQItem(R.string.faq_7_title_commons, R.string.faq_7_text_commons))
|
||||
|
||||
@@ -25,6 +25,7 @@ import org.fossify.filemanager.databinding.ActivityMimetypesBinding
|
||||
import org.fossify.filemanager.dialogs.ChangeSortingDialog
|
||||
import org.fossify.filemanager.dialogs.ChangeViewTypeDialog
|
||||
import org.fossify.filemanager.extensions.config
|
||||
import org.fossify.filemanager.extensions.isPathInHiddenFolder
|
||||
import org.fossify.filemanager.extensions.tryOpenPathIntent
|
||||
import org.fossify.filemanager.helpers.*
|
||||
import org.fossify.filemanager.interfaces.ItemOperationsListener
|
||||
@@ -43,14 +44,13 @@ class MimeTypesActivity : SimpleActivity(), ItemOperationsListener {
|
||||
private var currentVolume = PRIMARY_VOLUME_NAME
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
isMaterialActivity = true
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(binding.root)
|
||||
setupOptionsMenu()
|
||||
refreshMenuItems()
|
||||
binding.apply {
|
||||
updateMaterialActivityViews(mimetypesCoordinator, mimetypesList, useTransparentNavigation = true, useTopSearchMenu = false)
|
||||
setupMaterialScrollListener(mimetypesList, mimetypesToolbar)
|
||||
setupEdgeToEdge(padBottomImeAndSystem = listOf(mimetypesList))
|
||||
setupMaterialScrollListener(binding.mimetypesList, binding.mimetypesAppbar)
|
||||
}
|
||||
|
||||
currentMimeType = intent.getStringExtra(SHOW_MIMETYPE) ?: return
|
||||
@@ -84,7 +84,7 @@ class MimeTypesActivity : SimpleActivity(), ItemOperationsListener {
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
setupToolbar(binding.mimetypesToolbar, NavigationIcon.Arrow, searchMenuItem = searchMenuItem)
|
||||
setupTopAppBar(binding.mimetypesAppbar, NavigationIcon.Arrow, searchMenuItem = searchMenuItem)
|
||||
}
|
||||
|
||||
private fun refreshMenuItems() {
|
||||
@@ -133,10 +133,11 @@ class MimeTypesActivity : SimpleActivity(), ItemOperationsListener {
|
||||
override fun selectedPaths(paths: ArrayList<String>) {}
|
||||
|
||||
fun searchQueryChanged(text: String) {
|
||||
val searchText = text.trim()
|
||||
lastSearchedText = searchText
|
||||
val normalizedText = text.normalizeString()
|
||||
val searchNormalizedText = normalizedText.trim()
|
||||
lastSearchedText = searchNormalizedText
|
||||
when {
|
||||
searchText.isEmpty() -> {
|
||||
searchNormalizedText.isEmpty() -> {
|
||||
binding.apply {
|
||||
mimetypesFastscroller.beVisible()
|
||||
getRecyclerAdapter()?.updateItems(storedItems)
|
||||
@@ -145,7 +146,7 @@ class MimeTypesActivity : SimpleActivity(), ItemOperationsListener {
|
||||
}
|
||||
}
|
||||
|
||||
searchText.length == 1 -> {
|
||||
searchNormalizedText.length == 1 -> {
|
||||
binding.apply {
|
||||
mimetypesFastscroller.beGone()
|
||||
mimetypesPlaceholder.beVisible()
|
||||
@@ -155,11 +156,13 @@ class MimeTypesActivity : SimpleActivity(), ItemOperationsListener {
|
||||
|
||||
else -> {
|
||||
ensureBackgroundThread {
|
||||
if (lastSearchedText != searchText) {
|
||||
if (lastSearchedText != searchNormalizedText) {
|
||||
return@ensureBackgroundThread
|
||||
}
|
||||
|
||||
val listItems = storedItems.filter { it.name.contains(searchText, true) } as ArrayList<ListItem>
|
||||
val listItems = storedItems.filter {
|
||||
it.name.normalizeString().contains(searchNormalizedText, true)
|
||||
} as ArrayList<ListItem>
|
||||
|
||||
runOnUiThread {
|
||||
getRecyclerAdapter()?.updateItems(listItems, text)
|
||||
@@ -285,7 +288,10 @@ class MimeTypesActivity : SimpleActivity(), ItemOperationsListener {
|
||||
try {
|
||||
val fullMimetype = cursor.getStringValue(MediaStore.Files.FileColumns.MIME_TYPE)?.lowercase(Locale.getDefault()) ?: return@queryCursor
|
||||
val name = cursor.getStringValue(MediaStore.Files.FileColumns.DISPLAY_NAME)
|
||||
if (!showHidden && name.startsWith(".")) {
|
||||
val path = cursor.getStringValue(MediaStore.Files.FileColumns.DATA)
|
||||
|
||||
val isHiddenFile = name.startsWith(".")
|
||||
if (!showHidden && (isHiddenFile || path.isPathInHiddenFolder())) {
|
||||
return@queryCursor
|
||||
}
|
||||
|
||||
@@ -294,7 +300,6 @@ class MimeTypesActivity : SimpleActivity(), ItemOperationsListener {
|
||||
return@queryCursor
|
||||
}
|
||||
|
||||
val path = cursor.getStringValue(MediaStore.Files.FileColumns.DATA)
|
||||
val lastModified = cursor.getLongValue(MediaStore.Files.FileColumns.DATE_MODIFIED) * 1000
|
||||
|
||||
val mimetype = fullMimetype.substringBefore("/")
|
||||
|
||||
@@ -7,6 +7,7 @@ import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.print.PrintAttributes
|
||||
import android.print.PrintManager
|
||||
import android.util.Base64
|
||||
import android.view.inputmethod.EditorInfo
|
||||
import android.webkit.WebResourceRequest
|
||||
import android.webkit.WebView
|
||||
@@ -50,13 +51,12 @@ class ReadTextActivity : SimpleActivity() {
|
||||
private lateinit var searchClearBtn: ImageView
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
isMaterialActivity = true
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(binding.root)
|
||||
setupOptionsMenu()
|
||||
binding.apply {
|
||||
updateMaterialActivityViews(readTextCoordinator, readTextView, useTransparentNavigation = true, useTopSearchMenu = false)
|
||||
setupMaterialScrollListener(readTextHolder, readTextToolbar)
|
||||
setupEdgeToEdge(padBottomImeAndSystem = listOf(readTextView))
|
||||
setupMaterialScrollListener(binding.readTextHolder, binding.readTextAppbar)
|
||||
}
|
||||
|
||||
searchQueryET = findViewById(R.id.search_query)
|
||||
@@ -95,7 +95,7 @@ class ReadTextActivity : SimpleActivity() {
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
setupToolbar(binding.readTextToolbar, NavigationIcon.Arrow)
|
||||
setupTopAppBar(binding.readTextAppbar, NavigationIcon.Arrow)
|
||||
}
|
||||
|
||||
override fun onSaveInstanceState(outState: Bundle) {
|
||||
@@ -119,22 +119,26 @@ class ReadTextActivity : SimpleActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
override fun onBackPressed() {
|
||||
override fun onBackPressedCompat(): Boolean {
|
||||
val hasUnsavedChanges = originalText != binding.readTextView.text.toString()
|
||||
when {
|
||||
isSearchActive -> closeSearch()
|
||||
return when {
|
||||
isSearchActive -> {
|
||||
closeSearch()
|
||||
true
|
||||
}
|
||||
hasUnsavedChanges && System.currentTimeMillis() - lastSavePromptTS > SAVE_DISCARD_PROMPT_INTERVAL -> {
|
||||
lastSavePromptTS = System.currentTimeMillis()
|
||||
ConfirmationAdvancedDialog(this, "", R.string.save_before_closing, R.string.save, R.string.discard) {
|
||||
if (it) {
|
||||
saveText(true)
|
||||
} else {
|
||||
super.onBackPressed()
|
||||
performDefaultBack()
|
||||
}
|
||||
}
|
||||
true
|
||||
}
|
||||
|
||||
else -> super.onBackPressed()
|
||||
else -> false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -143,6 +147,7 @@ class ReadTextActivity : SimpleActivity() {
|
||||
when (menuItem.itemId) {
|
||||
R.id.menu_search -> openSearch()
|
||||
R.id.menu_save -> saveText()
|
||||
R.id.menu_save_as -> saveAsText()
|
||||
R.id.menu_open_with -> openPath(intent.dataString!!, true)
|
||||
R.id.menu_print -> printText()
|
||||
else -> return@setOnMenuItemClickListener false
|
||||
@@ -164,10 +169,14 @@ class ReadTextActivity : SimpleActivity() {
|
||||
}, 250)
|
||||
}
|
||||
|
||||
private fun saveText(shouldExitAfterSaving: Boolean = false) {
|
||||
private fun updateFilePath() {
|
||||
if (filePath.isEmpty()) {
|
||||
filePath = getRealPathFromURI(intent.data!!) ?: ""
|
||||
}
|
||||
}
|
||||
|
||||
private fun saveAsText(shouldExitAfterSaving: Boolean = false) {
|
||||
updateFilePath()
|
||||
|
||||
if (filePath.isEmpty()) {
|
||||
SaveAsDialog(this, filePath, true) { _, filename ->
|
||||
@@ -181,6 +190,7 @@ class ReadTextActivity : SimpleActivity() {
|
||||
} else {
|
||||
SELECT_SAVE_FILE_INTENT
|
||||
}
|
||||
@Suppress("DEPRECATION")
|
||||
startActivityForResult(this, requestCode)
|
||||
}
|
||||
}
|
||||
@@ -199,6 +209,21 @@ class ReadTextActivity : SimpleActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun saveText(shouldExitAfterSaving: Boolean = false) {
|
||||
updateFilePath()
|
||||
|
||||
if (filePath.isEmpty()) {
|
||||
saveAsText(shouldExitAfterSaving)
|
||||
} else if (hasStoragePermission()) {
|
||||
val file = File(filePath)
|
||||
getFileOutputStream(file.toFileDirItem(this), true) {
|
||||
saveTextContent(it, shouldExitAfterSaving, true)
|
||||
}
|
||||
} else {
|
||||
toast(R.string.no_storage_permissions)
|
||||
}
|
||||
}
|
||||
|
||||
private fun saveTextContent(outputStream: OutputStream?, shouldExitAfterSaving: Boolean, shouldOverwriteOriginalText: Boolean) {
|
||||
if (outputStream != null) {
|
||||
val currentText = binding.readTextView.text.toString()
|
||||
@@ -211,7 +236,7 @@ class ReadTextActivity : SimpleActivity() {
|
||||
}
|
||||
|
||||
if (shouldExitAfterSaving) {
|
||||
super.onBackPressed()
|
||||
performDefaultBack()
|
||||
}
|
||||
} else {
|
||||
toast(R.string.unknown_error_occurred)
|
||||
@@ -229,7 +254,17 @@ class ReadTextActivity : SimpleActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
webView.loadData(binding.readTextView.text.toString(), "text/plain", "UTF-8")
|
||||
val text = binding.readTextView.text.toString()
|
||||
ensureBackgroundThread {
|
||||
try {
|
||||
val base64 = Base64.encodeToString(text.toByteArray(), Base64.DEFAULT)
|
||||
runOnUiThread {
|
||||
webView.loadData(base64, "text/plain", "base64")
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
showErrorToast(e)
|
||||
}
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
showErrorToast(e)
|
||||
}
|
||||
|
||||
@@ -18,7 +18,21 @@ class SaveAsActivity : SimpleActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(binding.root)
|
||||
tryInitFileManager()
|
||||
}
|
||||
|
||||
private fun tryInitFileManager() {
|
||||
handleStoragePermission { granted ->
|
||||
if (granted) {
|
||||
saveAsDialog()
|
||||
} else {
|
||||
toast(R.string.no_storage_permissions)
|
||||
finish()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun saveAsDialog() {
|
||||
if (intent.action == Intent.ACTION_SEND && intent.extras?.containsKey(Intent.EXTRA_STREAM) == true) {
|
||||
FilePickerDialog(this, pickFile = false, showHidden = config.shouldShowHidden(), showFAB = true, showFavoritesButton = true) {
|
||||
val destination = it
|
||||
@@ -36,14 +50,15 @@ class SaveAsActivity : SimpleActivity() {
|
||||
}
|
||||
|
||||
val source = intent.getParcelableExtra<Uri>(Intent.EXTRA_STREAM)!!
|
||||
val filename = getFilenameFromContentUri(source)
|
||||
val originalFilename = getFilenameFromContentUri(source)
|
||||
?: source.toString().getFilenameFromPath()
|
||||
val filename = sanitizeFilename(originalFilename)
|
||||
val mimeType = contentResolver.getType(source)
|
||||
?: intent.type?.takeIf { it != "*/*" }
|
||||
?: filename.getMimeType()
|
||||
val inputStream = contentResolver.openInputStream(source)
|
||||
|
||||
val destinationPath = "$destination/$filename"
|
||||
val destinationPath = getAvailablePath("$destination/$filename")
|
||||
val outputStream = getFileOutputStreamSync(destinationPath, mimeType, null)!!
|
||||
inputStream!!.copyTo(outputStream)
|
||||
rescanPaths(arrayListOf(destinationPath))
|
||||
@@ -64,6 +79,37 @@ class SaveAsActivity : SimpleActivity() {
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
setupToolbar(binding.activitySaveAsToolbar, NavigationIcon.Arrow)
|
||||
setupTopAppBar(binding.activitySaveAsAppbar, NavigationIcon.Arrow)
|
||||
}
|
||||
|
||||
private fun sanitizeFilename(filename: String): String {
|
||||
return filename.replace("[/\\\\<>:\"|?*\u0000-\u001F]".toRegex(), "_")
|
||||
.takeIf { it.isNotBlank() } ?: "unnamed_file"
|
||||
}
|
||||
|
||||
private fun getAvailablePath(destinationPath: String): String {
|
||||
if (!getDoesFilePathExist(destinationPath)) {
|
||||
return destinationPath
|
||||
}
|
||||
|
||||
val file = File(destinationPath)
|
||||
return findAvailableName(file)
|
||||
}
|
||||
|
||||
private fun findAvailableName(file: File): String {
|
||||
val parent = file.parent ?: return file.absolutePath
|
||||
val name = file.nameWithoutExtension
|
||||
val ext = if (file.extension.isNotEmpty()) ".${file.extension}" else ""
|
||||
|
||||
var index = 1
|
||||
var newPath: String
|
||||
|
||||
do {
|
||||
newPath = "$parent/${name}_$index$ext"
|
||||
index++
|
||||
} while (getDoesFilePathExist(newPath))
|
||||
|
||||
return newPath
|
||||
}
|
||||
|
||||
}
|
||||
@@ -21,18 +21,17 @@ class SettingsActivity : SimpleActivity() {
|
||||
private val binding by viewBinding(ActivitySettingsBinding::inflate)
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
isMaterialActivity = true
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(binding.root)
|
||||
binding.apply {
|
||||
updateMaterialActivityViews(settingsCoordinator, settingsHolder, useTransparentNavigation = true, useTopSearchMenu = false)
|
||||
setupMaterialScrollListener(settingsNestedScrollview, settingsToolbar)
|
||||
setupEdgeToEdge(padBottomSystem = listOf(settingsNestedScrollview))
|
||||
setupMaterialScrollListener(binding.settingsNestedScrollview, binding.settingsAppbar)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
setupToolbar(binding.settingsToolbar, NavigationIcon.Arrow)
|
||||
setupTopAppBar(binding.settingsAppbar, NavigationIcon.Arrow)
|
||||
|
||||
setupCustomizeColors()
|
||||
setupUseEnglish()
|
||||
|
||||
@@ -1,9 +1,15 @@
|
||||
package org.fossify.filemanager.activities
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Intent
|
||||
import android.os.Environment
|
||||
import android.provider.Settings
|
||||
import org.fossify.commons.activities.BaseSimpleActivity
|
||||
import org.fossify.commons.dialogs.ConfirmationAdvancedDialog
|
||||
import org.fossify.commons.extensions.hasPermission
|
||||
import android.net.Uri
|
||||
import org.fossify.commons.extensions.showErrorToast
|
||||
import org.fossify.commons.extensions.toast
|
||||
import org.fossify.commons.helpers.PERMISSION_WRITE_STORAGE
|
||||
import org.fossify.commons.helpers.isRPlus
|
||||
import org.fossify.filemanager.R
|
||||
@@ -31,10 +37,23 @@ open class SimpleActivity : BaseSimpleActivity() {
|
||||
R.mipmap.ic_launcher_grey_black
|
||||
)
|
||||
|
||||
companion object {
|
||||
private const val MANAGE_STORAGE_RC = 201
|
||||
}
|
||||
|
||||
override fun getAppLauncherName() = getString(R.string.app_launcher_name)
|
||||
|
||||
override fun getRepositoryName() = "File-Manager"
|
||||
|
||||
@SuppressLint("NewApi")
|
||||
override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) {
|
||||
super.onActivityResult(requestCode, resultCode, resultData)
|
||||
isAskingPermissions = false
|
||||
if (requestCode == MANAGE_STORAGE_RC && isRPlus()) {
|
||||
actionOnPermission?.invoke(Environment.isExternalStorageManager())
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("NewApi")
|
||||
fun hasStoragePermission(): Boolean {
|
||||
return if (isRPlus()) {
|
||||
@@ -43,4 +62,39 @@ open class SimpleActivity : BaseSimpleActivity() {
|
||||
hasPermission(PERMISSION_WRITE_STORAGE)
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("InlinedApi")
|
||||
fun handleStoragePermission(callback: (granted: Boolean) -> Unit) {
|
||||
actionOnPermission = null
|
||||
if (hasStoragePermission()) {
|
||||
callback(true)
|
||||
} else {
|
||||
if (isRPlus()) {
|
||||
ConfirmationAdvancedDialog(this, "", R.string.access_storage_prompt, R.string.ok, 0, false) { success ->
|
||||
if (success) {
|
||||
isAskingPermissions = true
|
||||
actionOnPermission = callback
|
||||
try {
|
||||
val intent = Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION)
|
||||
intent.addCategory("android.intent.category.DEFAULT")
|
||||
intent.data = Uri.parse("package:$packageName")
|
||||
startActivityForResult(intent, MANAGE_STORAGE_RC)
|
||||
} catch (e: android.content.ActivityNotFoundException) {
|
||||
showErrorToast(e)
|
||||
val intent = Intent()
|
||||
intent.action = Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION
|
||||
startActivityForResult(intent, MANAGE_STORAGE_RC)
|
||||
} catch (e: SecurityException) {
|
||||
showErrorToast(e)
|
||||
finish()
|
||||
}
|
||||
} else {
|
||||
finish()
|
||||
}
|
||||
}
|
||||
} else {
|
||||
handlePermission(PERMISSION_WRITE_STORAGE, callback)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -117,8 +117,8 @@ class DecompressItemsAdapter(activity: SimpleActivity, var listItems: MutableLis
|
||||
private fun getImagePathToLoad(path: String): Any {
|
||||
return if (path.endsWith(".apk", true)) {
|
||||
val packageInfo = activity.packageManager.getPackageArchiveInfo(path, PackageManager.GET_ACTIVITIES)
|
||||
if (packageInfo != null) {
|
||||
val appInfo = packageInfo.applicationInfo
|
||||
val appInfo = packageInfo?.applicationInfo
|
||||
if (appInfo != null) {
|
||||
appInfo.sourceDir = path
|
||||
appInfo.publicSourceDir = path
|
||||
appInfo.loadIcon(activity.packageManager)
|
||||
|
||||
@@ -720,6 +720,8 @@ class ItemsAdapter(
|
||||
paths.forEach { path ->
|
||||
val zipInputStream =
|
||||
ZipInputStream(BufferedInputStream(activity.getFileInputStreamSync(path)))
|
||||
|
||||
val foldersTimestamp = mutableListOf<Pair<File, LocalFileHeader>>()
|
||||
zipInputStream.use {
|
||||
try {
|
||||
var entry = zipInputStream.nextEntry
|
||||
@@ -740,7 +742,7 @@ class ItemsAdapter(
|
||||
if (activity.getIsPathDirectory(path)) {
|
||||
activity.deleteFolderBg(fileDirItem, false) {
|
||||
if (it) {
|
||||
extractEntry(newPath, entry, zipInputStream)
|
||||
extractEntry(newPath, entry, zipInputStream, foldersTimestamp)
|
||||
} else {
|
||||
callback(false)
|
||||
}
|
||||
@@ -748,18 +750,21 @@ class ItemsAdapter(
|
||||
} else {
|
||||
activity.deleteFileBg(fileDirItem, false, false) {
|
||||
if (it) {
|
||||
extractEntry(newPath, entry, zipInputStream)
|
||||
extractEntry(newPath, entry, zipInputStream, foldersTimestamp)
|
||||
} else {
|
||||
callback(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (!doesPathExist) {
|
||||
extractEntry(newPath, entry, zipInputStream)
|
||||
extractEntry(newPath, entry, zipInputStream, foldersTimestamp)
|
||||
}
|
||||
|
||||
entry = zipInputStream.nextEntry
|
||||
}
|
||||
for ((dir, header) in foldersTimestamp.asReversed()) {
|
||||
dir.setLastModified(header)
|
||||
}
|
||||
callback(true)
|
||||
} catch (e: Exception) {
|
||||
activity.showErrorToast(e)
|
||||
@@ -772,13 +777,16 @@ class ItemsAdapter(
|
||||
private fun extractEntry(
|
||||
newPath: String,
|
||||
entry: LocalFileHeader,
|
||||
zipInputStream: ZipInputStream
|
||||
zipInputStream: ZipInputStream,
|
||||
foldersTimestamp: MutableList<Pair<File, LocalFileHeader>>
|
||||
) {
|
||||
if (entry.isDirectory) {
|
||||
if (!activity.createDirectorySync(newPath) && !activity.getDoesFilePathExist(newPath)) {
|
||||
val error =
|
||||
String.format(activity.getString(R.string.could_not_create_file), newPath)
|
||||
activity.showErrorToast(error)
|
||||
} else {
|
||||
foldersTimestamp.add(Pair(File(newPath), entry))
|
||||
}
|
||||
} else {
|
||||
val fos = activity.getFileOutputStreamSync(newPath, newPath.getMimeType())
|
||||
@@ -1116,8 +1124,8 @@ class ItemsAdapter(
|
||||
var itemToLoad = if (path.endsWith(".apk", true)) {
|
||||
val packageInfo =
|
||||
activity.packageManager.getPackageArchiveInfo(path, PackageManager.GET_ACTIVITIES)
|
||||
if (packageInfo != null) {
|
||||
val appInfo = packageInfo.applicationInfo
|
||||
val appInfo = packageInfo?.applicationInfo
|
||||
if (appInfo != null) {
|
||||
appInfo.sourceDir = path
|
||||
appInfo.publicSourceDir = path
|
||||
appInfo.loadIcon(activity.packageManager)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package org.fossify.filemanager.adapters
|
||||
|
||||
import android.view.*
|
||||
import android.widget.PopupMenu
|
||||
import androidx.appcompat.widget.PopupMenu
|
||||
import org.fossify.commons.activities.BaseSimpleActivity
|
||||
import org.fossify.commons.adapters.MyRecyclerViewAdapter
|
||||
import org.fossify.commons.extensions.getPopupMenuTheme
|
||||
|
||||
@@ -24,7 +24,6 @@ class ViewPagerAdapter(val activity: SimpleActivity, val tabsToShow: ArrayList<I
|
||||
val isPickRingtoneIntent = activity.intent.action == RingtoneManager.ACTION_RINGTONE_PICKER
|
||||
val isGetContentIntent = activity.intent.action == Intent.ACTION_GET_CONTENT
|
||||
|| activity.intent.action == Intent.ACTION_PICK
|
||||
|| activity.intent.action == Intent.ACTION_OPEN_DOCUMENT
|
||||
val isCreateDocumentIntent = activity.intent.action == Intent.ACTION_CREATE_DOCUMENT
|
||||
val allowPickingMultipleIntent = activity.intent.getBooleanExtra(Intent.EXTRA_ALLOW_MULTIPLE, false)
|
||||
val getContentMimeType = if (isGetContentIntent) {
|
||||
|
||||
@@ -2,8 +2,6 @@ package org.fossify.filemanager.extensions
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Intent
|
||||
import android.view.View
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.content.FileProvider
|
||||
import org.fossify.commons.activities.BaseSimpleActivity
|
||||
import org.fossify.commons.extensions.getFilenameFromPath
|
||||
@@ -85,27 +83,3 @@ fun BaseSimpleActivity.toggleItemVisibility(oldPath: String, hide: Boolean, call
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun AppCompatActivity.showSystemUI(toggleActionBarVisibility: Boolean) {
|
||||
if (toggleActionBarVisibility) {
|
||||
supportActionBar?.show()
|
||||
}
|
||||
|
||||
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
|
||||
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or
|
||||
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
||||
}
|
||||
|
||||
fun AppCompatActivity.hideSystemUI(toggleActionBarVisibility: Boolean) {
|
||||
if (toggleActionBarVisibility) {
|
||||
supportActionBar?.hide()
|
||||
}
|
||||
|
||||
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
|
||||
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or
|
||||
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or
|
||||
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
|
||||
View.SYSTEM_UI_FLAG_LOW_PROFILE or
|
||||
View.SYSTEM_UI_FLAG_FULLSCREEN or
|
||||
View.SYSTEM_UI_FLAG_IMMERSIVE
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
package org.fossify.filemanager.extensions
|
||||
|
||||
import java.text.DecimalFormat
|
||||
|
||||
// use 1000 instead of 1024 at dividing
|
||||
fun Long.formatSizeThousand(): String {
|
||||
if (this <= 0) {
|
||||
return "0 B"
|
||||
}
|
||||
|
||||
val units = arrayOf("B", "kB", "MB", "GB", "TB")
|
||||
val digitGroups = (Math.log10(toDouble()) / Math.log10(1000.0)).toInt()
|
||||
return "${DecimalFormat("#,##0.#").format(this / Math.pow(1000.0, digitGroups.toDouble()))} ${units[digitGroups]}"
|
||||
}
|
||||
@@ -1,3 +1,15 @@
|
||||
package org.fossify.filemanager.extensions
|
||||
|
||||
fun String.isZipFile() = endsWith(".zip", true)
|
||||
|
||||
fun String.isPathInHiddenFolder(): Boolean {
|
||||
val parts = split("/")
|
||||
for (i in 1 until parts.size - 1) {
|
||||
val part = parts[i]
|
||||
val isHidden = part.startsWith(".") && part != "." && part != ".." && part.isNotEmpty()
|
||||
if (isHidden) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
@@ -257,7 +257,7 @@ class ItemsFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerF
|
||||
}
|
||||
|
||||
var lastModified = lastModifieds.remove(curPath)
|
||||
val isDirectory = if (lastModified != null) false else file.isDirectory
|
||||
val isDirectory = file.isDirectory
|
||||
val children = if (isDirectory && getProperChildCount) file.getDirectChildrenCount(context, showHidden) else 0
|
||||
val size = if (isDirectory) {
|
||||
if (isSortingBySize) {
|
||||
@@ -377,6 +377,7 @@ class ItemsFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerF
|
||||
return files
|
||||
}
|
||||
|
||||
val normalizedText = text.normalizeString()
|
||||
val sorting = context!!.config.getFolderSorting(path)
|
||||
FileDirItem.sorting = context!!.config.getFolderSorting(currentPath)
|
||||
val isSortingBySize = sorting and SORT_BY_SIZE != 0
|
||||
@@ -386,7 +387,7 @@ class ItemsFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerF
|
||||
}
|
||||
|
||||
if (it.isDirectory) {
|
||||
if (it.name.contains(text, true)) {
|
||||
if (it.name.normalizeString().contains(normalizedText, true)) {
|
||||
val fileDirItem = getListItemFromFile(it, isSortingBySize, HashMap(), false)
|
||||
if (fileDirItem != null) {
|
||||
files.add(fileDirItem)
|
||||
@@ -395,7 +396,7 @@ class ItemsFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerF
|
||||
|
||||
files.addAll(searchFiles(text, it.absolutePath))
|
||||
} else {
|
||||
if (it.name.contains(text, true)) {
|
||||
if (it.name.normalizeString().contains(normalizedText, true)) {
|
||||
val fileDirItem = getListItemFromFile(it, isSortingBySize, HashMap(), false)
|
||||
if (fileDirItem != null) {
|
||||
files.add(fileDirItem)
|
||||
|
||||
@@ -12,6 +12,7 @@ import org.fossify.commons.extensions.getDoesFilePathExist
|
||||
import org.fossify.commons.extensions.getFilenameFromPath
|
||||
import org.fossify.commons.extensions.getLongValue
|
||||
import org.fossify.commons.extensions.getStringValue
|
||||
import org.fossify.commons.extensions.normalizeString
|
||||
import org.fossify.commons.extensions.showErrorToast
|
||||
import org.fossify.commons.helpers.VIEW_TYPE_GRID
|
||||
import org.fossify.commons.helpers.VIEW_TYPE_LIST
|
||||
@@ -24,6 +25,7 @@ import org.fossify.filemanager.activities.SimpleActivity
|
||||
import org.fossify.filemanager.adapters.ItemsAdapter
|
||||
import org.fossify.filemanager.databinding.RecentsFragmentBinding
|
||||
import org.fossify.filemanager.extensions.config
|
||||
import org.fossify.filemanager.extensions.isPathInHiddenFolder
|
||||
import org.fossify.filemanager.helpers.MAX_COLUMN_COUNT
|
||||
import org.fossify.filemanager.interfaces.ItemOperationsListener
|
||||
import org.fossify.filemanager.models.ListItem
|
||||
@@ -178,9 +180,11 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
|
||||
val name = cursor.getStringValue(FileColumns.DISPLAY_NAME) ?: path.getFilenameFromPath()
|
||||
val size = cursor.getLongValue(FileColumns.SIZE)
|
||||
val modified = cursor.getLongValue(FileColumns.DATE_MODIFIED) * 1000
|
||||
val fileDirItem = ListItem(path, name, false, 0, size, modified, false, false)
|
||||
if ((showHidden || !name.startsWith(".")) && activity?.getDoesFilePathExist(path) == true) {
|
||||
val isHiddenFile = name.startsWith(".")
|
||||
val shouldShow = showHidden || (!isHiddenFile && !path.isPathInHiddenFolder())
|
||||
if (shouldShow && activity?.getDoesFilePathExist(path) == true) {
|
||||
if (wantedMimeTypes.any { isProperMimeType(it, path, false) }) {
|
||||
val fileDirItem = ListItem(path, name, false, 0, size, modified, false, false)
|
||||
listItems.add(fileDirItem)
|
||||
}
|
||||
}
|
||||
@@ -242,7 +246,11 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
|
||||
|
||||
override fun searchQueryChanged(text: String) {
|
||||
lastSearchedText = text
|
||||
val filtered = filesIgnoringSearch.filter { it.mName.contains(text, true) }.toMutableList() as ArrayList<ListItem>
|
||||
val normalizedText = text.normalizeString()
|
||||
val filtered = filesIgnoringSearch.filter {
|
||||
it.mName.normalizeString().contains(normalizedText, true)
|
||||
}.toMutableList() as ArrayList<ListItem>
|
||||
|
||||
binding.apply {
|
||||
(recentsList.adapter as? ItemsAdapter)?.updateItems(filtered, text)
|
||||
recentsPlaceholder.beVisibleIf(filtered.isEmpty())
|
||||
|
||||
@@ -28,6 +28,7 @@ import org.fossify.commons.extensions.getLongValue
|
||||
import org.fossify.commons.extensions.getProperBackgroundColor
|
||||
import org.fossify.commons.extensions.getProperPrimaryColor
|
||||
import org.fossify.commons.extensions.getStringValue
|
||||
import org.fossify.commons.extensions.normalizeString
|
||||
import org.fossify.commons.extensions.queryCursor
|
||||
import org.fossify.commons.extensions.showErrorToast
|
||||
import org.fossify.commons.extensions.updateTextColors
|
||||
@@ -45,7 +46,6 @@ import org.fossify.filemanager.adapters.ItemsAdapter
|
||||
import org.fossify.filemanager.databinding.ItemStorageVolumeBinding
|
||||
import org.fossify.filemanager.databinding.StorageFragmentBinding
|
||||
import org.fossify.filemanager.extensions.config
|
||||
import org.fossify.filemanager.extensions.formatSizeThousand
|
||||
import org.fossify.filemanager.extensions.getAllVolumeNames
|
||||
import org.fossify.filemanager.helpers.ARCHIVES
|
||||
import org.fossify.filemanager.helpers.AUDIO
|
||||
@@ -64,8 +64,10 @@ import org.fossify.filemanager.interfaces.ItemOperationsListener
|
||||
import org.fossify.filemanager.models.ListItem
|
||||
import java.util.Locale
|
||||
|
||||
class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerFragment<MyViewPagerFragment.StorageInnerBinding>(context, attributeSet),
|
||||
ItemOperationsListener {
|
||||
class StorageFragment(
|
||||
context: Context,
|
||||
attributeSet: AttributeSet
|
||||
) : MyViewPagerFragment<MyViewPagerFragment.StorageInnerBinding>(context, attributeSet), ItemOperationsListener {
|
||||
private val SIZE_DIVIDER = 100000
|
||||
private var allDeviceListItems = ArrayList<ListItem>()
|
||||
private var lastSearchedText = ""
|
||||
@@ -95,7 +97,6 @@ class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
|
||||
}
|
||||
|
||||
totalSpace.text = String.format(context.getString(R.string.total_storage), "…")
|
||||
getSizes(volumeName)
|
||||
|
||||
if (volumeNames.size > 1) {
|
||||
root.children.forEach { it.beGone() }
|
||||
@@ -155,8 +156,7 @@ class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
|
||||
val tealColor = context.resources.getColor(R.color.md_teal_700)
|
||||
val pinkColor = context.resources.getColor(R.color.md_pink_700)
|
||||
|
||||
volumes.entries.forEach { (it, volumeBinding) ->
|
||||
getSizes(it)
|
||||
volumes.values.forEach { volumeBinding ->
|
||||
volumeBinding.apply {
|
||||
mainStorageUsageProgressbar.setIndicatorColor(properPrimaryColor)
|
||||
mainStorageUsageProgressbar.trackColor = properPrimaryColor.adjustAlpha(LOWER_ALPHA)
|
||||
@@ -253,7 +253,8 @@ class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
|
||||
try {
|
||||
context.queryCursor(uri, projection) { cursor ->
|
||||
try {
|
||||
val mimeType = cursor.getStringValue(MediaStore.Files.FileColumns.MIME_TYPE)?.lowercase(Locale.getDefault())
|
||||
val mimeType =
|
||||
cursor.getStringValue(MediaStore.Files.FileColumns.MIME_TYPE)?.lowercase(Locale.getDefault())
|
||||
val size = cursor.getLongValue(MediaStore.Files.FileColumns.SIZE)
|
||||
if (mimeType == null) {
|
||||
if (size > 0 && size != 4096L) {
|
||||
@@ -310,7 +311,8 @@ class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
|
||||
if (storageVolume.isPrimary) {
|
||||
// internal storage
|
||||
volumeName = PRIMARY_VOLUME_NAME
|
||||
val storageStatsManager = context.getSystemService(AppCompatActivity.STORAGE_STATS_SERVICE) as StorageStatsManager
|
||||
val storageStatsManager =
|
||||
context.getSystemService(AppCompatActivity.STORAGE_STATS_SERVICE) as StorageStatsManager
|
||||
val uuid = StorageManager.UUID_DEFAULT
|
||||
totalStorageSpace = storageStatsManager.getTotalBytes(uuid)
|
||||
freeStorageSpace = storageStatsManager.getFreeBytes(uuid)
|
||||
@@ -323,24 +325,33 @@ class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
|
||||
post {
|
||||
volumes[volumeName]?.apply {
|
||||
arrayOf(
|
||||
mainStorageUsageProgressbar, imagesProgressbar, videosProgressbar, audioProgressbar, documentsProgressbar,
|
||||
archivesProgressbar, othersProgressbar
|
||||
mainStorageUsageProgressbar,
|
||||
imagesProgressbar,
|
||||
videosProgressbar,
|
||||
audioProgressbar,
|
||||
documentsProgressbar,
|
||||
archivesProgressbar,
|
||||
othersProgressbar
|
||||
).forEach {
|
||||
it.max = (totalStorageSpace / SIZE_DIVIDER).toInt()
|
||||
}
|
||||
|
||||
mainStorageUsageProgressbar.progress = ((totalStorageSpace - freeStorageSpace) / SIZE_DIVIDER).toInt()
|
||||
mainStorageUsageProgressbar.progress =
|
||||
((totalStorageSpace - freeStorageSpace) / SIZE_DIVIDER).toInt()
|
||||
|
||||
mainStorageUsageProgressbar.beVisible()
|
||||
freeSpaceValue.text = freeStorageSpace.formatSizeThousand()
|
||||
totalSpace.text = String.format(context.getString(R.string.total_storage), totalStorageSpace.formatSizeThousand())
|
||||
freeSpaceValue.text = freeStorageSpace.formatSize()
|
||||
totalSpace.text =
|
||||
String.format(context.getString(R.string.total_storage), totalStorageSpace.formatSize())
|
||||
freeSpaceLabel.beVisible()
|
||||
getSizes(volumeName)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun searchQueryChanged(text: String) {
|
||||
val normalizedText = text.normalizeString()
|
||||
lastSearchedText = text
|
||||
binding.apply {
|
||||
if (text.isNotEmpty()) {
|
||||
@@ -365,8 +376,10 @@ class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
|
||||
} else {
|
||||
showProgressBar()
|
||||
ensureBackgroundThread {
|
||||
val start = System.currentTimeMillis()
|
||||
val filtered = allDeviceListItems.filter { it.mName.contains(text, true) }.toMutableList() as ArrayList<ListItem>
|
||||
val filtered = allDeviceListItems.filter {
|
||||
it.mName.normalizeString().contains(normalizedText, true)
|
||||
}.toMutableList() as ArrayList<ListItem>
|
||||
|
||||
if (lastSearchedText != text) {
|
||||
return@ensureBackgroundThread
|
||||
}
|
||||
|
||||
@@ -5,22 +5,29 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/decompress_toolbar"
|
||||
<org.fossify.commons.views.MyAppBarLayout
|
||||
android:id="@+id/decompress_appbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="@color/color_primary"
|
||||
app:menu="@menu/menu_decompress"
|
||||
app:title="@string/decompress"
|
||||
app:titleTextAppearance="@style/AppTheme.ActionBar.TitleTextStyle" />
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/decompress_toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="@color/color_primary"
|
||||
app:menu="@menu/menu_decompress"
|
||||
app:title="@string/decompress"
|
||||
app:titleTextAppearance="@style/AppTheme.ActionBar.TitleTextStyle" />
|
||||
|
||||
</org.fossify.commons.views.MyAppBarLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/decompress_wrapper"
|
||||
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">
|
||||
|
||||
<org.fossify.commons.views.MyRecyclerView
|
||||
android:id="@+id/decompress_list"
|
||||
|
||||
@@ -6,22 +6,29 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/manage_favorites_toolbar"
|
||||
<org.fossify.commons.views.MyAppBarLayout
|
||||
android:id="@+id/manage_favorites_appbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="@color/color_primary"
|
||||
app:menu="@menu/menu_favorites"
|
||||
app:title="@string/manage_favorites"
|
||||
app:titleTextAppearance="@style/AppTheme.ActionBar.TitleTextStyle" />
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/manage_favorites_toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="@color/color_primary"
|
||||
app:menu="@menu/menu_favorites"
|
||||
app:title="@string/manage_favorites"
|
||||
app:titleTextAppearance="@style/AppTheme.ActionBar.TitleTextStyle" />
|
||||
|
||||
</org.fossify.commons.views.MyAppBarLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/manage_favorites_holder"
|
||||
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">
|
||||
|
||||
<org.fossify.commons.views.MyRecyclerView
|
||||
android:id="@+id/manage_favorites_list"
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
android:id="@+id/main_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginTop="?attr/actionBarSize">
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
||||
|
||||
<org.fossify.commons.views.MyViewPager
|
||||
android:id="@+id/main_view_pager"
|
||||
|
||||
@@ -5,21 +5,28 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/mimetypes_toolbar"
|
||||
<org.fossify.commons.views.MyAppBarLayout
|
||||
android:id="@+id/mimetypes_appbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="@color/color_primary"
|
||||
app:menu="@menu/menu_mimetypes"
|
||||
app:titleTextAppearance="@style/AppTheme.ActionBar.TitleTextStyle" />
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/mimetypes_toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="@color/color_primary"
|
||||
app:menu="@menu/menu_mimetypes"
|
||||
app:titleTextAppearance="@style/AppTheme.ActionBar.TitleTextStyle" />
|
||||
|
||||
</org.fossify.commons.views.MyAppBarLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/mimetypes_holder"
|
||||
android:layout_width="wrap_content"
|
||||
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">
|
||||
|
||||
<org.fossify.commons.views.MyTextView
|
||||
android:id="@+id/mimetypes_placeholder"
|
||||
|
||||
@@ -5,23 +5,30 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/read_text_toolbar"
|
||||
<org.fossify.commons.views.MyAppBarLayout
|
||||
android:id="@+id/read_text_appbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="@color/color_primary"
|
||||
app:menu="@menu/menu_editor"
|
||||
app:title="@string/file_editor"
|
||||
app:titleTextAppearance="@style/AppTheme.ActionBar.TitleTextStyle" />
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/read_text_toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="@color/color_primary"
|
||||
app:menu="@menu/menu_editor"
|
||||
app:title="@string/file_editor"
|
||||
app:titleTextAppearance="@style/AppTheme.ActionBar.TitleTextStyle" />
|
||||
|
||||
</org.fossify.commons.views.MyAppBarLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/read_text_wrapper"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="?attr/actionBarSize"
|
||||
android:fillViewport="true"
|
||||
android:orientation="vertical"
|
||||
android:scrollbars="none">
|
||||
android:scrollbars="none"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
||||
|
||||
<include
|
||||
android:id="@+id/search_wrapper"
|
||||
|
||||
@@ -5,18 +5,25 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/activity_save_as_toolbar"
|
||||
<org.fossify.commons.views.MyAppBarLayout
|
||||
android:id="@+id/activity_save_as_appbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="@color/color_primary"
|
||||
app:title="@string/save_as"
|
||||
app:titleTextAppearance="@style/AppTheme.ActionBar.TitleTextStyle" />
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/activity_save_as_toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="@color/color_primary"
|
||||
app:title="@string/save_as"
|
||||
app:titleTextAppearance="@style/AppTheme.ActionBar.TitleTextStyle" />
|
||||
|
||||
</org.fossify.commons.views.MyAppBarLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/activity_save_as_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginTop="?attr/actionBarSize" />
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
@@ -6,21 +6,28 @@
|
||||
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: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: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="match_parent"
|
||||
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"
|
||||
@@ -63,6 +70,11 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/general_settings" />
|
||||
|
||||
<org.fossify.commons.views.PurchaseThankYouItem
|
||||
android:id="@+id/settings_purchase_thank_you_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_use_english_holder"
|
||||
style="@style/SettingsHolderSwitchStyle"
|
||||
|
||||
@@ -11,8 +11,13 @@
|
||||
<item
|
||||
android:id="@+id/menu_save"
|
||||
android:icon="@drawable/ic_save_vector"
|
||||
android:title="@string/save_as"
|
||||
android:title="@string/save"
|
||||
app:showAsAction="always" />
|
||||
<item
|
||||
android:id="@+id/menu_save_as"
|
||||
android:showAsAction="never"
|
||||
android:title="@string/save_as"
|
||||
app:showAsAction="never" />
|
||||
<item
|
||||
android:id="@+id/menu_print"
|
||||
android:icon="@drawable/ic_print_vector"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_launcher_name">مدير الملفات</string>
|
||||
<string name="press_back_again">اضغط مرة أخرى للخروج</string>
|
||||
<string name="press_back_again">انقر مرة أخرى للخروج</string>
|
||||
<string name="go_to_home_folder">اذهب إلى المجلد المنزل</string>
|
||||
<string name="set_as_home_folder">عيّن كمجلد المنزل</string>
|
||||
<string name="home_folder_updated">حُدِّث مجلد المنزل</string>
|
||||
|
||||
@@ -1,2 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
||||
<resources>
|
||||
<string name="audio">Audio</string>
|
||||
</resources>
|
||||
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="go_to_home_folder">راو و دوبلگه هووه</string>
|
||||
<string name="set_as_home_folder">سامووݩ و عونوان دوبلگه هووه</string>
|
||||
<string name="copy_path">لف گیری تور منه کیلیپ بورد</string>
|
||||
<string name="app_launcher_name">دؽوۉداری فایل</string>
|
||||
<string name="path_copied">تور لف گیری وابی</string>
|
||||
<string name="select_audio_file">فایل آرنگی ن پسند کۊنین</string>
|
||||
<string name="search_folder">پیتینیڌن دوبلگه</string>
|
||||
<string name="recents">دیندا</string>
|
||||
<string name="show_recents">نشووݩ داڌن مووردا دیندایی</string>
|
||||
<string name="invert_colors">چواسه کردن رنگا</string>
|
||||
<string name="open_as">گۊشیڌن و عونوان</string>
|
||||
<string name="text_file">فایل هؽلی</string>
|
||||
<string name="image_file">فایل شؽواتی</string>
|
||||
<string name="audio_file">فایل آرنگی</string>
|
||||
<string name="video_file">فایل ویدیویی</string>
|
||||
<string name="other_file">فایل دیری</string>
|
||||
<string name="press_back_again">سی و در زیڌن، ز نۊ دویمه وورگشتن ن بزنین</string>
|
||||
<string name="home_folder_updated">دوبلگه هووه ورۊ رسۊوی وابی</string>
|
||||
<string name="audio">دونگ</string>
|
||||
</resources>
|
||||
@@ -6,7 +6,7 @@
|
||||
<string name="set_as_home_folder">Estableix com a carpeta d\'inici</string>
|
||||
<string name="home_folder_updated">S\'ha actualitzat la carpeta d\'inici</string>
|
||||
<string name="copy_path">Copia el camí al porta-retalls</string>
|
||||
<string name="path_copied">S\'ha copiat el camí</string>
|
||||
<string name="path_copied">Ruta copiada</string>
|
||||
<string name="select_audio_file">Seleccioneu un fitxer d\'àudio</string>
|
||||
<string name="search_folder">Cerca carpeta</string>
|
||||
<string name="rooted_device_only">Aquesta operació només funciona en dispositius amb «root»</string>
|
||||
@@ -44,4 +44,4 @@
|
||||
<string name="press_back_twice">Cal que premeu Enrere dues vegades per a sortir de l\'aplicació</string>
|
||||
<string name="documents">Documents</string>
|
||||
<string name="recents">Recents</string>
|
||||
</resources>
|
||||
</resources>
|
||||
@@ -1,4 +1,29 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_launcher_name">بەڕێوەبەری فایل</string>
|
||||
</resources>
|
||||
<string name="app_launcher_name">بەڕێوەبەری پەڕگە</string>
|
||||
<string name="press_back_again">بۆ دەرچوون دووبارە گەڕانەوە داگرە</string>
|
||||
<string name="recents">دوایین</string>
|
||||
<string name="open_as">کردنەوە وەک</string>
|
||||
<string name="text_file">پەڕگەی دەقی</string>
|
||||
<string name="image_file">پەڕگەی وێنەیی</string>
|
||||
<string name="audio_file">پەڕگەی دەنگی</string>
|
||||
<string name="video_file">پەڕگەی ڤیدیۆیی</string>
|
||||
<string name="other_file">پەڕگەی دیکە</string>
|
||||
<string name="compress">پەستان</string>
|
||||
<string name="decompress">شیتەڵکردنەوە</string>
|
||||
<string name="compress_as">بیپەستە وەک</string>
|
||||
<string name="compressing">دەیپەستێت…</string>
|
||||
<string name="decompressing">شیتەڵی دەکاتەوە…</string>
|
||||
<string name="compression_successful">پەستانەکە سەرکەوت</string>
|
||||
<string name="decompression_successful">شیتەڵکردنەوەکە سەرکەوت</string>
|
||||
<string name="file_editor">دەستکاریکەری پەڕگە</string>
|
||||
<string name="images">وێنەکان</string>
|
||||
<string name="videos">ڤیدیۆکان</string>
|
||||
<string name="audio">دەنگ</string>
|
||||
<string name="documents">بەڵگەنامەکان</string>
|
||||
<string name="downloads">داگیراوەکان</string>
|
||||
<string name="archives">ئەرشیفەکان</string>
|
||||
<string name="others">ئیتکە</string>
|
||||
<string name="storage_free">بەتاڵە</string>
|
||||
<string name="total_storage">سەرجەمی بیرگە: %s</string>
|
||||
</resources>
|
||||
@@ -37,7 +37,7 @@
|
||||
<string name="videos">Videa</string>
|
||||
<string name="audio">Zvuk</string>
|
||||
<string name="documents">Dokumenty</string>
|
||||
<string name="downloads">Stažené</string>
|
||||
<string name="downloads">Stahování</string>
|
||||
<string name="archives">Archivy</string>
|
||||
<string name="others">Ostatní</string>
|
||||
<string name="storage_free">volné</string>
|
||||
|
||||
@@ -28,11 +28,11 @@
|
||||
<string name="decompression_successful">Dekomprimeret</string>
|
||||
<string name="compressing_failed">Komprimering mislykkedes</string>
|
||||
<string name="decompressing_failed">Dekomprimering mislykkedes</string>
|
||||
<string name="manage_favorites">Håndter favoritter</string>
|
||||
<string name="manage_favorites">Administrer favoritter</string>
|
||||
<string name="go_to_favorite">Gå til favorit</string>
|
||||
<string name="favorites_activity_placeholder">Du kan føje ofte brugte mapper til favoritter, så du hurtigt kan finde dem igen.</string>
|
||||
<string name="favorites_activity_placeholder">Du kan føje ofte brugte mapper til favoritter for nem adgang overalt.</string>
|
||||
<string name="file_editor">Fileditor</string>
|
||||
<string name="storage_analysis">Lagersanalyse</string>
|
||||
<string name="storage_analysis">Lagringsanalyse</string>
|
||||
<string name="images">Billeder</string>
|
||||
<string name="videos">Videoer</string>
|
||||
<string name="audio">Lyd</string>
|
||||
@@ -42,6 +42,6 @@
|
||||
<string name="others">Andre</string>
|
||||
<string name="storage_free">fri</string>
|
||||
<string name="total_storage">Samlet lagerplads: %s</string>
|
||||
<string name="enable_root_access">Aktiver root-adgang</string>
|
||||
<string name="press_back_twice">Kræv to tryk på tilbage for at forlade appen</string>
|
||||
<string name="enable_root_access">Aktivér root-adgang</string>
|
||||
<string name="press_back_twice">Dobbelttryk på Tilbage for at afslutte appen</string>
|
||||
</resources>
|
||||
@@ -9,7 +9,7 @@
|
||||
<string name="path_copied">Η διαδρομή αντιγράφηκε</string>
|
||||
<string name="select_audio_file">Επιλέξτε ένα αρχείο ήχου</string>
|
||||
<string name="search_folder">Αναζήτηση φακέλου</string>
|
||||
<string name="rooted_device_only">Αυτό το χαρακτηριστικό λειτουργεί μόνο σε συσκευές με πρόσβαση στον ριζικό κατάλογο.</string>
|
||||
<string name="rooted_device_only">Αυτό το χαρακτηριστικό λειτουργεί μόνο σε συσκευές με πρόσβαση στον ριζικό κατάλογο</string>
|
||||
<string name="recents">Πρόσφατα</string>
|
||||
<string name="show_recents">Εμφάνιση προσφάτων</string>
|
||||
<string name="invert_colors">Αντιστροφή χρωμάτων</string>
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_launcher_name">File Manager</string>
|
||||
<string name="invert_colors">Invert colours</string>
|
||||
<string name="audio">Audio</string>
|
||||
<string name="press_back_again">Press back again to exit</string>
|
||||
<string name="go_to_home_folder">Go to home folder</string>
|
||||
<string name="set_as_home_folder">Set as home folder</string>
|
||||
</resources>
|
||||
@@ -1,2 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
||||
<resources>
|
||||
<string name="app_launcher_name">Gestor de archivos</string>
|
||||
<string name="press_back_again">Presione hacia atrás nuevamente para salir</string>
|
||||
<string name="go_to_home_folder">Ir a la carpeta de inicio</string>
|
||||
</resources>
|
||||
@@ -1,5 +1,47 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="images">تصاویر</string>
|
||||
<string name="audio">صدا</string>
|
||||
</resources>
|
||||
<string name="audio">صوت</string>
|
||||
<string name="app_launcher_name">مدیریت فایل ها</string>
|
||||
<string name="press_back_again">برای خروج دوباره بازگشت را بزنید</string>
|
||||
<string name="go_to_home_folder">رفتن به پوشهٔ خانه</string>
|
||||
<string name="set_as_home_folder">تنظیم به عنوان پوشهٔ خانه</string>
|
||||
<string name="home_folder_updated">پوشهٔ خانه بهروزرسانی شد</string>
|
||||
<string name="copy_path">رونوشت مسیر در کلیپبورد</string>
|
||||
<string name="path_copied">مسیر رونوشت شد</string>
|
||||
<string name="select_audio_file">لطفاً یک پرونده صوتی انتخاب کنید</string>
|
||||
<string name="search_folder">جستوجوی پوشه</string>
|
||||
<string name="rooted_device_only">این عملیات فقط روی دستگاههای روتشده کار میکند</string>
|
||||
<string name="recents">موارد اخیر</string>
|
||||
<string name="show_recents">نمایش موارد اخیر</string>
|
||||
<string name="invert_colors">وارون کردن رنگها</string>
|
||||
<string name="open_as">باز کردن به عنوان</string>
|
||||
<string name="text_file">پرونده متنی</string>
|
||||
<string name="image_file">پرونده تصویری</string>
|
||||
<string name="audio_file">پرونده صوتی</string>
|
||||
<string name="video_file">پرونده ویدیویی</string>
|
||||
<string name="other_file">پرونده دیگر</string>
|
||||
<string name="compress">فشردهسازی</string>
|
||||
<string name="decompress">خارجسازی از حالت فشرده</string>
|
||||
<string name="compress_as">فشردهسازی به عنوان</string>
|
||||
<string name="compressing">در حال فشردهسازی…</string>
|
||||
<string name="decompressing">در حال خارجسازی از حالت فشرده…</string>
|
||||
<string name="compression_successful">فشردهسازی موفقیتآمیز بود</string>
|
||||
<string name="decompression_successful">خارجسازی از حالت فشرده موفقیتآمیز بود</string>
|
||||
<string name="compressing_failed">فشردهسازی ناموفق بود</string>
|
||||
<string name="decompressing_failed">خارجسازی از حالت فشرده ناموفق بود</string>
|
||||
<string name="manage_favorites">مدیریت علاقهمندیها</string>
|
||||
<string name="go_to_favorite">رفتن به علاقهمندی</string>
|
||||
<string name="favorites_activity_placeholder">میتوانید پوشههای پرکاربرد را برای دسترسی آسان از هر جا به علاقهمندیها اضافه کنید.</string>
|
||||
<string name="file_editor">ویرایشگر پرونده</string>
|
||||
<string name="storage_analysis">تحلیل فضای ذخیرهسازی</string>
|
||||
<string name="videos">ویدیوها</string>
|
||||
<string name="documents">اسناد</string>
|
||||
<string name="downloads">دانلودها</string>
|
||||
<string name="archives">آرشیوها</string>
|
||||
<string name="others">سایر</string>
|
||||
<string name="storage_free">آزاد</string>
|
||||
<string name="total_storage">کل فضای ذخیرهسازی: %s</string>
|
||||
<string name="enable_root_access">فعالسازی دسترسی روت</string>
|
||||
<string name="press_back_twice">برای خروج از برنامه، دو بار دکمهٔ بازگشت را بزنید</string>
|
||||
</resources>
|
||||
@@ -3,14 +3,14 @@
|
||||
<string name="app_launcher_name">Fájlkezelő</string>
|
||||
<string name="press_back_again">A kilépéshez nyomja meg újra a vissza gombot</string>
|
||||
<string name="go_to_home_folder">Ugrás a kezdőmappára</string>
|
||||
<string name="set_as_home_folder">Beállítás kezdőmappának</string>
|
||||
<string name="home_folder_updated">Kezdőmappa frissítve</string>
|
||||
<string name="set_as_home_folder">Beállítás főmappaként</string>
|
||||
<string name="home_folder_updated">Főmappa frissítve</string>
|
||||
<string name="copy_path">Útvonal vágólapra másolása</string>
|
||||
<string name="path_copied">Útvonal másolva</string>
|
||||
<string name="select_audio_file">Válasszon egy hangfájlt</string>
|
||||
<string name="select_audio_file">Kérem, válasszon egy hangfájlt</string>
|
||||
<string name="search_folder">Mappa keresése</string>
|
||||
<string name="rooted_device_only">Ez a művelet csak root jogosultságot támogató eszközökön működik</string>
|
||||
<string name="recents">Frissek</string>
|
||||
<string name="rooted_device_only">Ez a művelet csak root-olt eszközökön működik</string>
|
||||
<string name="recents">Legutóbbiak</string>
|
||||
<string name="show_recents">Frissek megjelenítése</string>
|
||||
<string name="invert_colors">Színek invertálása</string>
|
||||
<string name="open_as">Megnyitás másként</string>
|
||||
@@ -44,4 +44,4 @@
|
||||
<string name="total_storage">Összes tárhely: %s</string>
|
||||
<string name="enable_root_access">Root hozzáférés engedélyezése</string>
|
||||
<string name="press_back_twice">A Vissza gombot kétszer kelljen megnyomni az alkalmazásból történő kilépéshez</string>
|
||||
</resources>
|
||||
</resources>
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_launcher_name">מנהל קבצים</string>
|
||||
<string name="press_back_again">ליציאה לחץ אחורה פעם נוספת</string>
|
||||
<string name="go_to_home_folder">עבור לתיקיית הבית</string>
|
||||
<string name="app_launcher_name">מנהל הקבצים</string>
|
||||
<string name="press_back_again">ליציאה יש ללחוץ אחורה פעם נוספת</string>
|
||||
<string name="go_to_home_folder">מעבר לתיקיית הבית</string>
|
||||
<string name="set_as_home_folder">הגדר כתיקיית בית</string>
|
||||
<string name="home_folder_updated">תיקיית הבית עודכנה</string>
|
||||
<string name="copy_path">העתק נתיב ללוח</string>
|
||||
@@ -38,7 +38,7 @@
|
||||
<string name="audio">שמע</string>
|
||||
<string name="documents">מסמכים</string>
|
||||
<string name="downloads">הורדות</string>
|
||||
<string name="archives">ארכיון</string>
|
||||
<string name="archives">ארכיונים</string>
|
||||
<string name="others">אחרים</string>
|
||||
<string name="storage_free">חופשי</string>
|
||||
<string name="total_storage">שטח אחסון כולל: %s</string>
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="images">Tugniwin</string>
|
||||
<string name="videos">Tividyutin</string>
|
||||
<string name="audio">Imesli</string>
|
||||
<string name="documents">Isemliyen</string>
|
||||
<string name="downloads">Isidar</string>
|
||||
<string name="archives">Iɣbaren</string>
|
||||
<string name="others">Wiyyaḍ</string>
|
||||
<string name="storage_free">i d-yeqqimen</string>
|
||||
<string name="app_launcher_name">Amsefrak n ifuyla</string>
|
||||
<string name="compress">Tussda</string>
|
||||
<string name="open_as">Ldi am</string>
|
||||
<string name="text_file">Afaylu aḍris</string>
|
||||
<string name="image_file">Afaylu n tugna</string>
|
||||
<string name="audio_file">Afaylu n imesli</string>
|
||||
<string name="video_file">Ifuyla n uvidyu</string>
|
||||
<string name="other_file">Afaylu nniḍen</string>
|
||||
<string name="compress_as">Ssed am</string>
|
||||
<string name="recents">N melmi kan</string>
|
||||
<string name="file_editor">Amaẓrag n ufaylu</string>
|
||||
<string name="go_to_home_folder">Ddu ar ukaram agejdan</string>
|
||||
<string name="home_folder_updated">Akaram agejdan yettwalqem</string>
|
||||
<string name="copy_path">Nɣel abrid ɣer tecfawt</string>
|
||||
<string name="search_folder">Nadi akaram</string>
|
||||
<string name="rooted_device_only">Tamhelt-a tetteddu kan deg yibenkan iẓaranen</string>
|
||||
<string name="show_recents">Sken ineggura</string>
|
||||
<string name="compressing">Asekkussem…</string>
|
||||
<string name="compression_successful">Asekkussem yedda akken iwata</string>
|
||||
<string name="decompression_successful">Tukksa n usekkusem tedda akken iwata</string>
|
||||
<string name="compressing_failed">Asekkussem ur yedda ara</string>
|
||||
<string name="favorites_activity_placeholder">Tzemreḍ ad ternuḍ ikaramen yettwasqedcen s waṭas ɣer unurifen i unekcum s wudem fessusen seg yal amḍiq.</string>
|
||||
<string name="storage_analysis">Aslaḍ n tkatut</string>
|
||||
<string name="decompress">Ssef</string>
|
||||
<string name="press_back_again">Sit tikkelt-nniḍen akken ad teffɣeḍ</string>
|
||||
<string name="set_as_home_folder">Sbadu d akaram agejdan</string>
|
||||
<string name="path_copied">Abrid yettwanɣel</string>
|
||||
<string name="select_audio_file">Ma ulac aɣilif, fren afaylu ameslaw</string>
|
||||
<string name="invert_colors">Tti initen</string>
|
||||
<string name="decompressing">Tukksa n usekkussem…</string>
|
||||
<string name="decompressing_failed">Tuccḍa deg tukksa n usekkussem</string>
|
||||
<string name="manage_favorites">Sefrek inurifen</string>
|
||||
<string name="go_to_favorite">Ddu ɣer unurif</string>
|
||||
<string name="total_storage">Amḍiq n usekles amatu: %s</string>
|
||||
<string name="enable_root_access">Rmed anekcum ɣer uẓar</string>
|
||||
<string name="press_back_twice">Yessefk ad tsiteḍ snat n tikkal akken ad teffɣeḍ seg usnas</string>
|
||||
</resources>
|
||||
@@ -33,7 +33,7 @@
|
||||
<string name="video_file">비디오 파일</string>
|
||||
<string name="other_file">기타 파일</string>
|
||||
<string name="total_storage">전체 저장공간: %s</string>
|
||||
<string name="audio">음성</string>
|
||||
<string name="audio">오디오</string>
|
||||
<string name="storage_analysis">저장공간 분석</string>
|
||||
<string name="documents">문서</string>
|
||||
<string name="downloads">다운로드</string>
|
||||
@@ -43,4 +43,5 @@
|
||||
<string name="rooted_device_only">이 작업은 루팅된 기기에서만 작동합니다</string>
|
||||
<string name="recents">최근 파일</string>
|
||||
<string name="show_recents">최근 파일 보기</string>
|
||||
</resources>
|
||||
<string name="storage_free">여유 공간</string>
|
||||
</resources>
|
||||
@@ -9,7 +9,7 @@
|
||||
<string name="path_copied">Bane kopiert</string>
|
||||
<string name="select_audio_file">Vennligst velg en lydfil</string>
|
||||
<string name="search_folder">Søk etter mappe</string>
|
||||
<string name="rooted_device_only">Denne handlingen fungerer bare på rootede enheter.</string>
|
||||
<string name="rooted_device_only">Denne handlingen fungerer bare på enheter med rot-tilgang</string>
|
||||
<string name="recents">Nylige</string>
|
||||
<string name="show_recents">Vis nylige</string>
|
||||
<string name="open_as">Åpne som</string>
|
||||
@@ -40,4 +40,8 @@
|
||||
<string name="storage_free">ledig</string>
|
||||
<string name="total_storage">Total lagring: %s</string>
|
||||
<string name="enable_root_access">Aktiver root-tilgang</string>
|
||||
<string name="invert_colors">Inverter farger</string>
|
||||
<string name="storage_analysis">Lagringsanalyse</string>
|
||||
<string name="others">Andre</string>
|
||||
<string name="press_back_twice">Trykk Tilbake to ganger for å avslutte appen</string>
|
||||
</resources>
|
||||
@@ -1,2 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
||||
<resources>
|
||||
<string name="app_launcher_name">Filbehandlar</string>
|
||||
<string name="open_as">Opne som</string>
|
||||
<string name="text_file">Tekstfil</string>
|
||||
<string name="audio">Ljod</string>
|
||||
</resources>
|
||||
@@ -43,4 +43,5 @@
|
||||
<string name="total_storage">Úložisko celkom: %s</string>
|
||||
<string name="enable_root_access">Povoliť prístup ku koreňovým súborom</string>
|
||||
<string name="press_back_twice">Vyžadovať stlačenie Späť na opustenie apky dvakrát</string>
|
||||
<string name="audio">Zvuk</string>
|
||||
</resources>
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_launcher_name">Филе Манагер</string>
|
||||
<string name="app_launcher_name">Менаџер фајлова</string>
|
||||
<string name="press_back_again">Притисните поново да бисте изашли</string>
|
||||
<string name="go_to_home_folder">Идите у почетни фолдер</string>
|
||||
<string name="set_as_home_folder">Постави као почетни фолдер</string>
|
||||
|
||||
@@ -43,4 +43,5 @@
|
||||
<string name="total_storage">மொத்த சேமிப்பிடம்: %s</string>
|
||||
<string name="enable_root_access">ரூட் அணுகலை இயக்கு</string>
|
||||
<string name="press_back_twice">செயலியை வெளியேற இரண்டு முறை பின் அழுத்த கோரு</string>
|
||||
<string name="invert_colors">தலைகீழாக வண்ணங்கள்</string>
|
||||
</resources>
|
||||
@@ -1,3 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="images">รูปภาพ</string>
|
||||
<string name="videos">วิดีโอ</string>
|
||||
<string name="audio">เสียง</string>
|
||||
</resources>
|
||||
@@ -1,20 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_launcher_name">Менеджер Файлів</string>
|
||||
<string name="press_back_again">Для виходу натисніть Назад ще раз</string>
|
||||
<string name="app_launcher_name">Менеджер файлів</string>
|
||||
<string name="press_back_again">Для виходу натисніть «Назад» ще раз</string>
|
||||
<string name="go_to_home_folder">Перейти у домашню теку</string>
|
||||
<string name="set_as_home_folder">Встановити як головну теку</string>
|
||||
<string name="home_folder_updated">Головну теку оновлено</string>
|
||||
<string name="copy_path">Скопіювати шлях у буфер обміну</string>
|
||||
<string name="path_copied">Шлях скопійовано</string>
|
||||
<string name="select_audio_file">Будь ласка, оберіть аудіо файл</string>
|
||||
<string name="select_audio_file">Оберіть аудіофайл</string>
|
||||
<string name="search_folder">Шукати теку</string>
|
||||
<string name="rooted_device_only">Ця команда працює лише на пристроях з root-доступом</string>
|
||||
<string name="recents">Останні</string>
|
||||
<string name="show_recents">Показати останні</string>
|
||||
<string name="invert_colors">Інвертувати кольори</string>
|
||||
<string name="open_as">Відкрити як файл</string>
|
||||
<string name="text_file">Текстовий</string>
|
||||
<string name="open_as">Відкрити як</string>
|
||||
<string name="text_file">Текст</string>
|
||||
<string name="image_file">Зображення</string>
|
||||
<string name="audio_file">Аудіо</string>
|
||||
<string name="video_file">Відео</string>
|
||||
@@ -28,7 +28,7 @@
|
||||
<string name="decompression_successful">Успішно розпаковано</string>
|
||||
<string name="compressing_failed">Не вдалося стиснути</string>
|
||||
<string name="decompressing_failed">Не вдалося розпакувати</string>
|
||||
<string name="manage_favorites">Керувати вибраним</string>
|
||||
<string name="manage_favorites">Керувати вибраними</string>
|
||||
<string name="go_to_favorite">Перейти у вибране</string>
|
||||
<string name="favorites_activity_placeholder">Ви можете додати теки, які часто відкриваєте, у вибране, щоб швидко отримати до них доступ.</string>
|
||||
<string name="file_editor">Редактор файлів</string>
|
||||
@@ -37,11 +37,11 @@
|
||||
<string name="videos">Відео</string>
|
||||
<string name="audio">Аудіо</string>
|
||||
<string name="documents">Документи</string>
|
||||
<string name="downloads">Завантажене</string>
|
||||
<string name="downloads">Завантаження</string>
|
||||
<string name="archives">Архіви</string>
|
||||
<string name="others">Інше</string>
|
||||
<string name="storage_free">вільно</string>
|
||||
<string name="total_storage">Всього пам\'яті: %s</string>
|
||||
<string name="enable_root_access">Активувати root-доступ</string>
|
||||
<string name="press_back_twice">Натисніть «Назад» двічі, щоб вийти зі застосунку</string>
|
||||
</resources>
|
||||
<string name="press_back_twice">Вимагати натиснути «Назад» двічі, щоб вийти із застосунку</string>
|
||||
</resources>
|
||||
@@ -2,7 +2,7 @@
|
||||
<resources>
|
||||
<string name="images">Hình ảnh</string>
|
||||
<string name="home_folder_updated">Đã cập nhật thư mục chính</string>
|
||||
<string name="app_launcher_name">Quản lý tập tin</string>
|
||||
<string name="app_launcher_name">Quản lý tệp</string>
|
||||
<string name="recents">Gần đây</string>
|
||||
<string name="path_copied">Đã sao chép đường dẫn</string>
|
||||
<string name="rooted_device_only">Thao tác này chỉ hiệu quả trên các thiết bị đã root</string>
|
||||
@@ -14,7 +14,7 @@
|
||||
<string name="decompression_successful">Giải nén thành công</string>
|
||||
<string name="compressing_failed">Không thể nén</string>
|
||||
<string name="decompressing_failed">Không thể giải nén</string>
|
||||
<string name="manage_favorites">Mục yêu thích</string>
|
||||
<string name="manage_favorites">Những mục yêu thích</string>
|
||||
<string name="go_to_favorite">Mục yêu thích</string>
|
||||
<string name="go_to_home_folder">Đến thư mục chính</string>
|
||||
<string name="set_as_home_folder">Đặt làm thư mục chính</string>
|
||||
@@ -23,11 +23,11 @@
|
||||
<string name="documents">Tài liệu</string>
|
||||
<string name="downloads">Tải xuống</string>
|
||||
<string name="videos">Video</string>
|
||||
<string name="archives">File nén</string>
|
||||
<string name="archives">Tệp nén</string>
|
||||
<string name="others">Khác</string>
|
||||
<string name="press_back_again">Nhấn quay lại để thoát</string>
|
||||
<string name="search_folder">Tìm kiếm thư mục</string>
|
||||
<string name="select_audio_file">Hãy chọn một file âm thanh</string>
|
||||
<string name="select_audio_file">Hãy chọn một tệp âm thanh</string>
|
||||
<string name="copy_path">Sao chép đường dẫn</string>
|
||||
<string name="invert_colors">Đảo màu</string>
|
||||
<string name="show_recents">Hiển thị gần đây</string>
|
||||
@@ -39,9 +39,9 @@
|
||||
<string name="decompressing">Đang giải nén…</string>
|
||||
<string name="compression_successful">Nén thành công</string>
|
||||
<string name="favorites_activity_placeholder">Bạn có thể thêm các thư mục thường xuyên sử dụng vào mục yêu thích để truy cập nhanh hơn.</string>
|
||||
<string name="file_editor">Trình chỉnh sửa file</string>
|
||||
<string name="file_editor">Trình chỉnh sửa tệp</string>
|
||||
<string name="storage_free">trống</string>
|
||||
<string name="total_storage">Tổng bộ nhớ: %s</string>
|
||||
<string name="enable_root_access">Cho phép truy cập root</string>
|
||||
<string name="press_back_twice">Nhấn Quay lại hai lần để thoát ứng dụng</string>
|
||||
<string name="press_back_twice">Nhấn đúp Quay lại để thoát ứng dụng</string>
|
||||
</resources>
|
||||
@@ -43,5 +43,5 @@
|
||||
<string name="storage_free">可用</string>
|
||||
<string name="total_storage">总存储:%s</string>
|
||||
<string name="enable_root_access">启用 root 访问</string>
|
||||
<string name="press_back_twice">需要按两次返回键才能离开应用程序</string>
|
||||
<string name="press_back_twice">需要按两次返回键才能离开应用</string>
|
||||
</resources>
|
||||
@@ -1,4 +1,47 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="images">圖片</string>
|
||||
</resources>
|
||||
<string name="videos">影片</string>
|
||||
<string name="app_launcher_name">檔案管理器</string>
|
||||
<string name="press_back_again">再按一次返回以離開</string>
|
||||
<string name="go_to_home_folder">前往主資料夾</string>
|
||||
<string name="set_as_home_folder">設為主資料夾</string>
|
||||
<string name="home_folder_updated">主資料夾已更新</string>
|
||||
<string name="copy_path">路徑複製到剪貼簿</string>
|
||||
<string name="path_copied">路徑已複製</string>
|
||||
<string name="select_audio_file">請選擇一個音訊檔案</string>
|
||||
<string name="search_folder">搜尋資料夾</string>
|
||||
<string name="rooted_device_only">這個操作只對已 root 的裝置有用</string>
|
||||
<string name="recents">最近瀏覽</string>
|
||||
<string name="show_recents">顯示最近瀏覽</string>
|
||||
<string name="invert_colors">顏色反轉</string>
|
||||
<string name="open_as">開啟為</string>
|
||||
<string name="text_file">文字檔案</string>
|
||||
<string name="image_file">圖片檔案</string>
|
||||
<string name="audio_file">音源檔案</string>
|
||||
<string name="video_file">影片檔案</string>
|
||||
<string name="other_file">其他檔案</string>
|
||||
<string name="compress">壓縮</string>
|
||||
<string name="decompress">解壓縮</string>
|
||||
<string name="compress_as">壓縮為</string>
|
||||
<string name="compressing">壓縮中…</string>
|
||||
<string name="decompressing">解壓縮中…</string>
|
||||
<string name="compression_successful">壓縮成功</string>
|
||||
<string name="decompression_successful">解壓縮成功</string>
|
||||
<string name="compressing_failed">壓縮失敗</string>
|
||||
<string name="decompressing_failed">解壓縮失敗</string>
|
||||
<string name="manage_favorites">管理我的最愛</string>
|
||||
<string name="go_to_favorite">前往我的最愛</string>
|
||||
<string name="favorites_activity_placeholder">你可將常用資料夾加入我的最愛,方便從任何地方開啟。</string>
|
||||
<string name="file_editor">檔案編輯器</string>
|
||||
<string name="storage_analysis">儲存空間分析</string>
|
||||
<string name="audio">音訊</string>
|
||||
<string name="documents">文件</string>
|
||||
<string name="downloads">下載</string>
|
||||
<string name="archives">封存</string>
|
||||
<string name="others">其他</string>
|
||||
<string name="storage_free">可用空間</string>
|
||||
<string name="total_storage">總儲存空間:%s</string>
|
||||
<string name="enable_root_access">啟用 root 權限</string>
|
||||
<string name="press_back_twice">需按兩次返回鍵才能離開 app</string>
|
||||
</resources>
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_launcher_name">簡易檔案管理器</string>
|
||||
<string name="app_launcher_name">檔案管理器</string>
|
||||
<string name="press_back_again">再按一次返回以離開</string>
|
||||
<string name="go_to_home_folder">前往主資料夾</string>
|
||||
<string name="set_as_home_folder">設為主資料夾</string>
|
||||
@@ -44,4 +44,4 @@
|
||||
<string name="show_recents">顯示最近造訪</string>
|
||||
<string name="documents">文件</string>
|
||||
<string name="storage_free">可用空間</string>
|
||||
</resources>
|
||||
</resources>
|
||||
@@ -1,5 +1,4 @@
|
||||
plugins {
|
||||
alias(libs.plugins.android).apply(false)
|
||||
alias(libs.plugins.kotlinAndroid).apply(false)
|
||||
alias(libs.plugins.detekt).apply(false)
|
||||
}
|
||||
@@ -40,6 +40,11 @@ style:
|
||||
maxLineLength: 120
|
||||
excludePackageStatements: true
|
||||
excludeImportStatements: true
|
||||
ReturnCount:
|
||||
active: true
|
||||
max: 4
|
||||
excludeGuardClauses: true
|
||||
excludes: ["**/test/**", "**/androidTest/**"]
|
||||
|
||||
naming:
|
||||
FunctionNaming:
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
Cansat de gestors d'arxius que alenteixen i envaeixen la vostra privadesa? Tingueu una experiència ràpida, segura i completament personalitzable amb el gestor de fitxers Fossify. ⚡
|
||||
|
||||
🚀 DOMINEU EL MÓN DIGITAL AMB UNA NAVEGACIÓ RÀPIDA:
|
||||
• Gestioneu ràpidament els arxius amb facilitat de compressió i transferència, mantenint la vostra vida digital organitzada.
|
||||
• Accediu ràpidament a les carpetes més utilitzades amb una carpeta d'inici personalitzable i dreceres preferides.
|
||||
• Trobeu allò que necessiteu en segons amb opcions intuïtives de navegació, cerca i ordenació.
|
||||
|
||||
🔐 FORTIFIQUEU LES VOSTRES DADES AMB UNA PRIVADESA I SEGURETAT INIGUALABLES:
|
||||
• Assegureu els fitxers confidencials amb contrasenya, patró o bloqueig d'empremtes digitals per a elements ocults o tota l'aplicació.
|
||||
• No es requereix accés a internet: els vostres fitxers es mantenen privats i segurs al vostre dispositiu.
|
||||
|
||||
💾 DOMINEU L'EMMAGATZEMATGE COM UN PROFESSIONAL:
|
||||
• Netegeu l'espai amb una compressió fàcil de fitxers i carpetes per a maximitzar el potencial del dispositiu.
|
||||
• Identifiqueu i netegeu fitxers devoradors d'espai amb l'eina integrada d'anàlisi d'emmagatzematge.
|
||||
• Navegueu sense problemes pels fitxers arrel, les targetes SD i els dispositius USB per una organització total.
|
||||
|
||||
📁 OPTIMITZEU EL FLUX DE TREBALL AMB EINES ÚTILS:
|
||||
• Creeu dreceres d'escriptori per a l'accés instantani als fitxers i carpetes més utilitzats.
|
||||
• Editeu, imprimiu o llegiu documents fàcilment amb l'editor lleuger de fitxers, millorat mitjançant gestos de zoom.
|
||||
|
||||
🌈 FEU-HO VOSTRE AMB UNA PERSONALITZACIÓ INFINITA:
|
||||
• Gaudiu d'una experiència lliure d'anuncis i de codi obert que us dona el control, no dels gegants corporatius.
|
||||
• Personalitzeu els colors, temes i icones per a reflectir el vostre estil i preferències úniques.
|
||||
|
||||
Llenceu els gestors de fitxers inflats i que envaeixen la privadesa i experimenteu una veritable llibertat amb el Fossify File Manager. Descarregueu-lo ara i recupereu el control de la vostra vida digital!
|
||||
|
||||
Exploreu més aplicacions de Fossify: https://www.fossify.org
|
||||
Codi font: https://www.github.com/FossifyOrg
|
||||
Uniu-vos a la comunitat a Reddit: https://www.reddit.com/r/Fossify
|
||||
Connecteu a Telegram: https://t.me/Fossify
|
||||
@@ -0,0 +1 @@
|
||||
Explorador de fitxers senzill, lleuger i de codi font obert, funcional.
|
||||
@@ -0,0 +1,9 @@
|
||||
Changed:
|
||||
|
||||
• Compatibility updates for Android 15 & 16
|
||||
• Updated translations
|
||||
|
||||
Fixed:
|
||||
|
||||
• Fixed duplicated entries when viewing protected ZIP files
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
Changed:
|
||||
|
||||
• Updated translations
|
||||
|
||||
Fixed:
|
||||
|
||||
• Fixed an issue where existing files were overwritten when saving new files
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
Added:
|
||||
|
||||
• Added support for custom fonts
|
||||
|
||||
Changed:
|
||||
|
||||
• Updated translations
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
Changed:
|
||||
|
||||
• Updated translations
|
||||
|
||||
Fixed:
|
||||
|
||||
• Fixed file size calculations to use SI decimal units (divide by 1000)
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
Changed:
|
||||
|
||||
• Updated translations
|
||||
|
||||
Fixed:
|
||||
|
||||
• Fixed the modification of the original timestamp when decompressing folders
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
Changed:
|
||||
|
||||
• Updated translations
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
Changed:
|
||||
|
||||
• Updated translations
|
||||
|
||||
Fixed:
|
||||
|
||||
• Fixed empty storage usage bars on initial load
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
Fixed:
|
||||
|
||||
• Fixed folders showing up incorrectly as files in some cases
|
||||
@@ -0,0 +1,16 @@
|
||||
Added:
|
||||
|
||||
• Added a separate "Save as" option in the text editor
|
||||
|
||||
Changed:
|
||||
|
||||
• Save button now overwrites files directly in the text editor
|
||||
• Search now ignores accents and diacritics
|
||||
• Updated translations
|
||||
|
||||
Fixed:
|
||||
|
||||
• Fixed folders showing up incorrectly as files in the copy/move dialog
|
||||
• Fixed error when saving files with unsupported characters
|
||||
• Fixed printing text files containing a "#"
|
||||
• Fixed files in hidden folders showing up in the recent tab
|
||||
@@ -0,0 +1,8 @@
|
||||
Changed:
|
||||
|
||||
• Updated translations
|
||||
|
||||
Fixed:
|
||||
|
||||
• Fixed files from hidden folders showing up in storage tab browser
|
||||
|
||||
@@ -1 +1 @@
|
||||
Fitxategien arakatzaile arina, kode irekikoa funtsezko ezaugarriekin.
|
||||
Fitxategien arakatzaile arina, kode irekikoa funtsezko ezaugarriekin.
|
||||
@@ -0,0 +1,30 @@
|
||||
Trött på filhanterare som saktar ner dig och inkräktar på din integritet? Lås upp en blixtsnabb, säker och helt anpassningsbar upplevelse med Fossify File Manager. ⚡
|
||||
|
||||
🚀 DOMINERA DIN DIGITALA VÄRLD MED BLIXTSNABB NAVIGERING:
|
||||
- Hantera dina filer snabbt med enkla komprimerings- och överföringsfunktioner, så att ditt digitala liv hålls organiserat.
|
||||
- Få snabb åtkomst till dina mest använda mappar med anpassningsbar hemmapp och favoritgenvägar.
|
||||
- Hitta det du behöver på några sekunder med intuitiv navigering, sök- och sorteringsalternativ.
|
||||
|
||||
🔐 SKYDDA DINA DATA MED OÖVERTRÄFFAD INTEGRITET OCH SÄKERHET:
|
||||
- Säkra känsliga filer med lösenord, mönster eller fingeravtryckslås för dolda objekt eller hela appen.
|
||||
- Ingen internetåtkomst krävs - dina filer förblir privata och säkra på din enhet.
|
||||
|
||||
💾 BEHÄRSKA DIN LAGRING SOM ETT PROFFS:
|
||||
- Rensa utrymme med enkel fil- och mappkomprimering för att maximera din enhets potential.
|
||||
- Identifiera och rensa upp filer som tar upp mycket utrymme med det inbyggda verktyget för lagringsanalys.
|
||||
- Navigera sömlöst mellan rotfiler, SD-kort och USB-enheter för total organisation.
|
||||
|
||||
📁 OPTIMERA DITT ARBETSFLÖDE MED PRAKTISKA VERKTYG:
|
||||
- Skapa genvägar på skrivbordet för omedelbar åtkomst till dina mest använda filer och mappar.
|
||||
- Redigera, skriv ut eller läs dokument enkelt med den lätta filredigeraren, förbättrad med zoomgester.
|
||||
|
||||
🌈 GÖR DET TILL DITT EGET MED OÄNDLIGA ANPASSNINGSMÖJLIGHETER:
|
||||
- Njut av en annonsfri upplevelse med öppen källkod som ger dig kontroll, inte företagsjättar.
|
||||
- Anpassa färger, teman och ikoner så att de återspeglar din unika stil och dina preferenser.
|
||||
|
||||
Skippa de uppblåsta, integritetskränkande filhanterarna och upplev sann frihet med Fossify File Manager. Ladda ner nu och ta tillbaka kontrollen över ditt digitala liv!
|
||||
|
||||
Utforska fler appar av Fossify: https://www.fossify.org
|
||||
Källkod: https://www.github.com/FossifyOrg
|
||||
Gå med i gemenskapen på Reddit: https://www.reddit.com/r/Fossify
|
||||
Anslut på Telegram: https://t.me/Fossify
|
||||
@@ -1 +1 @@
|
||||
Trình quản lý file tiện, nhẹ, mã nguồn mở với các tính năng cần thiết.
|
||||
Trình quản lý tệp tiện, nhẹ, mã nguồn mở với các tính năng cần thiết.
|
||||
@@ -1,4 +1,4 @@
|
||||
厌倦了文件管理器会拖慢您的速度并侵犯您的隐私?使用 Fossify 文件管理器解锁闪电般快速、安全且完全可自定义的体验。⚡
|
||||
厌倦了文件管理器会拖慢您的速度并侵犯您的隐私?使用 Fossify File Manager 解锁闪电般快速、安全且完全可自定义的体验。⚡
|
||||
|
||||
🚀 用极快的导航主宰您的数字世界:
|
||||
• 通过简单的压缩和传输功能快速管理您的文件,使您的数字生活井然有序。
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
🔐 以无与伦比的隐私和安全性强化您的数据:
|
||||
• 使用密码锁、图案锁或指纹锁保护隐藏项目或整个应用的敏感文件。
|
||||
• 无需互联网访问——您的文件保持私密并在设备上安全。
|
||||
• 无需互联网访问 – 您的文件保持私密并在设备上安全。
|
||||
|
||||
💾 像专业人士一样掌握您的存储:
|
||||
• 通过简单的文件和文件夹压缩来释放空间,以最大限度地发挥设备的潜力。
|
||||
@@ -22,9 +22,9 @@
|
||||
• 享受无广告、开源的体验,让您而非企业巨头掌控一切。
|
||||
• 个性化颜色、主题和图标,以反映您独特的风格和偏好。
|
||||
|
||||
抛弃臃肿、侵犯隐私的文件管理器,使用 Fossify 文件管理器体验真正的自由。立即下载,重新掌控您的数字生活!
|
||||
抛弃臃肿、侵犯隐私的文件管理器,使用 Fossify File Manager 体验真正的自由。立即下载,重新掌控您的数字生活!
|
||||
|
||||
探索更多 Fossify 应用:https://www.fossify.org
|
||||
开源代码:https://www.github.com/FossifyOrg
|
||||
加入 Reddit 社区:https://www.reddit.com/r/Fossify
|
||||
在 Telegram 上联系:https://t.me/Fossify
|
||||
加入 Reddit 上的社区:https://www.reddit.com/r/Fossify
|
||||
在 Telegram 上联系我们:https://t.me/Fossify
|
||||
@@ -0,0 +1,30 @@
|
||||
厭倦了檔案管理器會拖慢您的速度並侵犯您的私私嗎?使用 Fossify File Manager 解鎖閃電般快速、安全且完全可自訂的體驗。 ⚡
|
||||
|
||||
🚀 以極快的導航統治您的數位世界:
|
||||
• 透過簡單的壓縮和傳輸功能快速管理您的檔案,讓您的數位生活井然有序。
|
||||
• 使用可自訂的主資料夾和我的最愛捷徑快速存取最常用的資料夾。
|
||||
• 透過直觀的導航、搜尋和排序選項,在幾秒鐘內找到您需要的內容。
|
||||
|
||||
🔐 以無與倫比的私隱和安全性強化您的資料:
|
||||
• 使用密碼、圖案或指紋鎖定保護敏感檔案的隱藏項目或整個應用程式。
|
||||
• 無需網絡連線-您的檔案在您的裝置上保持私密且安全。
|
||||
|
||||
💾 像專業人士一樣掌控您的儲存:
|
||||
• 透過輕鬆的檔案和資料夾壓縮來清理空間,以最大限度地發揮設備的潛力。
|
||||
• 使用內建儲存分析工具辨識並清理佔用空間的檔案。
|
||||
• 無縫導航根檔案、SD 卡和 USB 裝置以實現整體組織。
|
||||
|
||||
📁 使用便利工具優化您的工作流程:
|
||||
• 建立桌面捷徑以即時存取最常用的檔案和資料夾。
|
||||
• 使用輕量級檔案編輯器輕鬆編輯、列印或閱讀文件,並透過縮放手勢進行增強。
|
||||
|
||||
🌈 透過無限的客製化打造您自己的:
|
||||
• 享受無廣告、開源體驗,讓您而非企業巨頭掌控一切。
|
||||
• 個人化顏色、主題和圖示以反映您獨特的風格和偏好。
|
||||
|
||||
拋棄臃腫、侵犯私隱的檔案管理器,使用 Fossify File Manager 體驗真正的自由。立即下載並重新掌控您的數位生活!
|
||||
|
||||
探索 Fossify 的更多應用程式:https://www.fossify.org
|
||||
原始碼:https://www.github.com/FossifyOrg
|
||||
加入 Reddit 社群:https://www.reddit.com/r/Fossify
|
||||
在 Telegram 上連接:https://t.me/Fossify
|
||||
@@ -0,0 +1 @@
|
||||
具備基本功能的輕便好用開源檔案管理器。
|
||||
@@ -0,0 +1,30 @@
|
||||
厭倦了檔案管理器會拖慢您的速度並侵犯您的隱私嗎?使用 Fossify File Manager 解鎖閃電般快速、安全且完全可自訂的體驗。 ⚡
|
||||
|
||||
🚀 以極快的導航統治您的數位世界:
|
||||
• 透過簡單的壓縮和傳輸功能快速管理您的檔案,讓您的數位生活井井有條。
|
||||
• 使用可自訂的主資料夾和最喜愛的捷徑快速存取最常用的資料夾。
|
||||
• 透過直覺的導航、搜尋和排序選項,在幾秒鐘內找到您需要的內容。
|
||||
|
||||
🔐 以無與倫比的隱私和安全性強化您的資料:
|
||||
• 使用密碼、圖案或指紋鎖定保護敏感檔案的隱藏項目或整個應用程式。
|
||||
• 無需上網-您的檔案在您的裝置上保持私密且安全。
|
||||
|
||||
💾 像專業人士一樣掌控您的儲存:
|
||||
• 透過輕鬆的檔案和資料夾壓縮來清理空間,以最大限度地發揮設備的潛力。
|
||||
• 使用內建儲存分析工具辨識並清理佔用空間的檔案。
|
||||
• 無縫導航根檔案、SD 卡和 USB 裝置以實現整體組織。
|
||||
|
||||
📁 使用便利工具優化您的工作流程:
|
||||
• 建立桌面捷徑以即時存取最常用的檔案和資料夾。
|
||||
• 使用輕量級檔案編輯器輕鬆編輯、列印或閱讀文檔,並透過縮放手勢進行增強。
|
||||
|
||||
🌈 透過無限的客製化打造您自己的:
|
||||
• 享受無廣告、開源體驗,讓您而非企業巨頭掌控一切。
|
||||
• 個人化顏色、主題和圖示以反映您獨特的風格和偏好。
|
||||
|
||||
拋棄臃腫、侵犯隱私的檔案管理器,使用 Fossify File Manager 體驗真正的自由。立即下載並重新掌控您的數位生活!
|
||||
|
||||
探索 Fossify 的更多應用程式:https://www.fossify.org
|
||||
原始碼:https://www.github.com/FossifyOrg
|
||||
加入 Reddit 社群:https://www.reddit.com/r/Fossify
|
||||
在 Telegram 上連接:https://t.me/Fossify
|
||||
+2
-2
@@ -20,6 +20,6 @@ org.gradle.jvmargs=-Xmx4g
|
||||
# org.gradle.parallel=true
|
||||
|
||||
# Versioning
|
||||
VERSION_NAME=1.2.0
|
||||
VERSION_CODE=4
|
||||
VERSION_NAME=1.6.3
|
||||
VERSION_CODE=15
|
||||
APP_ID=org.fossify.filemanager
|
||||
@@ -1,25 +1,25 @@
|
||||
[versions]
|
||||
#jetbrains
|
||||
kotlin = "2.2.0"
|
||||
kotlin = "2.3.10"
|
||||
#Detekt
|
||||
detekt = "1.23.8"
|
||||
detektCompose = "0.4.22"
|
||||
detektCompose = "0.4.28"
|
||||
#AndroidX
|
||||
androidx-swiperefreshlayout = "1.1.0"
|
||||
androidx-swiperefreshlayout = "1.2.0"
|
||||
androidx-documentfile = "1.1.0"
|
||||
#Fossify
|
||||
commons = "4.2.0"
|
||||
commons = "7.1.3"
|
||||
#Other
|
||||
autofittextview = "0.2.1"
|
||||
gestureviews = "2.8.3"
|
||||
gestureviews = "2.9.0"
|
||||
rootshell = "bc7e5d398e"
|
||||
roottools = "965c154e20"
|
||||
zip4j = "2.11.5"
|
||||
zip4j = "2.11.6"
|
||||
#Gradle
|
||||
gradlePlugins-agp = "8.11.0"
|
||||
gradlePlugins-agp = "9.4.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"
|
||||
@@ -39,5 +39,4 @@ roottools = { module = "com.github.naveensingh:RootTools", version.ref = "rootto
|
||||
zip4j = { module = "net.lingala.zip4j:zip4j", version.ref = "zip4j" }
|
||||
[plugins]
|
||||
android = { id = "com.android.application", version.ref = "gradlePlugins-agp" }
|
||||
kotlinAndroid = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
|
||||
detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" }
|
||||
Vendored
BIN
Binary file not shown.
+3
-1
@@ -1,7 +1,9 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-9.8.1-bin.zip
|
||||
networkTimeout=10000
|
||||
retries=0
|
||||
retryBackOffMs=500
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
#
|
||||
# Copyright © 2015-2021 the original authors.
|
||||
# Copyright © 2015 the original authors.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
##############################################################################
|
||||
#
|
||||
# Gradle start up script for POSIX generated by Gradle.
|
||||
# gradlew start up script for POSIX generated by Gradle.
|
||||
#
|
||||
# Important for running:
|
||||
#
|
||||
@@ -29,7 +29,7 @@
|
||||
# bash, then to run this script, type that shell name before the whole
|
||||
# command line, like:
|
||||
#
|
||||
# ksh Gradle
|
||||
# ksh gradlew
|
||||
#
|
||||
# Busybox and similar reduced shells will NOT work, because this script
|
||||
# requires all of these POSIX shell features:
|
||||
@@ -57,7 +57,7 @@
|
||||
# Darwin, MinGW, and NonStop.
|
||||
#
|
||||
# (3) This script is generated from the Groovy template
|
||||
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||
# https://github.com/gradle/gradle/blob/3d91ce3b8caaf77ad09f381f43615b715b53f72c/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||
# within the Gradle project.
|
||||
#
|
||||
# You can find Gradle at https://github.com/gradle/gradle/.
|
||||
@@ -114,7 +114,6 @@ case "$( uname )" in #(
|
||||
NONSTOP* ) nonstop=true ;;
|
||||
esac
|
||||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
@@ -172,7 +171,6 @@ fi
|
||||
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||
if "$cygwin" || "$msys" ; then
|
||||
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
|
||||
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
|
||||
|
||||
JAVACMD=$( cygpath --unix "$JAVACMD" )
|
||||
|
||||
@@ -212,8 +210,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||
|
||||
set -- \
|
||||
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
||||
-classpath "$CLASSPATH" \
|
||||
org.gradle.wrapper.GradleWrapperMain \
|
||||
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
|
||||
"$@"
|
||||
|
||||
# Stop when "xargs" is not available.
|
||||
|
||||
Vendored
+52
-34
@@ -19,12 +19,39 @@
|
||||
@if "%DEBUG%"=="" @echo off
|
||||
@rem ##########################################################################
|
||||
@rem
|
||||
@rem Gradle startup script for Windows
|
||||
@rem gradlew startup script for Windows
|
||||
@rem
|
||||
@rem ##########################################################################
|
||||
|
||||
@rem Set local scope for the variables with windows NT shell
|
||||
if "%OS%"=="Windows_NT" setlocal
|
||||
@rem Set local scope for the variables, and ensure extensions are enabled
|
||||
setlocal EnableExtensions
|
||||
|
||||
@rem Catch executions from older scripts and ensure they exit cleanly.
|
||||
@rem This can be removed once we can be reasonably confident that few people
|
||||
@rem will be migrating directly to this new wrapper.
|
||||
goto afterSafetyNet
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
goto exitWithErrorLevel
|
||||
:afterSafetyNet
|
||||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%"=="" set DIRNAME=.
|
||||
@@ -45,13 +72,14 @@ set JAVA_EXE=java.exe
|
||||
%JAVA_EXE% -version >NUL 2>&1
|
||||
if %ERRORLEVEL% equ 0 goto execute
|
||||
|
||||
echo. 1>&2
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
|
||||
echo. 1>&2
|
||||
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
|
||||
echo location of your Java installation. 1>&2
|
||||
1>&2 echo.
|
||||
1>&2 echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
1>&2 echo.
|
||||
1>&2 echo Please set the JAVA_HOME variable in your environment to match the
|
||||
1>&2 echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
"%COMSPEC%" /c exit 1
|
||||
goto exitWithErrorLevel
|
||||
|
||||
:findJavaFromJavaHome
|
||||
set JAVA_HOME=%JAVA_HOME:"=%
|
||||
@@ -59,36 +87,26 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||
|
||||
if exist "%JAVA_EXE%" goto execute
|
||||
|
||||
echo. 1>&2
|
||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
|
||||
echo. 1>&2
|
||||
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
|
||||
echo location of your Java installation. 1>&2
|
||||
1>&2 echo.
|
||||
1>&2 echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||
1>&2 echo.
|
||||
1>&2 echo Please set the JAVA_HOME variable in your environment to match the
|
||||
1>&2 echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
"%COMSPEC%" /c exit 1
|
||||
goto exitWithErrorLevel
|
||||
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
|
||||
@rem Execute Gradle
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
||||
@rem Execute gradlew
|
||||
@rem endlocal doesn't take effect until after the line is parsed and variables are expanded
|
||||
@rem which allows us to clear the local environment before executing the java command
|
||||
endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel & goto exitWithErrorLevel
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
if %ERRORLEVEL% equ 0 goto mainEnd
|
||||
|
||||
:fail
|
||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||
rem the _cmd.exe /c_ return code!
|
||||
set EXIT_CODE=%ERRORLEVEL%
|
||||
if %EXIT_CODE% equ 0 set EXIT_CODE=1
|
||||
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
|
||||
exit /b %EXIT_CODE%
|
||||
|
||||
:mainEnd
|
||||
if "%OS%"=="Windows_NT" endlocal
|
||||
|
||||
:omega
|
||||
@rem This label must not be changed. We rely on old scripts being able to jump to this point.
|
||||
:exitWithErrorLevel
|
||||
@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts
|
||||
"%COMSPEC%" /c exit %ERRORLEVEL%
|
||||
+2
-1
@@ -10,7 +10,8 @@ dependencyResolutionManagement {
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
maven { setUrl("https://jitpack.io") }
|
||||
maven { setUrl("https://www.jitpack.io") }
|
||||
mavenLocal()
|
||||
}
|
||||
}
|
||||
include(":app")
|
||||
Reference in new issue
Block a user