248 Commits
Author SHA1 Message Date
fossifybot[bot] 82b3c98c9a chore(release): v1.6.2 (14) (#444)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2026-10-10 21:10:33 +05:30
fossifybot[bot] 6bfcd8d1ea chore(deps): bump org.fossify.commons from 7.1.1 to 7.1.2 (#504)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2026-10-10 02:52:33 +05:30
fossifybot[bot] 7a90732f96 chore(deps): bump org.fossify.commons from 7.1.0 to 7.1.1 (#503)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2026-10-08 17:20:28 +05:30
fossifybot[bot] e299956da2 fix: migrate to commons 7.1.0 2026-10-08 09:11:21 +05:30
dependabot[bot] a5d92c7f76 chore(deps): update Gradle to 9.8.0 2026-10-08 07:05:59 +05:30
Dan 7844f4b85a chore(l10n): update Ukrainian translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/uk/
Via: Weblate
2026-10-07 07:07:39 +05:30
winver 95548acecc chore(l10n): update Ukrainian translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/uk/
Via: Weblate
2026-10-05 07:13:37 +05:30
fossifybot[bot] 9c29ef68a8 chore: update lint baselines (#500)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2026-10-02 16:33:32 +05:30
Naveen Singh 3fdb6cd380 chore(l10n): update Persian translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/fa/
Via: Weblate
2026-10-02 07:27:54 +05:30
dependabot[bot] 0856c68e2a chore(deps): bump com.android.application from 9.4.0 to 9.4.1 (#496)
Bumps com.android.application from 9.4.0 to 9.4.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-24 16:55:27 +05:30
dependabot[bot] 4080ea9b06 chore(deps): bump fastlane from 2.238.0 to 2.240.1 (#495)
Bumps [fastlane](https://github.com/fastlane/fastlane) from 2.238.0 to 2.240.1.
- [Release notes](https://github.com/fastlane/fastlane/releases)
- [Changelog](https://github.com/fastlane/fastlane/blob/master/CHANGELOG.latest.md)
- [Commits](https://github.com/fastlane/fastlane/compare/fastlane/2.238.0...fastlane/2.240.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-24 16:23:42 +05:30
카츠 ef41411d5b chore(l10n): update Korean translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/ko/
Via: Weblate
2026-09-24 07:43:44 +05:30
dependabot[bot] f79e8b5ebd chore(deps): bump com.android.application from 9.3.2 to 9.4.0 (#489)
Bumps com.android.application from 9.3.2 to 9.4.0.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-11 09:58:55 +05:30
fossifybot[bot] a2eeb40309 chore: update lint baselines (#483)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2026-09-01 14:25:24 +05:30
dependabot[bot] a4390a22b0 chore(deps): bump fastlane from 2.237.0 to 2.238.0 (#479)
Bumps [fastlane](https://github.com/fastlane/fastlane) from 2.237.0 to 2.238.0.
- [Release notes](https://github.com/fastlane/fastlane/releases)
- [Changelog](https://github.com/fastlane/fastlane/blob/master/CHANGELOG.latest.md)
- [Commits](https://github.com/fastlane/fastlane/compare/fastlane/2.237.0...fastlane/2.238.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-01 03:28:15 +05:30
dependabot[bot] 6591c26758 chore(deps): bump gradle-wrapper from 9.7.0 to 9.7.1 (#481)
Bumps [gradle-wrapper](https://github.com/gradle/gradle) from 9.7.0 to 9.7.1.
- [Release notes](https://github.com/gradle/gradle/releases)
- [Commits](https://github.com/gradle/gradle/compare/v9.7.0...v9.7.1)

---
updated-dependencies:
- dependency-name: gradle-wrapper
  dependency-version: 9.7.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-01 03:27:45 +05:30
dependabot[bot] 577f510c61 chore(deps): bump com.android.application from 9.3.1 to 9.3.2 (#482)
Bumps com.android.application from 9.3.1 to 9.3.2.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-01 03:27:18 +05:30
Fredrik Lynghaug 0e22535a06 chore(l10n): update Norwegian Nynorsk translations
Currently translated at 9.0% (4 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/nn/
Via: Weblate
2026-08-31 07:30:29 +05:30
தமிழ்நேரம் 77e6f4fb9e chore(l10n): update Tamil translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/ta/
Via: Weblate
2026-08-31 07:30:29 +05:30
Sketch6580 c1253e1de2 chore(l10n): update Chinese (Simplified Han script) translations
Currently translated at 100.0% (2 of 2 strings)

Translation: Fossify/File-Manager metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager-metadata/zh_Hans/
Via: Weblate
2026-08-31 07:30:29 +05:30
dependabot[bot] ab8989ad92 chore(deps): bump gradle-wrapper from 9.6.1 to 9.7.0 (#478)
Bumps [gradle-wrapper](https://github.com/gradle/gradle) from 9.6.1 to 9.7.0.
- [Release notes](https://github.com/gradle/gradle/releases)
- [Commits](https://github.com/gradle/gradle/compare/v9.6.1...v9.7.0)

---
updated-dependencies:
- dependency-name: gradle-wrapper
  dependency-version: 9.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-17 04:49:36 +05:30
dependabot[bot] bfe06e62c6 chore(deps): bump json from 2.20.0 to 2.21.2 (#477)
Bumps [json](https://github.com/ruby/json) from 2.20.0 to 2.21.2.
- [Release notes](https://github.com/ruby/json/releases)
- [Changelog](https://github.com/ruby/json/blob/master/CHANGES.md)
- [Commits](https://github.com/ruby/json/compare/v2.20.0...v2.21.2)

---
updated-dependencies:
- dependency-name: json
  dependency-version: 2.21.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-09 19:32:06 +05:30
fossifybot[bot] fea0394118 chore: update lint baselines (#470)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2026-08-01 10:20:27 +05:30
dependabot[bot] d7636f9d4a chore(deps): bump com.android.application from 9.3.0 to 9.3.1 (#467)
Bumps com.android.application from 9.3.0 to 9.3.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-28 05:12:34 +05:30
mae 02c508d4e1 chore(l10n): update Spanish (Latin America) translations
Currently translated at 2.2% (1 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/es_419/
Via: Weblate
2026-07-23 07:32:44 +05:30
dependabot[bot] 328a0a8f3c chore(deps): bump com.android.application from 9.2.1 to 9.3.0 (#464)
Bumps com.android.application from 9.2.1 to 9.3.0.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-21 03:33:22 +05:30
Sepehr a5d0f3cf1b chore(l10n): update Persian translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/fa/
Via: Weblate
2026-07-17 07:08:03 +05:30
dependabot[bot] 87b1dabca3 chore(deps): bump fastlane from 2.236.1 to 2.237.0 (#461)
Bumps [fastlane](https://github.com/fastlane/fastlane) from 2.236.1 to 2.237.0.
- [Release notes](https://github.com/fastlane/fastlane/releases)
- [Changelog](https://github.com/fastlane/fastlane/blob/master/CHANGELOG.latest.md)
- [Commits](https://github.com/fastlane/fastlane/compare/fastlane/2.236.1...fastlane/2.237.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-06 23:36:08 +05:30
fossifybot[bot] aabfcde47b chore: update lint baselines (#456)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2026-07-03 15:15:45 +05:30
dependabot[bot] 77b2611dc9 chore(deps): bump faraday from 1.10.5 to 1.10.6 (#455)
Bumps [faraday](https://github.com/lostisland/faraday) from 1.10.5 to 1.10.6.
- [Release notes](https://github.com/lostisland/faraday/releases)
- [Changelog](https://github.com/lostisland/faraday/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lostisland/faraday/compare/v1.10.5...v1.10.6)

---
updated-dependencies:
- dependency-name: faraday
  dependency-version: 1.10.6
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-30 21:06:25 +05:30
dependabot[bot] 99f13929e3 chore(deps): bump gradle-wrapper from 9.6.0 to 9.6.1 (#453)
Bumps [gradle-wrapper](https://github.com/gradle/gradle) from 9.6.0 to 9.6.1.
- [Release notes](https://github.com/gradle/gradle/releases)
- [Commits](https://github.com/gradle/gradle/compare/v9.6.0...v9.6.1)

---
updated-dependencies:
- dependency-name: gradle-wrapper
  dependency-version: 9.6.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-30 08:10:59 +05:30
dependabot[bot] 6cf1bfe5c5 chore(deps): bump gradle-wrapper from 9.5.1 to 9.6.0 (#450)
Bumps [gradle-wrapper](https://github.com/gradle/gradle) from 9.5.1 to 9.6.0.
- [Release notes](https://github.com/gradle/gradle/releases)
- [Commits](https://github.com/gradle/gradle/compare/v9.5.1...v9.6.0)

---
updated-dependencies:
- dependency-name: gradle-wrapper
  dependency-version: 9.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-23 20:02:34 +05:30
dependabot[bot] f53f84677c chore(deps): bump fastlane from 2.235.0 to 2.236.1 (#449)
Bumps [fastlane](https://github.com/fastlane/fastlane) from 2.235.0 to 2.236.1.
- [Release notes](https://github.com/fastlane/fastlane/releases)
- [Changelog](https://github.com/fastlane/fastlane/blob/master/CHANGELOG.latest.md)
- [Commits](https://github.com/fastlane/fastlane/compare/fastlane/2.235.0...fastlane/2.236.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-15 19:09:26 +05:30
Sandyran 7493541725 chore(l10n): update Norwegian Nynorsk translations
Currently translated at 6.8% (3 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/nn/
Via: Weblate
2026-06-14 07:03:46 +05:30
jbaali 5e316369df fix: preserve timestamps when decompressing folders (#422)
Refs: https://github.com/FossifyOrg/File-Manager/issues/190
2026-06-01 14:51:51 +05:30
fossifybot[bot] 878fa50963 chore: update lint baselines (#443)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2026-06-01 09:59:45 +05:30
fossifybot[bot] 893526efa0 chore: update lint baselines (#430)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2026-05-31 22:29:14 +05:30
dependabot[bot] 2d3cb1a555 chore(deps): bump jwt from 2.10.2 to 3.2.0 (#442)
Bumps [jwt](https://github.com/jwt/ruby-jwt) from 2.10.2 to 3.2.0.
- [Release notes](https://github.com/jwt/ruby-jwt/releases)
- [Changelog](https://github.com/jwt/ruby-jwt/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jwt/ruby-jwt/compare/v2.10.2...v3.2.0)

---
updated-dependencies:
- dependency-name: jwt
  dependency-version: 3.2.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-28 10:08:57 +05:30
dependabot[bot] 5b4a82615e chore(deps): bump com.android.application from 9.2.0 to 9.2.1 (#436)
Bumps com.android.application from 9.2.0 to 9.2.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-26 19:00:36 +05:30
dependabot[bot] a660857cc6 chore(deps): bump fastlane from 2.233.0 to 2.234.0 (#437)
Bumps [fastlane](https://github.com/fastlane/fastlane) from 2.233.0 to 2.234.0.
- [Release notes](https://github.com/fastlane/fastlane/releases)
- [Changelog](https://github.com/fastlane/fastlane/blob/master/CHANGELOG.latest.md)
- [Commits](https://github.com/fastlane/fastlane/compare/fastlane/2.233.0...fastlane/2.234.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-26 19:00:23 +05:30
dependabot[bot] d8bef198cd chore(deps): bump gradle-wrapper from 9.4.1 to 9.5.1 (#438)
Bumps [gradle-wrapper](https://github.com/gradle/gradle) from 9.4.1 to 9.5.1.
- [Release notes](https://github.com/gradle/gradle/releases)
- [Commits](https://github.com/gradle/gradle/compare/v9.4.1...v9.5.1)

---
updated-dependencies:
- dependency-name: gradle-wrapper
  dependency-version: 9.5.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-26 19:00:11 +05:30
H Tamás 3a3ccfe959 chore(l10n): update Hungarian translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/hu/
Via: Weblate
2026-05-09 07:05:04 +05:30
H Tamás 60c6fbc304 chore(l10n): update Hungarian translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/hu/
Via: Weblate
2026-05-03 07:04:14 +05:30
dependabot[bot] 3f0f9e2df8 chore(deps): bump com.android.application from 9.1.0 to 9.2.0 (#428)
Bumps com.android.application from 9.1.0 to 9.2.0.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-28 15:38:57 +05:30
dependabot[bot] 74b34e8fb0 chore(deps): bump fastlane from 2.232.2 to 2.233.0 (#427)
Bumps [fastlane](https://github.com/fastlane/fastlane) from 2.232.2 to 2.233.0.
- [Release notes](https://github.com/fastlane/fastlane/releases)
- [Changelog](https://github.com/fastlane/fastlane/blob/master/CHANGELOG.latest.md)
- [Commits](https://github.com/fastlane/fastlane/compare/fastlane/2.232.2...fastlane/2.233.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-23 04:25:49 +05:30
Andi Chandler 06db3c88b4 chore(l10n): update English (United Kingdom) translations
Currently translated at 13.6% (6 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/en_GB/
Via: Weblate
2026-04-18 07:03:44 +05:30
dependabot[bot] d6987db37f chore(deps): bump addressable from 2.8.9 to 2.9.0 (#420)
Bumps [addressable](https://github.com/sporkmonger/addressable) from 2.8.9 to 2.9.0.
- [Changelog](https://github.com/sporkmonger/addressable/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sporkmonger/addressable/compare/addressable-2.8.9...addressable-2.9.0)

---
updated-dependencies:
- dependency-name: addressable
  dependency-version: 2.9.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-08 14:29:25 +05:30
fossifybot[bot] d98e78eda1 chore: update lint baselines (#418)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2026-04-05 10:27:49 +05:30
fossifybot[bot] 1fbfc978ca chore: update lint baselines (#403)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2026-03-30 00:47:44 +05:30
dependabot[bot] c9b998f4a7 chore(deps): bump json from 2.18.1 to 2.19.2 (#414)
Bumps [json](https://github.com/ruby/json) from 2.18.1 to 2.19.2.
- [Release notes](https://github.com/ruby/json/releases)
- [Changelog](https://github.com/ruby/json/blob/master/CHANGES.md)
- [Commits](https://github.com/ruby/json/compare/v2.18.1...v2.19.2)

---
updated-dependencies:
- dependency-name: json
  dependency-version: 2.19.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-29 19:06:13 +05:30
dependabot[bot] 2258a58a2d chore(deps): bump gradle-wrapper from 9.4.0 to 9.4.1 (#415)
Bumps [gradle-wrapper](https://github.com/gradle/gradle) from 9.4.0 to 9.4.1.
- [Release notes](https://github.com/gradle/gradle/releases)
- [Commits](https://github.com/gradle/gradle/compare/v9.4.0...v9.4.1)

---
updated-dependencies:
- dependency-name: gradle-wrapper
  dependency-version: 9.4.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-29 19:02:49 +05:30
Daniel Nylander eb95cb540d chore(l10n): update Swedish translations
Currently translated at 100.0% (2 of 2 strings)

Translation: Fossify/File-Manager metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager-metadata/sv/
Via: Weblate
2026-03-28 07:06:39 +05:30
Omer I.S. 8f74c493e0 chore(l10n): update Hebrew translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/he/
Via: Weblate
2026-03-25 07:05:06 +05:30
Hosted Weblate user 143456 a2d6e4d7c2 chore(l10n): update Thai translations
Currently translated at 6.8% (3 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/th/
Via: Weblate
2026-03-16 07:07:05 +05:30
Hosted Weblate user 143456 1480831b15 chore(l10n): update Thai translations
Currently translated at 4.5% (2 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/th/
Via: Weblate
2026-03-16 07:07:05 +05:30
fossifybot[bot] 0211111a34 chore(deps): bump org.fossify.commons from 6.1.5 to 6.1.6 (#401)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2026-03-15 20:47:09 +05:30
dependabot[bot] 64032a3082 chore(deps): bump gradle-wrapper from 9.3.1 to 9.4.0 (#408)
Bumps gradle-wrapper from 9.3.1 to 9.4.0.

---
updated-dependencies:
- dependency-name: gradle-wrapper
  dependency-version: 9.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-15 01:12:49 +05:30
dependabot[bot] 463d016d68 chore(deps): bump com.android.application from 9.0.1 to 9.1.0 (#407)
Bumps com.android.application from 9.0.1 to 9.1.0.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-14 23:51:50 +05:30
dependabot[bot] 4346de59d2 chore(deps): bump fastlane from 2.232.1 to 2.232.2 (#405)
Bumps [fastlane](https://github.com/fastlane/fastlane) from 2.232.1 to 2.232.2.
- [Release notes](https://github.com/fastlane/fastlane/releases)
- [Changelog](https://github.com/fastlane/fastlane/blob/master/CHANGELOG.latest.md)
- [Commits](https://github.com/fastlane/fastlane/compare/fastlane/2.232.1...fastlane/2.232.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-14 20:48:21 +05:30
jonnysemon 9f5b41d6fa chore(l10n): update Arabic translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/ar/
Via: Weblate
2026-03-01 07:02:41 +05:30
fossifybot[bot] 6879b7871a chore(release): v1.6.1 (13) (#393)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2026-02-17 08:00:29 +05:30
fossifybot[bot] efcc213ed6 chore(deps): bump org.fossify.commons from 6.1.3 to 6.1.5 (#396)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2026-02-17 01:14:17 +05:30
dependabot[bot] 432c9bf929 chore(deps): bump net.lingala.zip4j:zip4j from 2.11.5 to 2.11.6 (#397)
Bumps [net.lingala.zip4j:zip4j](https://github.com/srikanth-lingala/zip4j) from 2.11.5 to 2.11.6.
- [Release notes](https://github.com/srikanth-lingala/zip4j/releases)
- [Commits](https://github.com/srikanth-lingala/zip4j/compare/v2.11.5...v2.11.6)

---
updated-dependencies:
- dependency-name: net.lingala.zip4j:zip4j
  dependency-version: 2.11.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-16 20:21:07 +05:30
dependabot[bot] 900d9c197b chore(deps): bump com.android.application from 9.0.0 to 9.0.1 (#399)
Bumps com.android.application from 9.0.0 to 9.0.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-16 20:14:50 +05:30
dependabot[bot] b09e037e61 chore(deps): bump fastlane from 2.232.0 to 2.232.1 (#398)
Bumps [fastlane](https://github.com/fastlane/fastlane) from 2.232.0 to 2.232.1.
- [Release notes](https://github.com/fastlane/fastlane/releases)
- [Changelog](https://github.com/fastlane/fastlane/blob/master/CHANGELOG.latest.md)
- [Commits](https://github.com/fastlane/fastlane/compare/fastlane/2.232.0...fastlane/2.232.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-16 19:48:42 +05:30
dependabot[bot] ddb8afdfc6 chore(deps): bump faraday from 1.10.4 to 1.10.5 (#395)
Bumps [faraday](https://github.com/lostisland/faraday) from 1.10.4 to 1.10.5.
- [Release notes](https://github.com/lostisland/faraday/releases)
- [Changelog](https://github.com/lostisland/faraday/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lostisland/faraday/compare/v1.10.4...v1.10.5)

---
updated-dependencies:
- dependency-name: faraday
  dependency-version: 1.10.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-13 15:03:58 +05:30
dependabot[bot] 4cfc92b0fe chore(deps): bump fastlane from 2.231.1 to 2.232.0 (#394)
Bumps [fastlane](https://github.com/fastlane/fastlane) from 2.231.1 to 2.232.0.
- [Release notes](https://github.com/fastlane/fastlane/releases)
- [Changelog](https://github.com/fastlane/fastlane/blob/master/CHANGELOG.latest.md)
- [Commits](https://github.com/fastlane/fastlane/compare/fastlane/2.231.1...fastlane/2.232.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-13 08:58:29 +05:30
Naveen Singh a1f06bfcbc fix: use commons extension for size calculation (#392)
* docs(changelog): add entry regarding file size calculation change

* refactor: remove empty line

* refactor: reformat code
2026-02-08 17:47:20 +05:30
fossifybot[bot] be63034b1c chore(deps): bump org.fossify.commons from 6.1.0 to 6.1.3 (#385)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2026-02-08 17:46:15 +05:30
dependabot[bot]andNaveen Singh 8a8b9b9da8 chore(deps): bump com.android.application from 8.11.1 to 9.0.0 (#391)
* chore(deps): bump com.android.application from 8.11.1 to 9.0.0

Bumps com.android.application from 8.11.1 to 9.0.0.

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

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

* build: remove 'org.jetbrains.kotlin.android'

* build: use directories set instead of srcDirs

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Naveen Singh <snaveen935@gmail.com>
2026-02-08 00:59:09 +05:30
dependabot[bot]andNaveen Singh c76a56061b chore(deps): bump gradle-wrapper from 8.13 to 9.3.1 (#382)
* chore(deps): bump gradle-wrapper from 8.13 to 9.3.1

Bumps gradle-wrapper from 8.13 to 9.3.1.

---
updated-dependencies:
- dependency-name: gradle-wrapper
  dependency-version: 9.3.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

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

* build: update archive name definition

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Naveen Singh <snaveen935@gmail.com>
2026-02-07 19:14:41 +05:30
dependabot[bot] 23f0e848c4 chore(deps): bump org.jetbrains.kotlin.android from 2.3.0 to 2.3.10 (#390)
Bumps [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) from 2.3.0 to 2.3.10.
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v2.3.0...v2.3.10)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-07 17:10:56 +05:30
Naveen Singh 65ebbf059a ci(dependabot): ignore org.fossify:commons dependency (#388) 2026-02-03 18:08:55 +05:30
fossifybot[bot] 8887b510ca chore: update lint baselines (#384)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2026-02-01 12:34:08 +05:30
Naveen Singh 1f8efdf9fe ci: remove path filters for PR checks (#383) 2026-02-01 01:57:04 +05:30
fossifybot[bot] 7b6e49111a chore(release): v1.6.0 (12) (#375)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2026-01-31 02:10:54 +05:30
Bruce Cowan 60f30bca73 chore(l10n): update English (United Kingdom) translations
Currently translated at 6.8% (3 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/en_GB/
Via: Weblate
2026-01-30 23:56:20 +05:30
fossifybot[bot]andNaveen Singh d056d6d57b chore(deps): bump org.fossify.commons from 6.0.0 to 6.1.0 (#381)
* chore(deps): bump org.fossify.commons from 6.0.0 to 6.1.0

* build: update all jitpack url

---------

Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
Co-authored-by: Naveen Singh <snaveen935@gmail.com>
2026-01-30 23:16:21 +05:30
fossifybot[bot] 1e64ef351c chore(deps): bump org.fossify.commons from 5.14.0 to 6.0.0 (#379)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2026-01-28 15:18:29 +05:30
dependabot[bot] 1b6241aaff chore(deps): bump fastlane from 2.231.0 to 2.231.1 (#377)
Bumps [fastlane](https://github.com/fastlane/fastlane) from 2.231.0 to 2.231.1.
- [Release notes](https://github.com/fastlane/fastlane/releases)
- [Changelog](https://github.com/fastlane/fastlane/blob/master/CHANGELOG.latest.md)
- [Commits](https://github.com/fastlane/fastlane/compare/fastlane/2.231.0...fastlane/2.231.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-26 21:56:14 +05:30
fossifybot[bot] dd6f701f39 chore(deps): bump org.fossify.commons from 5.13.1 to 5.14.0 (#376)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2026-01-26 16:39:15 +05:30
Naveen Singh 16e51ca4f5 feat: add font customization (#374)
* fix: use AndroidX AppCompat PopupMenu

* feat: add font customization
2026-01-26 00:07:43 +05:30
Rasti K5 0dea8e0576 chore(l10n): update Kurdish (Central) translations
Currently translated at 59.0% (26 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/ckb/
Via: Weblate
2026-01-23 12:17:05 +05:30
Ethan Grobin 323c882128 chore(l10n): update English (United Kingdom) translations
Currently translated at 4.5% (2 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/en_GB/
Via: Weblate
2026-01-23 12:17:05 +05:30
Alexander Gabilondo 1476234289 chore(l10n): update Basque translations
Currently translated at 100.0% (2 of 2 strings)

Translation: Fossify/File-Manager metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager-metadata/eu/
Via: Weblate
2026-01-23 12:17:05 +05:30
Sketch6580 b96aee5a2d chore(l10n): update Chinese (Simplified Han script) translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/zh_Hans/
Via: Weblate
2026-01-23 12:17:05 +05:30
Hồ Nhất Duy e25bd7750f chore(l10n): update Vietnamese translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/vi/
Via: Weblate
2026-01-23 12:17:05 +05:30
Hồ Nhất Duy ae8ca6b2e8 chore(l10n): update Vietnamese translations
Currently translated at 100.0% (2 of 2 strings)

Translation: Fossify/File-Manager metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager-metadata/vi/
Via: Weblate
2026-01-23 12:17:05 +05:30
mahdi155000 07fb062a0d chore(l10n): update Persian translations
Currently translated at 6.8% (3 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/fa/
Via: Weblate
2026-01-23 12:17:05 +05:30
dependabot[bot] 75c5d3c5ec chore(deps): bump fastlane from 2.230.0 to 2.231.0 (#372)
Bumps [fastlane](https://github.com/fastlane/fastlane) from 2.230.0 to 2.231.0.
- [Release notes](https://github.com/fastlane/fastlane/releases)
- [Changelog](https://github.com/fastlane/fastlane/blob/master/CHANGELOG.latest.md)
- [Commits](https://github.com/fastlane/fastlane/compare/fastlane/2.230.0...fastlane/2.231.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-21 07:45:30 +05:30
dependabot[bot] 8e5ccc05ba chore(deps): bump com.alexvasilkov:gesture-views from 2.8.3 to 2.9.0 (#369)
Bumps [com.alexvasilkov:gesture-views](https://github.com/alexvasilkov/GestureViews) from 2.8.3 to 2.9.0.
- [Release notes](https://github.com/alexvasilkov/GestureViews/releases)
- [Commits](https://github.com/alexvasilkov/GestureViews/commits)

---
updated-dependencies:
- dependency-name: com.alexvasilkov:gesture-views
  dependency-version: 2.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-06 00:04:24 +05:30
fossifybot[bot] 26fc5f1c22 chore: update lint baselines (#367)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2026-01-01 08:16:05 +05:30
Naveen Singh 86e79e5e0b ci: prevent unnecessary workflow runs on minor changes (#366) 2026-01-01 01:46:41 +05:30
fossifybot[bot] 42ba12b1ce chore(deps): bump org.fossify.commons from 5.12.0 to 5.13.1 (#364)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2026-01-01 01:11:48 +05:30
Naveen Singh 2a36e87588 ci: prevent unnecessary workflow runs on minor changes (#365) 2026-01-01 00:57:04 +05:30
dependabot[bot] a155339348 chore(deps): bump org.jetbrains.kotlin.android from 2.2.21 to 2.3.0 (#359)
Bumps [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) from 2.2.21 to 2.3.0.
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v2.2.21...v2.3.0)

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

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

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-18 19:42:37 +00:00
fossifybot[bot] 67d77b3431 chore(release): v1.5.0 (11) (#343)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-12-16 06:43:13 +05:30
fossifybot[bot] d9ef0f78b3 chore(deps): bump org.fossify.commons from 5.11.0 to 5.12.0 (#346)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-12-16 06:37:02 +05:30
Naveen Singh f57e492c16 feat(l10n): remove Valencian translations
Translations for Valencian have been removed from Fossify/File-Manager.

Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/ca@valencia/
Via: Weblate
2025-12-16 06:11:02 +05:30
fran secs 5f7b12e736 chore(l10n): update Catalan translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/ca/
Via: Weblate
2025-12-16 06:11:02 +05:30
Josep M. Ferrer 40091ff02b chore(l10n): update Catalan translations
Currently translated at 100.0% (2 of 2 strings)

Translation: Fossify/File-Manager metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager-metadata/ca/
Via: Weblate
2025-12-16 06:11:02 +05:30
fran secs 8231505848 chore(l10n): update Valencian translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/ca@valencia/
Via: Weblate
2025-12-16 06:11:02 +05:30
fran secs 3b8eb29e28 chore(l10n): update Catalan translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/ca/
Via: Weblate
2025-12-16 06:11:02 +05:30
fran secs baaf7ffa80 chore(l10n): update Valencian translations
Currently translated at 20.4% (9 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/ca@valencia/
Via: Weblate
2025-12-16 06:11:02 +05:30
fran secs 046c2c1bc0 feat(l10n): add Valencian translations
Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/ca@valencia/
Via: Weblate
2025-12-16 06:11:02 +05:30
Naveen Singh 2237f84971 feat(l10n): remove Valencian translations
Translations for Valencian have been removed from Fossify/File-Manager.

Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/ca@valencia/
Via: Weblate
2025-12-16 06:11:02 +05:30
fran secs 4cc0ce941c feat(l10n): add Valencian translations
Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/ca@valencia/
Via: Weblate
2025-12-16 06:11:02 +05:30
Vasilis K. ff35055f8f chore(l10n): update Greek translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/el/
Via: Weblate
2025-12-16 06:11:02 +05:30
Naveen Singh 8eea02c2aa docs: move incorrectly placed changelog entry (#342) 2025-12-12 19:00:21 +05:30
Jan c0d7f64551 fix: save as new file when file already exists (#332)
Refs: #131
2025-12-12 18:54:52 +05:30
fossifybot[bot] 749c398aa6 chore: update lint baselines (#339)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-12-10 23:56:32 +05:30
fossifybot[bot] 8812e0ba58 chore(deps): bump org.fossify.commons from 5.10.0 to 5.11.0 (#338)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-12-10 23:23:55 +05:30
Naveen Singh 6a30697c16 ci: add workflow to update commons lib (#337) 2025-12-10 23:07:46 +05:30
dependabot[bot] 146ad3b129 chore(deps): bump androidx.swiperefreshlayout:swiperefreshlayout (#334)
Bumps androidx.swiperefreshlayout:swiperefreshlayout from 1.1.0 to 1.2.0.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-08 18:58:08 +05:30
dependabot[bot] b3fc8c7e6f chore(deps): bump org.fossify:commons from 5.7.3 to 5.10.0 (#333)
Bumps [org.fossify:commons](https://github.com/FossifyOrg/commons) from 5.7.3 to 5.10.0.
- [Commits](https://github.com/FossifyOrg/commons/compare/5.7.3...5.10.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-08 18:56:15 +05:30
dependabot[bot] 599b2cad0b chore(deps): bump fastlane from 2.229.0 to 2.229.1 (#335)
Bumps [fastlane](https://github.com/fastlane/fastlane) from 2.229.0 to 2.229.1.
- [Release notes](https://github.com/fastlane/fastlane/releases)
- [Changelog](https://github.com/fastlane/fastlane/blob/master/CHANGELOG.latest.md)
- [Commits](https://github.com/fastlane/fastlane/compare/fastlane/2.229.0...fastlane/2.229.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-08 18:56:06 +05:30
Naveen Singh f0631e274a ci: pass secrets to testing build workflow (#331) 2025-12-01 18:02:45 +05:30
fossifybot[bot] 90741e28ea chore: update lint baselines (#329)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-12-01 08:04:04 +05:30
Amadɣas d1ed44688e chore(l10n): update Kabyle translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/kab/
Via: Weblate
2025-12-01 02:21:46 +05:30
ButterflyOfFire eb75e8bafc chore(l10n): update Kabyle translations
Currently translated at 72.7% (32 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/kab/
Via: Weblate
2025-12-01 02:21:46 +05:30
Amadɣas 8c723eb004 chore(l10n): update Kabyle translations
Currently translated at 72.7% (32 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/kab/
Via: Weblate
2025-12-01 02:21:46 +05:30
Amadɣas 4ed2868456 chore(l10n): update Kabyle translations
Currently translated at 59.0% (26 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/kab/
Via: Weblate
2025-12-01 02:21:46 +05:30
Amadɣas 547bf5421e chore(l10n): update Kabyle translations
Currently translated at 56.8% (25 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/kab/
Via: Weblate
2025-12-01 02:21:46 +05:30
Amadɣas c97940a3d9 chore(l10n): update Kabyle translations
Currently translated at 50.0% (22 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/kab/
Via: Weblate
2025-12-01 02:21:46 +05:30
ButterflyOfFire 2889538bf7 chore(l10n): update Kabyle translations
Currently translated at 50.0% (22 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/kab/
Via: Weblate
2025-12-01 02:21:46 +05:30
ButterflyOfFire d911299f2f feat(l10n): add Kabyle translations
Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/kab/
Via: Weblate
2025-12-01 02:21:46 +05:30
dependabot[bot] e8ca000dce chore(deps): bump io.nlopez.compose.rules:detekt from 0.4.27 to 0.4.28 (#326)
Bumps [io.nlopez.compose.rules:detekt](https://github.com/mrmans0n/compose-rules) from 0.4.27 to 0.4.28.
- [Release notes](https://github.com/mrmans0n/compose-rules/releases)
- [Commits](https://github.com/mrmans0n/compose-rules/compare/v0.4.27...v0.4.28)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-24 21:47:36 +05:30
dependabot[bot] b098f3dc99 chore(deps): bump fastlane from 2.228.0 to 2.229.0 (#325)
Bumps [fastlane](https://github.com/fastlane/fastlane) from 2.228.0 to 2.229.0.
- [Release notes](https://github.com/fastlane/fastlane/releases)
- [Changelog](https://github.com/fastlane/fastlane/blob/master/CHANGELOG.latest.md)
- [Commits](https://github.com/fastlane/fastlane/compare/fastlane/2.228.0...fastlane/2.229.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-24 19:35:10 +05:30
dependabot[bot] f820b6e617 chore(deps): bump org.fossify:commons from 5.7.2 to 5.7.3 (#316)
Bumps [org.fossify:commons](https://github.com/FossifyOrg/commons) from 5.7.2 to 5.7.3.
- [Commits](https://github.com/FossifyOrg/commons/compare/5.7.2...5.7.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-10 15:40:16 +00:00
dependabot[bot] a0bbc177d7 chore(deps): bump org.fossify:commons from 5.7.1 to 5.7.2 (#314)
Bumps [org.fossify:commons](https://github.com/FossifyOrg/commons) from 5.7.1 to 5.7.2.
- [Commits](https://github.com/FossifyOrg/commons/compare/5.7.1...5.7.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-03 13:34:49 +00:00
fossifybot[bot] 0a0590cab6 chore: update lint baselines (#313)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-11-01 12:30:14 +05:30
fossifybot[bot] 7a4adb8783 chore(release): v1.4.0 (10) (#297)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-10-30 00:27:07 +05:30
Naveen Singh 044ac49a9c fix: pad IME insets in MIME types activity (#304) 2025-10-29 23:23:36 +05:30
Naveen Singh 5921c27328 chore(deps): bump org.fossify.commons to 5.7.1 (#303) 2025-10-29 20:17:49 +05:30
Naveen Singh c12d1d7631 fix: clear files list before populating them again (#301)
Refs: https://github.com/FossifyOrg/File-Manager/issues/76
2025-10-28 14:06:03 +05:30
dependabot[bot] 0c9892a9e5 chore(deps): bump org.jetbrains.kotlin.android from 2.2.20 to 2.2.21 (#300)
Bumps [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) from 2.2.20 to 2.2.21.
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v2.2.20...v2.2.21)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-27 20:23:30 +05:30
Naveen Singh 57fbcea742 feat: bump org.fossify.commons to 5.7.0 (#298)
* feat: bump org.fossify.commons to 5.6.0

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

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/bqi/
Via: Weblate
2025-10-26 23:17:10 +05:30
hosêyň abāspanā 00b21b8b0f chore(l10n): update Luri (Bakhtiari) translations
Currently translated at 40.9% (18 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/bqi/
Via: Weblate
2025-10-26 23:17:10 +05:30
hosêyň abāspanā 18ae5f3229 chore(l10n): update Luri (Bakhtiari) translations
Currently translated at 36.3% (16 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/bqi/
Via: Weblate
2025-10-26 23:17:10 +05:30
hosêyň abāspanā b1b1599cc5 chore(l10n): update Luri (Bakhtiari) translations
Currently translated at 11.3% (5 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/bqi/
Via: Weblate
2025-10-26 23:17:10 +05:30
hosêyň abāspanā 97791feaed chore(l10n): update Luri (Bakhtiari) translations
Currently translated at 9.0% (4 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/bqi/
Via: Weblate
2025-10-26 23:17:10 +05:30
Naveen Singh a4c8da6c31 chore: bump target SDK version to 35 (#241)
* chore: bump target SDK version to 35

* fix: address nullability issues

* chore: bump target SDK version to 36

* refactor: update edge-to-edge implementation

* refactor: update edge-to-edge implementation

* refactor: update edge-to-edge implementation

* refactor: migrate away from deprecated onBackPressed()

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

* docs: update changelog

* build: bump detekt return count limit

* chore: update lint baselines
2025-10-26 22:58:02 +05:30
Naveen Singh e6c465d9d0 revert: remove ACTION_OPEN_DOCUMENT handling (#291)
* Revert "feat: handle `ACTION_OPEN_DOCUMENT` intent (#229)"

This reverts commit 986d7d5215.

* style: shorten line

* style: shorten line
2025-10-21 00:51:33 +05:30
dependabot[bot] ee20fa406f chore(deps): bump org.fossify:commons from 5.3.0 to 5.4.0 (#292)
Bumps [org.fossify:commons](https://github.com/FossifyOrg/commons) from 5.3.0 to 5.4.0.
- [Commits](https://github.com/FossifyOrg/commons/compare/5.3.0...5.4.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-20 14:15:21 +00:00
fossifybot[bot] c55d685022 chore(release): v1.3.1 (9) (#284)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-10-09 22:05:39 +05:30
Naveen Singh 1e2e304f70 chore(deps): bump org.fossify.commons to 5.3.0 (#288) 2025-10-09 21:29:59 +05:30
cat e0b1e884ce chore(l10n): update Danish translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/da/
Via: Weblate
2025-10-09 21:26:14 +05:30
hosêyň abāspanā dfd73bddd0 chore(l10n): update Luri (Bakhtiari) translations
Currently translated at 6.8% (3 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/bqi/
Via: Weblate
2025-10-09 21:26:14 +05:30
cat a88355c9ad chore(l10n): update Danish translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/da/
Via: Weblate
2025-10-09 21:26:14 +05:30
Dan e6593a5c6b chore(l10n): update Ukrainian translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/uk/
Via: Weblate
2025-10-09 21:26:14 +05:30
hosêyň abāspanā 880f383e76 feat(l10n): add Luri (Bakhtiari) translations
Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/bqi/
Via: Weblate
2025-10-09 21:26:14 +05:30
Naveen Singh ab31c828a1 fix: filter out files from hidden folders in storage (#283)
Refs: https://github.com/FossifyOrg/File-Manager/issues/217, https://github.com/FossifyOrg/File-Manager/issues/33
2025-10-02 12:10:47 +05:30
fossifybot[bot] f71a4b7f55 chore: update lint baselines (#282)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-10-01 09:13:51 +05:30
fossifybot[bot] c2482ee5dc chore(release): v1.3.0 (8) (#269) 2025-09-30 15:14:23 +05:30
alanfox2000software de5b6da9d5 chore(l10n): update Chinese (Traditional Han script, Hong Kong) translations
Currently translated at 100.0% (2 of 2 strings)

Translation: Fossify/File-Manager metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager-metadata/zh_Hant_HK/
Via: Weblate
2025-09-30 15:02:49 +05:30
alanfox2000software 4812bc8d4b chore(l10n): update Chinese (Traditional Han script) translations
Currently translated at 100.0% (2 of 2 strings)

Translation: Fossify/File-Manager metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager-metadata/zh_Hant/
Via: Weblate
2025-09-30 15:02:49 +05:30
alanfox2000software 3ec4591b58 chore(l10n): update Chinese (Traditional Han script) translations
Currently translated at 100.0% (2 of 2 strings)

Translation: Fossify/File-Manager metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager-metadata/zh_Hant/
Via: Weblate
2025-09-30 15:02:49 +05:30
alanfox2000software d11a710106 chore(l10n): update Chinese (Traditional Han script, Hong Kong) translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/zh_Hant_HK/
Via: Weblate
2025-09-30 15:02:49 +05:30
alanfox2000software 2cf0fdf7d1 chore(l10n): update Chinese (Traditional Han script) translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/zh_Hant/
Via: Weblate
2025-09-30 15:02:49 +05:30
ovl-1 25fe232c27 chore(l10n): update Norwegian Bokmål translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/nb_NO/
Via: Weblate
2025-09-30 15:02:49 +05:30
IgorTrp f733553ff3 chore(l10n): update Serbian translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/sr/
Via: Weblate
2025-09-30 15:02:49 +05:30
JanandJan Guegel 5b278f6e4a fix: filter out files from hidden folders in recents (#279)
* fix catch files in hidden folders in recent tab

Signed-off-by: Jan Guegel <jan@guegel.eu>

* adjust changelog

Signed-off-by: Jan Guegel <jan@guegel.eu>

* include getDoesFilePathExist check, just to be sure

Signed-off-by: Jan Guegel <jan@guegel.eu>

* apply Code Review suggestions

---------

Signed-off-by: Jan Guegel <jan@guegel.eu>
Co-authored-by: Jan Guegel <jan@guegel.eu>

Refs: https://github.com/FossifyOrg/File-Manager/issues/217
2025-09-30 14:58:54 +05:30
fec28af74f fix: search now ignores accents and diacritics (#274)
* compare normalized search and items to ignore accents and diacritics

* Update CHANGELOG.md

* compare normalized search and items to ignore accents and diacritics

* Update CHANGELOG.md

* fix change print enconding to base64 #104

Signed-off-by: Jan Guegel <jan@guegel.eu>

* ops.. wrong branch..

Signed-off-by: Jan Guegel <jan@guegel.eu>

* Update CHANGELOG.md

* Update CHANGELOG.md

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

* use normalizeString() from commons libs

Signed-off-by: Jan Guegel <jan@guegel.eu>

* use normalizeString() from commons libs also for recentsfragmen

Signed-off-by: Jan Guegel <jan@guegel.eu>

* Apply suggestions from code review

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

* use normalizeString() for StorageFragment

Signed-off-by: Jan Guegel <jan@guegel.eu>

* fix last usage of contains() without normalizeString in search context
fix missing expection toast

Signed-off-by: Jan Guegel <jan@guegel.eu>

* remove Toast from loop

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

---------

Signed-off-by: Jan Guegel <jan@guegel.eu>
Co-authored-by: Jan Guegel <jan@guegel.eu>
Co-authored-by: Naveen Singh <36371707+naveensingh@users.noreply.github.com>

Refs: https://github.com/FossifyOrg/File-Manager/issues/95
2025-09-30 14:53:51 +05:30
dependabot[bot] eb4d38d25a chore(deps): bump org.fossify:commons from 5.1.1 to 5.2.0 (#278)
Bumps org.fossify:commons from 5.1.1 to 5.2.0.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-30 10:14:04 +05:30
JanandJan Guegel 8647071c66 feat: add save as in menu in text editor (#277)
* add save as in menu
rename saveText to saveAsText()
add new save() without confirmation

Signed-off-by: Jan Guegel <jan@guegel.eu>

* fix icon of new menuItem to ic_save_vector

Signed-off-by: Jan Guegel <jan@guegel.eu>

* apply CodeReview input
getFilePath to updateFilePath
menuItem SaveAs never displayed with icon
backButtonPressed now uses Save without confirmation

Signed-off-by: Jan Guegel <jan@guegel.eu>

* fix catch filePath.isEmpty() by opening SaveAs Dialog

Signed-off-by: Jan Guegel <jan@guegel.eu>

---------

Signed-off-by: Jan Guegel <jan@guegel.eu>
Co-authored-by: Jan Guegel <jan@guegel.eu>

Refs: https://github.com/FossifyOrg/File-Manager/issues/224
2025-09-29 21:14:02 +05:30
630d7b2cea fix: avoid truncated prints (#275)
* fix change print enconding to base64 #104

Signed-off-by: Jan Guegel <jan@guegel.eu>

* Update CHANGELOG.md

* Update CHANGELOG.md

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

* use ensureBackgroundThread to avoid ANR on large files

Signed-off-by: Jan Guegel <jan@guegel.eu>

---------

Signed-off-by: Jan Guegel <jan@guegel.eu>
Co-authored-by: Jan Guegel <jan@guegel.eu>
Co-authored-by: Naveen Singh <36371707+naveensingh@users.noreply.github.com>
2025-09-28 13:17:40 +05:30
223e644f36 fix: request permission in SaveAsActivity on first-run (#271)
* Fix "Replace characters on save as function, FileNotFoundException" #250

* Update CHANGELOG.md

update changelog

* Update app/src/main/kotlin/org/fossify/filemanager/activities/SaveAsActivity.kt

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

* Update CHANGELOG.md

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

* Update CHANGELOG.md

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

* Merge branch 'FossifyOrg:main' into main

Signed-off-by: Jan Guegel <jan@guegel.eu>

* Update CHANGELOG.md

* fix PR Feedback

Signed-off-by: Jan Guegel <jan@guegel.eu>

* fix duplicated code by moving it to SimpleActivity.kt

Signed-off-by: Jan Guegel <jan@guegel.eu>

* moved handleStoragePermissions() to SimpleActivity.kt from MainActivity.kt
introduced tryInitFileManager() to SaveAsActivity.kt
removed const MANAGE_STORAGE_RC from MainActivity.kt

Signed-off-by: Jan Guegel <jan@guegel.eu>

* adjusted toast in try catch in storage permission action

Signed-off-by: Jan Guegel <jan@guegel.eu>

* catch ActivityNotFoundException with fallback of SecurityException

Signed-off-by: Jan Guegel <jan@guegel.eu>

* Apply suggestions from code review

thanks for the feedback!

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

* remove indent

Signed-off-by: Jan Guegel <jan@guegel.eu>

* adjust changelog

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

---------

Signed-off-by: Jan Guegel <jan@guegel.eu>
Co-authored-by: Jan Guegel <jan@guegel.eu>
Co-authored-by: Naveen Singh <36371707+naveensingh@users.noreply.github.com>

Refs: https://github.com/FossifyOrg/File-Manager/issues/85
2025-09-27 13:15:56 +05:30
055bfbd3b8 fix: sanitize filenames before saving (#270)
* Fix "Replace characters on save as function, FileNotFoundException" #250

* Update CHANGELOG.md

update changelog

* Update app/src/main/kotlin/org/fossify/filemanager/activities/SaveAsActivity.kt

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

* Update CHANGELOG.md

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

* Update CHANGELOG.md

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

---------

Co-authored-by: Jan Guegel <jan@guegel.eu>
Co-authored-by: Naveen Singh <36371707+naveensingh@users.noreply.github.com>

Refs: https://github.com/FossifyOrg/File-Manager/issues/250
2025-09-26 12:28:58 +05:30
Naveen Singh ceb7a5f2a2 fix: update changelog and commons (#268)
* fix: update changelog

* chore(deps): bump org.fossify:commons to 5.1.0

* chore(deps): update commons again
2025-09-25 20:50:02 +05:30
dependabot[bot] 20aee9162d chore(deps): bump rexml from 3.4.1 to 3.4.2 (#264)
Bumps [rexml](https://github.com/ruby/rexml) from 3.4.1 to 3.4.2.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.4.1...v3.4.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-18 10:31:36 +05:30
fossifybot[bot]andNaveen Singh 7a5f797a2a chore(release): v1.2.3 (7) (#262)
* chore(release): v1.2.3 (7)

* docs: remove translations entry

Removed outdated changelog entries and clarified fixes.

* docs: remove translations entry

---------

Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
Co-authored-by: Naveen Singh <36371707+naveensingh@users.noreply.github.com>
2025-09-17 10:38:43 +05:30
dependabot[bot] 10a83a18b1 chore(deps): bump org.jetbrains.kotlin.android from 2.2.10 to 2.2.20 (#263)
Bumps [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) from 2.2.10 to 2.2.20.
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v2.2.10...v2.2.20)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-16 16:04:46 +05:30
Naveen Singh fb3384fb08 fix: trust the system to check whether a file is a directory (#261)
Condition was originally introduced in 12b96e159d

Refs: https://github.com/FossifyOrg/File-Manager/issues/80
2025-09-15 10:33:51 +05:30
Naveen Singh 666c8d8c53 docs: fix broken discussion links in issue templates (#260) 2025-09-11 18:37:27 +05:30
Naveen Singh 8c711104ed chore(release): v1.2.2 (6) (#259) 2025-09-01 20:07:22 +05:30
fossifybot[bot] e7186a9c79 chore(release): v1.2.1 (5) (#254)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-09-01 13:45:22 +00:00
dependabot[bot] 55eff8a6ae chore(deps): bump org.fossify:commons from 5.0.0 to 5.0.2 (#258)
Bumps [org.fossify:commons](https://github.com/FossifyOrg/commons) from 5.0.0 to 5.0.2.
- [Commits](https://github.com/FossifyOrg/commons/compare/5.0.0...5.0.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-01 19:11:16 +05:30
Matheus Campos 8b76e7f28a chore(l10n): update Spanish (American) translations
Currently translated at 6.8% (3 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/es_US/
Via: Weblate
2025-09-01 19:04:31 +05:30
GaucovyAero 0bee809420 chore(l10n): update Slovak translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/sk/
Via: Weblate
2025-09-01 19:04:31 +05:30
Kfir Pshititsky 2b51c3f2fa chore(l10n): update Hebrew translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/he/
Via: Weblate
2025-09-01 19:04:31 +05:30
Kfir Pshititsky 1b03d62494 chore(l10n): update Hebrew translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/he/
Via: Weblate
2025-09-01 19:04:31 +05:30
fossifybot[bot] e9ecfe53a4 chore: update lint baselines (#256)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-09-01 10:01:03 +05:30
Naveen Singh da8202ee2d fix: set progress after computing total size (#253)
Refs: https://github.com/FossifyOrg/File-Manager/issues/251
2025-08-26 02:26:13 +05:30
Naveen Singh 31d4fdbf4f refactor(settings): remove color customization lock and add thank you button (#252) 2025-08-25 04:02:37 +05:30
Naveen Singh f68fe061e0 chore(deps): downgrade com.android.application from 8.12.0 to 8.11.1 (#249) 2025-08-22 04:57:19 +05:30
Naveen Singh f24a8089d2 docs: redirect questions to general discussions (#247) 2025-08-20 16:16:40 +05:30
dependabot[bot] 1571214647 chore(deps): bump org.jetbrains.kotlin.android from 2.2.0 to 2.2.10 (#246)
Bumps [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) from 2.2.0 to 2.2.10.
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v2.2.0...v2.2.10)

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

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

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

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

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-09 22:51:12 +05:30
fossifybot[bot] 39f9b00f6a chore: update lint baselines (#242)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-08-01 09:16:47 +05:30
dependabot[bot] cfc1a89300 chore(deps): bump io.nlopez.compose.rules:detekt from 0.4.22 to 0.4.25 (#238)
Bumps [io.nlopez.compose.rules:detekt](https://github.com/mrmans0n/compose-rules) from 0.4.22 to 0.4.25.
- [Release notes](https://github.com/mrmans0n/compose-rules/releases)
- [Commits](https://github.com/mrmans0n/compose-rules/compare/v0.4.22...v0.4.25)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-21 22:42:18 +05:30
dependabot[bot] 5e8cd437d2 chore(deps): bump org.fossify:commons from 4.2.0 to 4.3.0 (#234)
Bumps [org.fossify:commons](https://github.com/FossifyOrg/commons) from 4.2.0 to 4.3.0.
- [Commits](https://github.com/FossifyOrg/commons/compare/4.2.0...4.3.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-14 23:44:40 +05:30
dependabot[bot] 3832e9db5d chore(deps): bump com.android.application from 8.11.0 to 8.11.1 (#233)
Bumps com.android.application from 8.11.0 to 8.11.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-14 22:45:52 +05:30
fossifybot[bot] 1f61e17fd3 chore(release): v1.2.0 (4) (#210)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-07-12 16:56:47 +05:30
Quentin PAGÈS 259d185b95 chore(l10n): update Occitan translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/oc/
Via: Weblate
2025-07-12 16:12:30 +05:30
Quentin PAGÈS c69d10b8fe chore(l10n): update French translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/fr/
Via: Weblate
2025-07-12 16:12:30 +05:30
Quentin PAGÈS 21637a6d8a chore(l10n): update Occitan translations
Currently translated at 81.8% (36 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/oc/
Via: Weblate
2025-07-12 16:12:30 +05:30
Ismail Choudhury ac4be152ed chore(l10n): update English (United Kingdom) translations
Currently translated at 2.2% (1 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/en_GB/
Via: Weblate
2025-07-12 16:12:30 +05:30
Quentin PAGÈS e52a9bc776 feat(l10n): add Occitan translations
Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/oc/
Via: Weblate
2025-07-12 16:12:30 +05:30
jonnysemon 1066344336 chore(l10n): update Arabic translations
Currently translated at 100.0% (2 of 2 strings)

Translation: Fossify/File-Manager metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager-metadata/ar/
Via: Weblate
2025-07-12 16:12:30 +05:30
jonnysemon d8500c0c2a chore(l10n): update Arabic translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/ar/
Via: Weblate
2025-07-12 16:12:30 +05:30
AND 81276fe6c0 chore(l10n): update Macedonian translations
Currently translated at 4.5% (2 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/mk/
Via: Weblate
2025-07-12 16:12:30 +05:30
Naveen Singh 70ad7a07bc chore(l10n): update Portuguese (Brazil) translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/pt_BR/
Via: Weblate
2025-07-12 16:12:30 +05:30
Petri Hämäläinen ec0f0f7893 chore(l10n): update Finnish translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/fi/
Via: Weblate
2025-07-12 16:12:30 +05:30
Oasis Tri c2953276e2 chore(l10n): update French translations
Currently translated at 100.0% (2 of 2 strings)

Translation: Fossify/File-Manager metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager-metadata/fr/
Via: Weblate
2025-07-12 16:12:30 +05:30
elid 0b208bf63b chore(l10n): update Hebrew translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/he/
Via: Weblate
2025-07-12 16:12:30 +05:30
Naveen Singh 141010a523 fix: save timestamp when compressing items (#232)
* fix: save timestamp when compressing items

See: https://github.com/FossifyOrg/File-Manager/issues/189

* style: reformat code

* chore: update baselines

* docs: update changelog
2025-07-12 15:58:50 +05:30
dependabot[bot]andNaveen Singh 8d2a67dc50 chore(deps): bump com.android.application from 8.10.1 to 8.11.0 (#223)
* chore(deps): bump com.android.application from 8.10.1 to 8.11.0

Bumps com.android.application from 8.10.1 to 8.11.0.

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

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

* chore(deps): update gradle wrapper

---------

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

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-04 21:19:27 +05:30
Naveen Singh 986d7d5215 feat: handle ACTION_OPEN_DOCUMENT intent (#229)
See: https://github.com/FossifyOrg/File-Manager/issues/213
2025-07-04 20:36:50 +05:30
Naveen Singh 769c0dbb6a chore: ignore extra translations and update detekt rules
* chore: ignore extra translations in lint

Extra translations are removed automatically by Weblate

* chore: update detekt rules

More compose-friendly

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

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-01 17:26:22 +05:30
Naveen Singh 1d16ff7505 chore(deps): bump RootTools to 965c154e20 (#227) 2025-07-01 17:17:20 +05:30
Naveen Singh e2b73dd6e7 chore(deps): switch to naveensingh/RootShell (#226)
Just another ancient relic that needed resurrection.
2025-07-01 16:56:57 +05:30
dependabot[bot]andNaveen Singh 24122e36f8 chore(deps): bump org.fossify:commons from 3.0.5 to 4.0.0 (#215)
* chore(deps): bump org.fossify:commons from 3.0.5 to 4.0.0

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

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

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

* fix(i18n): generate locale config automatically

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

---------

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

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-24 16:35:58 +05:30
Naveen Singh 6c87991332 chore: update lint rules and baselines (#218) 2025-06-24 16:08:05 +05:30
dependabot[bot] 467021f8c1 chore(deps): bump org.fossify:commons from 3.0.3 to 3.0.5 (#212)
Bumps [org.fossify:commons](https://github.com/FossifyOrg/commons) from 3.0.3 to 3.0.5.
- [Commits](https://github.com/FossifyOrg/commons/compare/3.0.3...3.0.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-17 19:07:39 +05:30
dependabot[bot] 96c6e28800 chore(deps): bump fastlane from 2.227.2 to 2.228.0 (#211)
Bumps [fastlane](https://github.com/fastlane/fastlane) from 2.227.2 to 2.228.0.
- [Release notes](https://github.com/fastlane/fastlane/releases)
- [Changelog](https://github.com/fastlane/fastlane/blob/master/CHANGELOG.latest.md)
- [Commits](https://github.com/fastlane/fastlane/compare/fastlane/2.227.2...fastlane/2.228.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-16 20:46:38 +05:30
Naveen Singh 21e2ab1510 docs(changelog): add translations entry (#209) 2025-06-09 20:08:15 +05:30
Naveen Singh 9ffeb94a35 ci: add fastlane metadata validation and update release trigger
* ci: auto trigger release pull requests when on changelog update

* chore: add code owners

* ci: add fastlane metadata validation
2025-06-09 14:48:47 +05:30
dependabot[bot] 5738639e97 chore(deps): bump org.fossify:commons from 3.0.0 to 3.0.3 (#204)
Bumps org.fossify:commons from 3.0.0 to 3.0.3.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-07 15:18:28 +05:30
Naveen Singh 32aeae6b38 ci: update release workflows 2025-06-06 20:43:23 +05:30
elid 416cf9675a chore(l10n): update Hebrew translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/he/
Via: Weblate
2025-06-06 18:43:17 +05:30
mastoduy 4e0b5ba7b6 chore(l10n): update Vietnamese translations
Currently translated at 100.0% (2 of 2 strings)

Translation: Fossify/File-Manager metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager-metadata/vi/
Via: Weblate
2025-06-06 18:43:17 +05:30
mastoduy d3fe0f8bc4 chore(l10n): update Vietnamese translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/vi/
Via: Weblate
2025-06-06 18:43:17 +05:30
Vaclovas Intas 8151b2dd00 chore(l10n): update Lithuanian translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/lt/
Via: Weblate
2025-06-06 18:43:17 +05:30
elid f9f37718de chore(l10n): update Hebrew translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/he/
Via: Weblate
2025-06-06 18:43:17 +05:30
Bora Atıcı ba605b59e3 chore(l10n): update Turkish translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/tr/
Via: Weblate
2025-06-06 18:43:17 +05:30
abdelbasset jabrane bd7d2204ee chore(l10n): update Arabic translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/ar/
Via: Weblate
2025-06-06 18:43:17 +05:30
dependabot[bot] d8720bb355 chore(deps): bump org.fossify:commons from 2.0.1 to 3.0.0 (#203)
Bumps org.fossify:commons from 2.0.1 to 3.0.0.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-02 19:42:12 +05:30
dependabot[bot] f23a4925a7 chore(deps): bump com.android.application from 8.10.0 to 8.10.1 (#198)
Bumps com.android.application from 8.10.0 to 8.10.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-29 12:42:09 +05:30
Naveen Singh 30dd2397a2 ci(dependabot): add jitpack registry for gradle 2025-05-29 11:47:39 +05:30
Flavio F. M 9dad0da353 chore(l10n): update Portuguese (Brazil) translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/pt_BR/
Via: Weblate
2025-05-26 15:15:51 +05:30
109247019824 6f96f85d1a chore(l10n): update Bulgarian translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/bg/
Via: Weblate
2025-05-26 15:15:51 +05:30
Yurt Page 27acc647d8 chore(l10n): update Russian translations
Currently translated at 100.0% (2 of 2 strings)

Translation: Fossify/File-Manager metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager-metadata/ru/
Via: Weblate
2025-05-26 15:15:51 +05:30
Yurt Page f3c01f4846 chore(l10n): update Russian translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/ru/
Via: Weblate
2025-05-26 15:15:51 +05:30
elid 33b783bf3c chore(l10n): update Hebrew translations
Currently translated at 100.0% (2 of 2 strings)

Translation: Fossify/File-Manager metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager-metadata/he/
Via: Weblate
2025-05-26 15:15:51 +05:30
elid 45f9b5c261 chore(l10n): update Hebrew translations
Currently translated at 100.0% (44 of 44 strings)

Translation: Fossify/File-Manager
Translate-URL: https://hosted.weblate.org/projects/fossify/file-manager/he/
Via: Weblate
2025-05-26 15:15:51 +05:30
Naveen Singh ea082d2dd1 build: move app version to gradle.properties (#193) 2025-05-26 14:16:19 +05:30
Timur Erofeev ef23996ced fix: preserve timestamps when decompressing ZIP files
* Preserve modified date when unzip files.

* Preserve modified date when unzip files via actions menu

- Additionally handle the case with 0 last modified time.
2025-05-25 07:50:35 +05:30
Naveen Singh 68aec3ac61 ci: use fossifybot github app token 2025-05-22 19:34:56 +05:30
dependabot[bot] 93893ce919 chore(deps): bump io.gitlab.arturbosch.detekt from 1.23.3 to 1.23.8 (#161)
Bumps [io.gitlab.arturbosch.detekt](https://github.com/detekt/detekt) from 1.23.3 to 1.23.8.
- [Release notes](https://github.com/detekt/detekt/releases)
- [Commits](https://github.com/detekt/detekt/compare/v1.23.3...v1.23.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-22 09:21:38 +05:30
dependabot[bot]andNaveen Singh 222995b4b6 chore(deps): bump org.jetbrains.kotlin.android from 1.9.25 to 2.1.21 (#175)
* chore(deps): bump org.jetbrains.kotlin.android from 1.9.25 to 2.1.21

Bumps [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) from 1.9.25 to 2.1.21.
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v1.9.25...v2.1.21)

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

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

* build: update archives name property to use archivesBaseName

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Naveen Singh <snaveen935@gmail.com>
2025-05-22 09:21:20 +05:30
125 changed files with 2198 additions and 1032 deletions

No files matched your search

+2
View File
@@ -0,0 +1,2 @@
# Auto-generated file. DO NOT EDIT.
1.6.2 (14)
+1 -4
View File
@@ -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 -1
View File
@@ -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.
+1 -3
View File
@@ -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
+20 -6
View File
@@ -1,4 +1,18 @@
version: 2
registries:
maven-google:
type: maven-repository
url: "https://dl.google.com/dl/android/maven2/"
maven-central:
type: maven-repository
url: "https://repo.maven.apache.org/maven2"
jitpack:
type: maven-repository
url: "https://www.jitpack.io"
updates:
- package-ecosystem: "bundler"
directory: "/"
@@ -8,19 +22,21 @@ updates:
prefix: "chore"
prefix-development: "chore"
include: "scope"
assignees:
- "naveensingh"
- package-ecosystem: "gradle"
directory: "/"
registries:
- maven-central
- maven-google
- jitpack
schedule:
interval: "weekly"
commit-message:
prefix: "chore"
prefix-development: "chore"
include: "scope"
assignees:
- "naveensingh"
ignore:
- dependency-name: "org.fossify:commons"
- package-ecosystem: "github-actions"
directory: "/"
@@ -30,5 +46,3 @@ updates:
prefix: "chore"
prefix-development: "chore"
include: "scope"
assignees:
- "naveensingh"
-25
View File
@@ -1,25 +0,0 @@
name: Github Release
on:
push:
tags:
- "*.*.*"
permissions:
contents: read
jobs:
call-release-workflow:
uses: FossifyOrg/.github/.github/workflows/release.yml@main
with:
tag: ${{ github.ref_name }}
flavor: "foss"
package_name: "org.fossify.filemanager"
secrets:
ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }}
SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }}
SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD }}
SERVICE_ACCOUNT_JSON_KEY_BASE64: ""
FOSSIFYBOT_TOKEN: ${{ secrets.FOSSIFYBOT_TOKEN }}
-46
View File
@@ -1,46 +0,0 @@
name: Google Play Release
on:
workflow_dispatch:
inputs:
track:
description: "Google Play Store release track"
required: false
type: choice
default: "beta"
options:
- internal
- alpha
- beta
- production
rollout:
description: "Rollout fraction (0.0-1.0)"
required: false
type: string
default: "0.05"
validate_only:
description: "Fastlane dry-run?"
required: false
type: boolean
default: false
permissions:
contents: read
jobs:
call-release-workflow:
uses: FossifyOrg/.github/.github/workflows/release.yml@main
with:
flavor: "gplay"
package_name: "org.fossify.filemanager"
track: ${{ github.event.inputs.track }}
rollout: ${{ github.event.inputs.rollout }}
validate_only: ${{ github.event.inputs.validate_only == 'true' }}
secrets:
ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }}
SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }}
SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD }}
SERVICE_ACCOUNT_JSON_KEY_BASE64: ${{ secrets.SERVICE_ACCOUNT_JSON_KEY_BASE64 }}
FOSSIFYBOT_TOKEN: ""
+1 -2
View File
@@ -11,5 +11,4 @@ on:
jobs:
call-image-minimizer-workflow:
uses: FossifyOrg/.github/.github/workflows/image-minimizer.yml@main
secrets:
FOSSIFYBOT_TOKEN: ${{ secrets.FOSSIFYBOT_TOKEN }}
secrets: inherit
+2 -3
View File
@@ -2,11 +2,10 @@ name: No Response
on:
schedule:
- cron: '0 12 * * *' # Runs daily at noon
- cron: "0 12 * * *" # Runs daily at noon
workflow_dispatch:
jobs:
call-no-response-workflow:
uses: FossifyOrg/.github/.github/workflows/no-response.yml@main
secrets:
FOSSIFYBOT_TOKEN: ${{ secrets.FOSSIFYBOT_TOKEN }}
secrets: inherit
+1 -6
View File
@@ -4,12 +4,7 @@ on:
pull_request_target:
types: [opened]
permissions:
contents: read
# write permission is not required as FOSSIFYBOT_TOKEN is used
jobs:
call-pr-labeler-workflow:
uses: FossifyOrg/.github/.github/workflows/pr-labeler.yml@main
secrets:
FOSSIFYBOT_TOKEN: ${{ secrets.FOSSIFYBOT_TOKEN }}
secrets: inherit
+5 -1
View File
@@ -2,7 +2,11 @@ name: PR
on:
pull_request:
branches: [ master ]
branches: [main]
permissions:
contents: read
pull-requests: read
jobs:
call-pr-workflow:
+15
View File
@@ -0,0 +1,15 @@
name: Prepare Release PR
on:
repository_dispatch:
types: [prepare-release]
workflow_dispatch:
push:
branches: [main]
paths:
- "CHANGELOG.md"
jobs:
call-release-pr:
uses: FossifyOrg/.github/.github/workflows/prepare-release-pr.yml@main
secrets: inherit
-17
View File
@@ -1,17 +0,0 @@
name: Release Commenter
on:
release:
types: [published]
permissions:
contents: read
issues: read
pull-requests: read
# write permission is not required as FOSSIFYBOT_TOKEN is used
jobs:
call-release-commenter:
uses: FossifyOrg/.github/.github/workflows/release-commenter.yml@main
secrets:
FOSSIFYBOT_TOKEN: ${{ secrets.FOSSIFYBOT_TOKEN }}
+17
View File
@@ -0,0 +1,17 @@
name: Release
on:
push:
branches: [ main ]
paths:
- ".fossify/release-marker.txt"
jobs:
call-release-workflow:
name: Release
uses: FossifyOrg/.github/.github/workflows/release.yml@main
with:
track: ${{ vars.GPLAY_TRACK || 'beta' }}
rollout: ${{ vars.GPLAY_ROLLOUT || '0.05' }}
validate_only: ${{ vars.GPLAY_DRY_RUN == 'true' }}
secrets: inherit
+10 -2
View File
@@ -2,9 +2,17 @@ name: Testing build (on PR)
on:
pull_request:
branches: [ master ]
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
+13
View File
@@ -0,0 +1,13 @@
name: Update Fossify Commons
on:
repository_dispatch:
types: [update-commons]
workflow_dispatch:
schedule:
- cron: "0 6 * * 0"
jobs:
update-commons:
uses: FossifyOrg/.github/.github/workflows/update-commons.yml@main
secrets: inherit
@@ -0,0 +1,13 @@
name: Update lint baselines
on:
repository_dispatch:
types: [update-lint-baselines]
workflow_dispatch:
schedule:
- cron: "0 0 1 * *"
jobs:
update-lint-baselines:
uses: FossifyOrg/.github/.github/workflows/update-lint-baselines.yml@main
secrets: inherit
@@ -0,0 +1,15 @@
name: Fastlane metadata validation
on:
push:
branches: [main]
paths:
- "fastlane/**"
pull_request:
branches: [main]
paths:
- "fastlane/**"
jobs:
validate:
uses: FossifyOrg/.github/.github/workflows/validate-fastlane-metadata.yml@main
+1
View File
@@ -10,3 +10,4 @@ keystore.jks
keystore.properties
fastlane/fastlane.json
fastlane/report.xml
.kotlin/
+106 -16
View File
@@ -1,5 +1,4 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
@@ -7,23 +6,96 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
## [1.1.0] - 2025-05-21
## [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
### Fixed
- File modification time is now preserved when compressing/decompressing files ([#176])
## [1.1.0] - 2025-05-21
### Added
- Added SHA-1 and SHA-256 hashes to file properties ([#149])
### Changed
- Replaced checkboxes with switches
- Updated translations
### Removed
- Dropped support for Android 7 and older versions
### Fixed
- Files saved via `Save As` option are now named properly ([#37])
- Decompressed folders are now named properly ([#120])
- Text editor no longer resets on device rotation ([#106])
@@ -33,36 +105,54 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Fixed invisible content when using app lock ([#150])
## [1.0.1] - 2024-03-17
### Changed
- Folders now use primary/accent color.
- Enhanced search performance in the text editor.
- Added some translations.
### Fixed
- Addressed unnecessary delays when renaming files.
- Fixed unresponsive behavior when viewing contents of a zip file.
- Disabled the use of invalid characters such as `/` for batch file renaming.
- Fixed invisible sort menu when viewing storage summary.
## [1.0.0] - 2024-01-07
### Added
- Initial release
[Unreleased]: https://github.com/FossifyOrg/File-Manager/compare/1.1.0...HEAD
[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
[1.0.0]: https://github.com/FossifyOrg/File-Manager/releases/tag/1.0.0
[#27]: https://github.com/FossifyOrg/File-Manager/issues/27
[#37]: https://github.com/FossifyOrg/File-Manager/issues/37
[#136]: https://github.com/FossifyOrg/File-Manager/issues/136
[#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.6.2...HEAD
[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
[1.0.0]: https://github.com/FossifyOrg/File-Manager/releases/tag/1.0.0
+1
View File
@@ -0,0 +1 @@
* @naveensingh
+149 -114
View File
@@ -1,112 +1,116 @@
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.3.2)
aws-partitions (1.1097.0)
aws-sdk-core (3.223.0)
aws-eventstream (1.4.0)
aws-partitions (1.1287.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.100.0)
aws-sdk-core (~> 3, >= 3.216.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.185.0)
aws-sdk-core (~> 3, >= 3.216.0)
aws-sdk-s3 (1.232.1)
aws-sdk-core (~> 3, >= 3.256.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.5)
aws-sigv4 (1.11.0)
aws-sigv4 (1.12.1)
aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4)
base64 (0.2.0)
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.6.20260907)
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.1)
logger
faraday (2.14.4)
faraday-net_http (>= 2.0, < 3.5)
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.227.2)
CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.8, < 3.0.0)
faraday-net_http (3.4.4)
net-http (~> 0.5)
faraday-retry (2.4.0)
faraday (~> 2.0)
fastimage (2.4.1)
fastlane (2.240.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)
excon (>= 0.71.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.4.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-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 +119,135 @@ 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.108.0)
google-apis-core (>= 0.15.0, < 2.a)
google-apis-core (1.2.5)
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.67.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.3.1)
base64 (~> 0.2)
faraday (>= 1.0, < 3.a)
google-cloud-errors (1.7.0)
google-cloud-storage (1.62.0)
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.0)
googleauth (1.17.4)
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.11.3)
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.2.1)
nkf (0.2.0)
optparse (0.6.0)
naturally (2.3.0)
net-http (0.9.1)
uri (>= 0.11.1)
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.2.1)
pp (0.6.4)
prettyprint
prettyprint (0.2.0)
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.0.0)
erb
prism (>= 1.6.0)
rbs (>= 4.0.0)
tsort
reline (0.7.0)
io-console (~> 0.5)
representable (3.2.0)
declarative (< 0.1.0)
trailblazer-option (>= 0.1.1, < 0.2.0)
uber (< 0.2.0)
retriable (3.1.2)
rexml (3.4.1)
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.0)
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-table (4.0.0)
unicode-display_width (>= 1.1.1, < 4)
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.1)
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)
+26 -12
View File
@@ -1,11 +1,10 @@
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.archivesName
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import org.jetbrains.kotlin.konan.properties.Properties
import java.io.FileInputStream
plugins {
alias(libs.plugins.android)
alias(libs.plugins.kotlinAndroid)
alias(libs.plugins.detekt)
}
@@ -22,16 +21,20 @@ 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()
defaultConfig {
applicationId = libs.versions.app.version.appId.get()
applicationId = project.property("APP_ID").toString()
minSdk = project.libs.versions.app.build.minimumSDK.get().toInt()
targetSdk = project.libs.versions.app.build.targetSDK.get().toInt()
versionName = project.libs.versions.app.version.versionName.get()
versionCode = project.libs.versions.app.version.versionCode.get().toInt()
archivesName.set("file-manager-$versionCode")
versionName = project.property("VERSION_NAME").toString()
versionCode = project.property("VERSION_CODE").toString().toInt()
multiDexEnabled = true
vectorDrawables.useSupportLibrary = true
}
@@ -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 {
@@ -98,17 +100,25 @@ android {
includeInApk = false
}
tasks.withType<KotlinCompile> {
kotlinOptions.jvmTarget = project.libs.versions.app.build.kotlinJVMTarget.get()
androidResources {
@Suppress("UnstableApiUsage")
generateLocaleConfig = true
}
namespace = libs.versions.app.version.appId.get()
tasks.withType<KotlinCompile> {
compilerOptions.jvmTarget.set(
JvmTarget.fromTarget(project.libs.versions.app.build.kotlinJVMTarget.get())
)
}
namespace = project.property("APP_ID").toString()
lint {
checkReleaseBuilds = false
abortOnError = true
warningsAsErrors = true
warningsAsErrors = false
baseline = file("lint-baseline.xml")
lintConfig = rootProject.file("lint.xml")
}
bundle {
@@ -120,6 +130,9 @@ android {
detekt {
baseline = file("detekt-baseline.xml")
config.setFrom("$rootDir/detekt.yml")
buildUponDefaultConfig = true
allRules = false
}
dependencies {
@@ -131,4 +144,5 @@ dependencies {
implementation(libs.gestureviews)
implementation(libs.autofittextview)
implementation(libs.zip4j)
detektPlugins(libs.compose.detekt)
}
+6 -74
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" ?>
<SmellBaseline>
<ManuallySuppressedIssues></ManuallySuppressedIssues>
<ManuallySuppressedIssues/>
<CurrentIssues>
<ID>ComplexCondition:Activity.kt$(hide &amp;&amp; filename.startsWith('.')) || (!hide &amp;&amp; !filename.startsWith('.'))</ID>
<ID>ComplexCondition:ItemsAdapter.kt$ItemsAdapter$activity.getDoesFilePathExist(source) &amp;&amp; activity.getIsPathDirectory(source) &amp;&amp; sourceFile.list()?.isEmpty() == true &amp;&amp; sourceFile.getProperSize(true) == 0L &amp;&amp; sourceFile.getFileCount(true) == 0</ID>
@@ -9,8 +9,7 @@
<ID>ComplexCondition:MimeTypesActivity.kt$MimeTypesActivity$mimetype != "image" &amp;&amp; mimetype != "video" &amp;&amp; mimetype != "audio" &amp;&amp; mimetype != "text" &amp;&amp; !extraAudioMimeTypes.contains(fullMimetype) &amp;&amp; !extraDocumentMimeTypes.contains(fullMimetype) &amp;&amp; !archiveMimeTypes.contains(fullMimetype)</ID>
<ID>ComplexCondition:ReadTextActivity.kt$ReadTextActivity$requestCode == SELECT_SAVE_FILE_INTENT &amp;&amp; resultCode == Activity.RESULT_OK &amp;&amp; resultData != null &amp;&amp; resultData.data != null</ID>
<ID>CyclomaticComplexMethod:DecompressActivity.kt$DecompressActivity$private fun decompressTo(destination: String)</ID>
<ID>CyclomaticComplexMethod:DecompressActivity.kt$DecompressActivity$private fun fillAllListItems(uri: Uri, callback: () -&gt; Unit)</ID>
<ID>CyclomaticComplexMethod:ItemsAdapter.kt$ItemsAdapter$@SuppressLint("NewApi") private fun compressPaths(sourcePaths: List&lt;String&gt;, targetPath: String, password: String? = null): Boolean</ID>
<ID>CyclomaticComplexMethod:ItemsAdapter.kt$ItemsAdapter$@SuppressLint("NewApi") private fun compressPaths( sourcePaths: List&lt;String&gt;, targetPath: String, password: String? = null ): Boolean</ID>
<ID>CyclomaticComplexMethod:ItemsAdapter.kt$ItemsAdapter$override fun actionItemPressed(id: Int)</ID>
<ID>CyclomaticComplexMethod:MainActivity.kt$MainActivity$private fun setupOptionsMenu()</ID>
<ID>CyclomaticComplexMethod:MimeTypesActivity.kt$MimeTypesActivity$private fun getProperFileDirItems(callback: (ArrayList&lt;FileDirItem&gt;) -&gt; Unit)</ID>
@@ -23,11 +22,6 @@
<ID>EmptyFunctionBlock:MimeTypesActivity.kt$MimeTypesActivity${}</ID>
<ID>EmptyFunctionBlock:StorageFragment.kt$StorageFragment${}</ID>
<ID>LargeClass:ItemsAdapter.kt$ItemsAdapter : MyRecyclerViewAdapterOnPopupTextUpdate</ID>
<ID>LargeClass:MainActivity.kt$MainActivity : SimpleActivity</ID>
<ID>LongMethod:DecompressActivity.kt$DecompressActivity$private fun fillAllListItems(uri: Uri, callback: () -&gt; Unit)</ID>
<ID>LongMethod:ItemsAdapter.kt$ItemsAdapter$@SuppressLint("NewApi") private fun compressPaths(sourcePaths: List&lt;String&gt;, targetPath: String, password: String? = null): Boolean</ID>
<ID>LongMethod:MimeTypesActivity.kt$MimeTypesActivity$private fun getProperFileDirItems(callback: (ArrayList&lt;FileDirItem&gt;) -&gt; Unit)</ID>
<ID>LongParameterList:ItemsAdapter.kt$ItemsAdapter$( activity: SimpleActivity, var listItems: MutableList&lt;ListItem&gt;, private val listener: ItemOperationsListener?, recyclerView: MyRecyclerView, private val isPickMultipleIntent: Boolean, private val swipeRefreshLayout: SwipeRefreshLayout?, canHaveIndividualViewType: Boolean = true, itemClick: (Any) -&gt; Unit, )</ID>
<ID>LoopWithTooManyJumpStatements:DecompressActivity.kt$DecompressActivity$while</ID>
<ID>LoopWithTooManyJumpStatements:StorageFragment.kt$StorageFragment$do</ID>
<ID>MagicNumber:Config.kt$Config$1.2f</ID>
@@ -41,15 +35,11 @@
<ID>MagicNumber:ItemsAdapter.kt$ItemsAdapter$180</ID>
<ID>MagicNumber:ItemsAdapter.kt$ItemsAdapter$4</ID>
<ID>MagicNumber:ItemsFragment.kt$ItemsFragment$3</ID>
<ID>MagicNumber:Long.kt$1000.0</ID>
<ID>MagicNumber:MimeTypesActivity.kt$MimeTypesActivity$1000</ID>
<ID>MagicNumber:ReadTextActivity.kt$ReadTextActivity$250</ID>
<ID>MagicNumber:ReadTextActivity.kt$ReadTextActivity$50</ID>
<ID>MagicNumber:RecentsFragment.kt$RecentsFragment$1000</ID>
<ID>MagicNumber:RecentsFragment.kt$RecentsFragment$3</ID>
<ID>MagicNumber:RecentsFragment.kt$RecentsFragment$50</ID>
<ID>MagicNumber:RootHelpers.kt$RootHelpers.&lt;no name provided&gt;$5</ID>
<ID>MagicNumber:StorageFragment.kt$StorageFragment$1000</ID>
<ID>MagicNumber:StorageFragment.kt$StorageFragment$100000</ID>
<ID>MagicNumber:StorageFragment.kt$StorageFragment$2000</ID>
<ID>MagicNumber:StorageFragment.kt$StorageFragment$3</ID>
@@ -62,39 +52,11 @@
<ID>MaxLineLength:CompressAsDialog.kt$CompressAsDialog$val indexOfDot = if (filename.contains('.') &amp;&amp; !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$binding.decompressToolbar.title = realPath?.getFilenameFromPath() ?: Uri.decode(uri.toString().getFilenameFromPath())</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$"${baseConfig.OTGTreeUri}/document/${baseConfig.OTGPartition}%3A${itemToLoad.substring(baseConfig.OTGPath.length).replace("/", "%2F")}"</ID>
<ID>MaxLineLength:ItemsAdapter.kt$ItemsAdapter$(drawable as LayerDrawable).findDrawableByLayerId(R.id.shortcut_folder_background).applyColorFilter(appIconColor)</ID>
<ID>MaxLineLength:ItemsAdapter.kt$ItemsAdapter$File(path).listFiles()?.filter { if (shouldShowHidden) true else !it.name.startsWith('.') }</ID>
<ID>MaxLineLength:ItemsAdapter.kt$ItemsAdapter$activity.getDocumentFile(path)?.listFiles()?.filter { if (shouldShowHidden) true else !it.name!!.startsWith(".") }</ID>
<ID>MaxLineLength:ItemsAdapter.kt$ItemsAdapter$if</ID>
<ID>MaxLineLength:ItemsAdapter.kt$ItemsAdapter$intent.flags = intent.flags or Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NO_HISTORY</ID>
<ID>MaxLineLength:ItemsAdapter.kt$ItemsAdapter$itemName?.text = if (textToHighlight.isEmpty()) fileName else fileName.highlightTextPart(textToHighlight, properPrimaryColor)</ID>
<ID>MaxLineLength:ItemsAdapter.kt$ItemsAdapter$itemSection?.text = if (textToHighlight.isEmpty()) listItem.mName else listItem.mName.highlightTextPart(textToHighlight, properPrimaryColor)</ID>
<ID>MaxLineLength:ItemsAdapter.kt$ItemsAdapter$name = if (base == currentPath) currentPath.getFilenameFromPath() else mainFilePath.relativizeWith(base)</ID>
<ID>MaxLineLength:ItemsAdapter.kt$ItemsAdapter$override fun getIsItemSelectable(position: Int)</ID>
<ID>MaxLineLength:ItemsAdapter.kt$ItemsAdapter$override fun onChange(position: Int)</ID>
<ID>MaxLineLength:ItemsAdapter.kt$ItemsAdapter$private</ID>
<ID>MaxLineLength:ItemsAdapter.kt$ItemsAdapter$private fun getSelectedFileDirItems()</ID>
<ID>MaxLineLength:ItemsAdapter.kt$ItemsAdapter$sourceFile.list()?.isEmpty() == true</ID>
<ID>MaxLineLength:ItemsAdapter.kt$ItemsAdapter$val currPath = if (entry.isDirectory) path else "${path.getParentPath().trimEnd('/')}/${entry.fileName}"</ID>
<ID>MaxLineLength:ItemsAdapter.kt$ItemsAdapter$val drawable = fileDrawables.getOrElse(fileName.substringAfterLast(".").lowercase(Locale.getDefault()), { fileDrawable })</ID>
<ID>MaxLineLength:ItemsAdapter.kt$ItemsAdapter$val fileDirItem = FileDirItem(currPath, entry.fileName, entry.isDirectory, 0, entry.uncompressedSize)</ID>
<ID>MaxLineLength:ItemsAdapter.kt$ItemsAdapter$val fileIcon = fileDrawables.getOrElse(path.substringAfterLast(".").lowercase(Locale.getDefault()), { fileDrawable })</ID>
<ID>MaxLineLength:ItemsAdapter.kt$ItemsAdapter$val paths = getSelectedFileDirItems().asSequence().filter { !it.isDirectory }.map { it.path }.toMutableList() as ArrayList&lt;String&gt;</ID>
<ID>MaxLineLength:ItemsAdapter.kt$ItemsAdapter$}</ID>
<ID>MaxLineLength:ItemsAdapter.kt$ItemsAdapter.Binding.ItemDirGrid$override</ID>
<ID>MaxLineLength:ItemsAdapter.kt$ItemsAdapter.Binding.ItemEmpty$override</ID>
<ID>MaxLineLength:ItemsAdapter.kt$ItemsAdapter.Binding.ItemFileDirList$override</ID>
<ID>MaxLineLength:ItemsAdapter.kt$ItemsAdapter.Binding.ItemFileDirList$return ItemFileDirListBindingAdapter(ItemFileDirListBinding.inflate(layoutInflater, viewGroup, attachToRoot))</ID>
<ID>MaxLineLength:ItemsAdapter.kt$ItemsAdapter.Binding.ItemFileGrid$override</ID>
<ID>MaxLineLength:ItemsAdapter.kt$ItemsAdapter.Binding.ItemSection$override</ID>
<ID>MaxLineLength:ItemsFragment.kt$ItemsFragment$ItemsAdapter</ID>
<ID>MaxLineLength:ItemsFragment.kt$ItemsFragment$class</ID>
<ID>MaxLineLength:ItemsFragment.kt$ItemsFragment$context</ID>
@@ -117,55 +79,40 @@
<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 isPickFileIntent = action == RingtoneManager.ACTION_RINGTONE_PICKER || action == Intent.ACTION_GET_CONTENT || action == Intent.ACTION_PICK</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() &amp;&amp; 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&lt;ListItem&gt;</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") &amp;&amp; !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&lt;ListItem&gt;</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>MaxLineLength:ViewPagerAdapter.kt$ViewPagerAdapter$val isGetContentIntent = activity.intent.action == Intent.ACTION_GET_CONTENT || activity.intent.action == Intent.ACTION_PICK</ID>
<ID>NestedBlockDepth:DecompressActivity.kt$DecompressActivity$private fun decompressTo(destination: String)</ID>
<ID>NestedBlockDepth:ItemsAdapter.kt$ItemsAdapter$@SuppressLint("NewApi") private fun compressPaths(sourcePaths: List&lt;String&gt;, targetPath: String, password: String? = null): Boolean</ID>
<ID>NestedBlockDepth:ItemsAdapter.kt$ItemsAdapter$private fun decompressPaths(paths: List&lt;String&gt;, conflictResolutions: LinkedHashMap&lt;String, Int&gt;, callback: (success: Boolean) -&gt; Unit)</ID>
<ID>NestedBlockDepth:ItemsAdapter.kt$ItemsAdapter$@SuppressLint("NewApi") private fun compressPaths( sourcePaths: List&lt;String&gt;, targetPath: String, password: String? = null ): Boolean</ID>
<ID>NestedBlockDepth:ItemsAdapter.kt$ItemsAdapter$private fun decompressPaths( paths: List&lt;String&gt;, conflictResolutions: LinkedHashMap&lt;String, Int&gt;, callback: (success: Boolean) -&gt; Unit )</ID>
<ID>NestedBlockDepth:ItemsAdapter.kt$ItemsAdapter$private fun setupView(binding: ItemViewBinding, listItem: ListItem)</ID>
<ID>NestedBlockDepth:ItemsAdapter.kt$ItemsAdapter$private fun tryDecompressingPaths(sourcePaths: List&lt;String&gt;, callback: (success: Boolean) -&gt; Unit)</ID>
<ID>NestedBlockDepth:ItemsAdapter.kt$ItemsAdapter$private fun tryDecompressingPaths( sourcePaths: List&lt;String&gt;, callback: (success: Boolean) -&gt; Unit )</ID>
<ID>NestedBlockDepth:ItemsFragment.kt$ItemsFragment$private fun getRegularItemsOf(path: String, callback: (originalPath: String, items: ArrayList&lt;ListItem&gt;) -&gt; Unit)</ID>
<ID>NestedBlockDepth:ItemsFragment.kt$ItemsFragment$private fun searchFiles(text: String, path: String): ArrayList&lt;ListItem&gt;</ID>
<ID>NestedBlockDepth:RecentsFragment.kt$RecentsFragment$private fun getRecents(callback: (recents: ArrayList&lt;ListItem&gt;) -&gt; Unit)</ID>
<ID>NestedBlockDepth:StorageFragment.kt$StorageFragment$override fun setupFragment(activity: SimpleActivity)</ID>
<ID>NestedBlockDepth:StorageFragment.kt$StorageFragment$private fun getAllFiles(volumeName: String): ArrayList&lt;FileDirItem&gt;</ID>
<ID>ReturnCount:ItemsAdapter.kt$ItemsAdapter$@SuppressLint("NewApi") private fun compressPaths(sourcePaths: List&lt;String&gt;, 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>
@@ -188,35 +135,20 @@
<ID>VariableNaming:ItemsAdapter.kt$ItemsAdapter$val SAFPath = getFirstSelectedItemPath()</ID>
<ID>VariableNaming:RecentsFragment.kt$RecentsFragment$private val RECENTS_LIMIT = 50</ID>
<ID>VariableNaming:StorageFragment.kt$StorageFragment$private val SIZE_DIVIDER = 100000</ID>
<ID>WildcardImport:Activity.kt$import org.fossify.commons.extensions.*</ID>
<ID>WildcardImport:Activity.kt$import org.fossify.filemanager.helpers.*</ID>
<ID>WildcardImport:ChangeSortingDialog.kt$import org.fossify.commons.helpers.*</ID>
<ID>WildcardImport:CompressAsDialog.kt$import org.fossify.commons.extensions.*</ID>
<ID>WildcardImport:CreateNewItemDialog.kt$import org.fossify.commons.extensions.*</ID>
<ID>WildcardImport:DecompressActivity.kt$import org.fossify.commons.extensions.*</ID>
<ID>WildcardImport:InsertFilenameDialog.kt$import org.fossify.commons.extensions.*</ID>
<ID>WildcardImport:ItemsAdapter.kt$import org.fossify.commons.dialogs.*</ID>
<ID>WildcardImport:ItemsAdapter.kt$import org.fossify.commons.extensions.*</ID>
<ID>WildcardImport:ItemsAdapter.kt$import org.fossify.commons.helpers.*</ID>
<ID>WildcardImport:ItemsAdapter.kt$import org.fossify.filemanager.databinding.*</ID>
<ID>WildcardImport:ItemsAdapter.kt$import org.fossify.filemanager.extensions.*</ID>
<ID>WildcardImport:ItemsAdapter.kt$import org.fossify.filemanager.helpers.*</ID>
<ID>WildcardImport:ItemsFragment.kt$import org.fossify.commons.extensions.*</ID>
<ID>WildcardImport:ItemsFragment.kt$import org.fossify.commons.helpers.*</ID>
<ID>WildcardImport:MainActivity.kt$import org.fossify.commons.extensions.*</ID>
<ID>WildcardImport:MainActivity.kt$import org.fossify.commons.helpers.*</ID>
<ID>WildcardImport:ManageFavoritesAdapter.kt$import android.view.*</ID>
<ID>WildcardImport:MimeTypesActivity.kt$import org.fossify.commons.extensions.*</ID>
<ID>WildcardImport:MimeTypesActivity.kt$import org.fossify.filemanager.helpers.*</ID>
<ID>WildcardImport:MyViewPagerFragment.kt$import org.fossify.commons.extensions.*</ID>
<ID>WildcardImport:ReadTextActivity.kt$import org.fossify.commons.extensions.*</ID>
<ID>WildcardImport:RecentsFragment.kt$import org.fossify.commons.extensions.*</ID>
<ID>WildcardImport:SaveAsActivity.kt$import org.fossify.commons.extensions.*</ID>
<ID>WildcardImport:SaveAsDialog.kt$import org.fossify.commons.extensions.*</ID>
<ID>WildcardImport:SettingsActivity.kt$import org.fossify.commons.extensions.*</ID>
<ID>WildcardImport:SettingsActivity.kt$import org.fossify.commons.helpers.*</ID>
<ID>WildcardImport:StorageFragment.kt$import org.fossify.commons.extensions.*</ID>
<ID>WildcardImport:StorageFragment.kt$import org.fossify.commons.helpers.*</ID>
<ID>WildcardImport:StorageFragment.kt$import org.fossify.filemanager.helpers.*</ID>
</CurrentIssues>
</SmellBaseline>
+269 -196
View File
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<issues format="6" by="lint 8.3.0" type="baseline" client="gradle" dependencies="false" name="AGP (8.3.0)" variant="all" version="8.3.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"
@@ -14,68 +14,24 @@
<issue
id="NewApi"
message="Call requires API level 33 (current min is 23): `launchChangeAppLanguageIntent`"
message="Call requires API level 33 (current min is 26): `launchChangeAppLanguageIntent`"
errorLine1=" launchChangeAppLanguageIntent()"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/filemanager/activities/SettingsActivity.kt"
line="92"
line="91"
column="17"/>
</issue>
<issue
id="UnusedAttribute"
message="Attribute `appCategory` is only used in API level 26 and higher (current min is 23)"
errorLine1=" android:appCategory=&quot;productivity&quot;"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
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 = &quot;36&quot;"
errorLine2=" ~~~~">
<location
file="src/main/AndroidManifest.xml"
file="$HOME/work/File-Manager/File-Manager/gradle/libs.versions.toml"
line="22"
column="9"/>
</issue>
<issue
id="UnusedAttribute"
message="Attribute `localeConfig` is only used in API level 33 and higher (current min is 23)"
errorLine1=" android:localeConfig=&quot;@xml/locale_config&quot;"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="25"
column="9"/>
</issue>
<issue
id="AppLinkUrlError"
message="Missing URL"
errorLine1=" &lt;intent-filter>"
errorLine2=" ^">
<location
file="src/main/AndroidManifest.xml"
line="69"
column="13"/>
</issue>
<issue
id="AppLinkUrlError"
message="Missing URL"
errorLine1=" &lt;intent-filter>"
errorLine2=" ^">
<location
file="src/main/AndroidManifest.xml"
line="96"
column="13"/>
</issue>
<issue
id="AppLinkUrlError"
message="Missing URL"
errorLine1=" &lt;intent-filter>"
errorLine2=" ^">
<location
file="src/main/AndroidManifest.xml"
line="108"
column="13"/>
column="23"/>
</issue>
<issue
@@ -91,101 +47,46 @@
<issue
id="AndroidGradlePluginVersion"
message="A newer version of com.android.application than 8.3.0 is available: 8.6.1. (There is also a newer version of 8.3.𝑥 available, if upgrading to 8.6.1 is difficult: 8.3.2)"
errorLine1="gradlePlugins-agp = &quot;8.3.0&quot;"
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/Community/FossifyOrg/File-Manager/gradle/libs.versions.toml"
line="18"
column="21"/>
</issue>
<issue
id="AndroidGradlePluginVersion"
message="A newer version of com.android.application than 8.3.0 is available: 8.6.1. (There is also a newer version of 8.3.𝑥 available, if upgrading to 8.6.1 is difficult: 8.3.2)"
errorLine1="gradlePlugins-agp = &quot;8.3.0&quot;"
errorLine2=" ~~~~~~~">
<location
file="$HOME/Projects/Community/FossifyOrg/File-Manager/gradle/libs.versions.toml"
line="18"
column="21"/>
</issue>
<issue
id="AndroidGradlePluginVersion"
message="A newer version of com.android.application than 8.3.0 is available: 8.6.1. (There is also a newer version of 8.3.𝑥 available, if upgrading to 8.6.1 is difficult: 8.3.2)"
errorLine1="gradlePlugins-agp = &quot;8.3.0&quot;"
errorLine2=" ~~~~~~~">
<location
file="$HOME/Projects/Community/FossifyOrg/File-Manager/gradle/libs.versions.toml"
line="18"
column="21"/>
</issue>
<issue
id="GradleDependency"
message="A newer version of org.jetbrains.kotlin.android than 1.9.10 is available: 1.9.25"
errorLine1="kotlin = &quot;1.9.10&quot;"
errorLine2=" ~~~~~~~~">
<location
file="$HOME/Projects/Community/FossifyOrg/File-Manager/gradle/libs.versions.toml"
file="$HOME/work/File-Manager/File-Manager/gradle/wrapper/gradle-wrapper.properties"
line="3"
column="10"/>
column="17"/>
</issue>
<issue
id="GradleDependency"
message="A newer version of org.jetbrains.kotlin.android than 1.9.10 is available: 1.9.25"
errorLine1="kotlin = &quot;1.9.10&quot;"
errorLine2=" ~~~~~~~~">
message="A newer version of `app-build-compileSDKVersion` than 36 is available: 37"
errorLine1="app-build-compileSDKVersion = &quot;36&quot;"
errorLine2=" ~~~~">
<location
file="$HOME/Projects/Community/FossifyOrg/File-Manager/gradle/libs.versions.toml"
line="3"
column="10"/>
file="$HOME/work/File-Manager/File-Manager/gradle/libs.versions.toml"
line="21"
column="31"/>
</issue>
<issue
id="GradleDependency"
message="A newer version of org.jetbrains.kotlin.android than 1.9.10 is available: 1.9.25"
errorLine1="kotlin = &quot;1.9.10&quot;"
errorLine2=" ~~~~~~~~">
id="NewerVersionAvailable"
message="A newer version of io.nlopez.compose.rules:detekt than 0.4.28 is available: 0.6.7"
errorLine1="detektCompose = &quot;0.4.28&quot;"
errorLine2=" ~~~~~~~~">
<location
file="$HOME/Projects/Community/FossifyOrg/File-Manager/gradle/libs.versions.toml"
line="3"
column="10"/>
file="$HOME/work/File-Manager/File-Manager/gradle/libs.versions.toml"
line="6"
column="17"/>
</issue>
<issue
id="GradleDependency"
message="A newer version of org.fossify:commons than 18ad1dd308 is available: 8685963657"
errorLine1="commons = &quot;18ad1dd308&quot;"
errorLine2=" ~~~~~~~~~~~~">
id="NewerVersionAvailable"
message="A newer version of com.alexvasilkov:gesture-views than 2.9.0 is available: 2.10.0"
errorLine1="gestureviews = &quot;2.9.0&quot;"
errorLine2=" ~~~~~~~">
<location
file="$HOME/Projects/Community/FossifyOrg/File-Manager/gradle/libs.versions.toml"
line="10"
column="11"/>
</issue>
<issue
id="GradleDependency"
message="A newer version of org.fossify:commons than 18ad1dd308 is available: 8685963657"
errorLine1="commons = &quot;18ad1dd308&quot;"
errorLine2=" ~~~~~~~~~~~~">
<location
file="$HOME/Projects/Community/FossifyOrg/File-Manager/gradle/libs.versions.toml"
line="10"
column="11"/>
</issue>
<issue
id="GradleDependency"
message="A newer version of org.fossify:commons than 18ad1dd308 is available: 8685963657"
errorLine1="commons = &quot;18ad1dd308&quot;"
errorLine2=" ~~~~~~~~~~~~">
<location
file="$HOME/Projects/Community/FossifyOrg/File-Manager/gradle/libs.versions.toml"
line="10"
column="11"/>
file="$HOME/work/File-Manager/File-Manager/gradle/libs.versions.toml"
line="14"
column="16"/>
</issue>
<issue
@@ -206,7 +107,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/filemanager/adapters/ItemsAdapter.kt"
line="286"
line="376"
column="28"/>
</issue>
@@ -217,13 +118,13 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/filemanager/adapters/ItemsAdapter.kt"
line="941"
line="1152"
column="24"/>
</issue>
<issue
id="MissingTranslation"
message="&quot;app_launcher_name&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai)"
message="&quot;app_launcher_name&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;ne&quot; (Nepali), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai)"
errorLine1=" &lt;string name=&quot;app_launcher_name&quot;>File Manager_debug&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
<location
@@ -234,7 +135,7 @@
<issue
id="MissingTranslation"
message="&quot;app_launcher_name&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai)"
message="&quot;app_launcher_name&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;ne&quot; (Nepali), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai)"
errorLine1=" &lt;string name=&quot;app_launcher_name&quot;>File Manager&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
<location
@@ -245,7 +146,7 @@
<issue
id="MissingTranslation"
message="&quot;press_back_again&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;ne&quot; (Nepali), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;press_back_again&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;ne&quot; (Nepali), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai)"
errorLine1=" &lt;string name=&quot;press_back_again&quot;>Press back again to exit&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~">
<location
@@ -256,7 +157,7 @@
<issue
id="MissingTranslation"
message="&quot;go_to_home_folder&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;ne&quot; (Nepali), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;go_to_home_folder&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;ne&quot; (Nepali), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
errorLine1=" &lt;string name=&quot;go_to_home_folder&quot;>Go to home folder&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
<location
@@ -267,7 +168,7 @@
<issue
id="MissingTranslation"
message="&quot;set_as_home_folder&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;ne&quot; (Nepali), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;set_as_home_folder&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;ne&quot; (Nepali), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
errorLine1=" &lt;string name=&quot;set_as_home_folder&quot;>Set as home folder&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
@@ -278,7 +179,7 @@
<issue
id="MissingTranslation"
message="&quot;home_folder_updated&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;ne&quot; (Nepali), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;home_folder_updated&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
errorLine1=" &lt;string name=&quot;home_folder_updated&quot;>Home folder updated&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
@@ -289,7 +190,7 @@
<issue
id="MissingTranslation"
message="&quot;copy_path&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;ne&quot; (Nepali), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;copy_path&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
errorLine1=" &lt;string name=&quot;copy_path&quot;>Copy path to clipboard&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~">
<location
@@ -300,7 +201,7 @@
<issue
id="MissingTranslation"
message="&quot;path_copied&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;ne&quot; (Nepali), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;path_copied&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
errorLine1=" &lt;string name=&quot;path_copied&quot;>Path copied&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~">
<location
@@ -311,7 +212,7 @@
<issue
id="MissingTranslation"
message="&quot;select_audio_file&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;ne&quot; (Nepali), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;select_audio_file&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
errorLine1=" &lt;string name=&quot;select_audio_file&quot;>Please select an audio file&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
<location
@@ -322,7 +223,7 @@
<issue
id="MissingTranslation"
message="&quot;search_folder&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;ne&quot; (Nepali), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;search_folder&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
errorLine1=" &lt;string name=&quot;search_folder&quot;>Search folder&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
<location
@@ -333,7 +234,7 @@
<issue
id="MissingTranslation"
message="&quot;rooted_device_only&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;ne&quot; (Nepali), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;rooted_device_only&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;bqi&quot;, &quot;ckb&quot;"
errorLine1=" &lt;string name=&quot;rooted_device_only&quot;>This operation works only on rooted devices&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
@@ -344,7 +245,7 @@
<issue
id="MissingTranslation"
message="&quot;recents&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;"
message="&quot;recents&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh)"
errorLine1=" &lt;string name=&quot;recents&quot;>Recents&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~">
<location
@@ -355,7 +256,7 @@
<issue
id="MissingTranslation"
message="&quot;show_recents&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;"
message="&quot;show_recents&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;"
errorLine1=" &lt;string name=&quot;show_recents&quot;>Show recents&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~">
<location
@@ -366,7 +267,7 @@
<issue
id="MissingTranslation"
message="&quot;invert_colors&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;nb&quot; (Norwegian Bokmål), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;"
message="&quot;invert_colors&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;"
errorLine1=" &lt;string name=&quot;invert_colors&quot;>Invert colors&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
<location
@@ -377,7 +278,7 @@
<issue
id="MissingTranslation"
message="&quot;open_as&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ar&quot; (Arabic), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;open_as&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai)"
errorLine1=" &lt;string name=&quot;open_as&quot;>Open as&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~">
<location
@@ -388,7 +289,7 @@
<issue
id="MissingTranslation"
message="&quot;text_file&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ar&quot; (Arabic), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;text_file&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai)"
errorLine1=" &lt;string name=&quot;text_file&quot;>Text file&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~">
<location
@@ -399,7 +300,7 @@
<issue
id="MissingTranslation"
message="&quot;image_file&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ar&quot; (Arabic), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;image_file&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai)"
errorLine1=" &lt;string name=&quot;image_file&quot;>Image file&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~">
<location
@@ -410,7 +311,7 @@
<issue
id="MissingTranslation"
message="&quot;audio_file&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ar&quot; (Arabic), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;audio_file&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai)"
errorLine1=" &lt;string name=&quot;audio_file&quot;>Audio file&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~">
<location
@@ -421,7 +322,7 @@
<issue
id="MissingTranslation"
message="&quot;video_file&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ar&quot; (Arabic), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;video_file&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai)"
errorLine1=" &lt;string name=&quot;video_file&quot;>Video file&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~">
<location
@@ -432,7 +333,7 @@
<issue
id="MissingTranslation"
message="&quot;other_file&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ar&quot; (Arabic), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;other_file&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai)"
errorLine1=" &lt;string name=&quot;other_file&quot;>Other file&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~">
<location
@@ -443,7 +344,7 @@
<issue
id="MissingTranslation"
message="&quot;compress&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;compress&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;bqi&quot;"
errorLine1=" &lt;string name=&quot;compress&quot;>Compress&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~">
<location
@@ -454,7 +355,7 @@
<issue
id="MissingTranslation"
message="&quot;decompress&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;decompress&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;bqi&quot;"
errorLine1=" &lt;string name=&quot;decompress&quot;>Decompress&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~">
<location
@@ -465,7 +366,7 @@
<issue
id="MissingTranslation"
message="&quot;compress_as&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;compress_as&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;bqi&quot;"
errorLine1=" &lt;string name=&quot;compress_as&quot;>Compress as&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~">
<location
@@ -476,7 +377,7 @@
<issue
id="MissingTranslation"
message="&quot;compressing&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;compressing&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;bqi&quot;"
errorLine1=" &lt;string name=&quot;compressing&quot;>Compressing…&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~">
<location
@@ -487,7 +388,7 @@
<issue
id="MissingTranslation"
message="&quot;decompressing&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;decompressing&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;bqi&quot;"
errorLine1=" &lt;string name=&quot;decompressing&quot;>Decompressing…&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
<location
@@ -498,7 +399,7 @@
<issue
id="MissingTranslation"
message="&quot;compression_successful&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;compression_successful&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;bqi&quot;"
errorLine1=" &lt;string name=&quot;compression_successful&quot;>Compression successful&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
@@ -509,7 +410,7 @@
<issue
id="MissingTranslation"
message="&quot;decompression_successful&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;decompression_successful&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;bqi&quot;"
errorLine1=" &lt;string name=&quot;decompression_successful&quot;>Decompression successful&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
@@ -520,7 +421,7 @@
<issue
id="MissingTranslation"
message="&quot;compressing_failed&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;compressing_failed&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;bqi&quot;, &quot;ckb&quot;"
errorLine1=" &lt;string name=&quot;compressing_failed&quot;>Compressing failed&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
@@ -531,7 +432,7 @@
<issue
id="MissingTranslation"
message="&quot;decompressing_failed&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;decompressing_failed&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;bqi&quot;, &quot;ckb&quot;"
errorLine1=" &lt;string name=&quot;decompressing_failed&quot;>Decompressing failed&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
@@ -542,7 +443,7 @@
<issue
id="MissingTranslation"
message="&quot;manage_favorites&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;ne&quot; (Nepali), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;manage_favorites&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;bqi&quot;, &quot;ckb&quot;"
errorLine1=" &lt;string name=&quot;manage_favorites&quot;>Manage favorites&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~">
<location
@@ -553,7 +454,7 @@
<issue
id="MissingTranslation"
message="&quot;go_to_favorite&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;ne&quot; (Nepali), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;go_to_favorite&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;bqi&quot;, &quot;ckb&quot;"
errorLine1=" &lt;string name=&quot;go_to_favorite&quot;>Go to favorite&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~">
<location
@@ -564,7 +465,7 @@
<issue
id="MissingTranslation"
message="&quot;favorites_activity_placeholder&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;ne&quot; (Nepali), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;favorites_activity_placeholder&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;bqi&quot;, &quot;ckb&quot;"
errorLine1=" &lt;string name=&quot;favorites_activity_placeholder&quot;>You can add frequently used folders to favorites for easy access from anywhere.&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
@@ -575,7 +476,7 @@
<issue
id="MissingTranslation"
message="&quot;file_editor&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;file_editor&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;bqi&quot;"
errorLine1=" &lt;string name=&quot;file_editor&quot;>File Editor&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~">
<location
@@ -586,7 +487,7 @@
<issue
id="MissingTranslation"
message="&quot;storage_analysis&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;nb&quot; (Norwegian Bokmål), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;"
message="&quot;storage_analysis&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;bqi&quot;, &quot;ckb&quot;"
errorLine1=" &lt;string name=&quot;storage_analysis&quot;>Storage analysis&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~">
<location
@@ -597,7 +498,7 @@
<issue
id="MissingTranslation"
message="&quot;images&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;nn&quot; (Norwegian Nynorsk), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;images&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;nn&quot; (Norwegian Nynorsk), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;bqi&quot;"
errorLine1=" &lt;string name=&quot;images&quot;>Images&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~">
<location
@@ -608,7 +509,7 @@
<issue
id="MissingTranslation"
message="&quot;videos&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;videos&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;nn&quot; (Norwegian Nynorsk), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;bqi&quot;"
errorLine1=" &lt;string name=&quot;videos&quot;>Videos&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~">
<location
@@ -619,7 +520,7 @@
<issue
id="MissingTranslation"
message="&quot;audio&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ar&quot; (Arabic), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;sk&quot; (Slovak), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;"
message="&quot;audio&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;cy&quot; (Welsh)"
errorLine1=" &lt;string name=&quot;audio&quot;>Audio&lt;/string>"
errorLine2=" ~~~~~~~~~~~~">
<location
@@ -630,7 +531,7 @@
<issue
id="MissingTranslation"
message="&quot;documents&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ar&quot; (Arabic), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;"
message="&quot;documents&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;bqi&quot;"
errorLine1=" &lt;string name=&quot;documents&quot;>Documents&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~">
<location
@@ -641,7 +542,7 @@
<issue
id="MissingTranslation"
message="&quot;downloads&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ar&quot; (Arabic), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;"
message="&quot;downloads&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;bqi&quot;"
errorLine1=" &lt;string name=&quot;downloads&quot;>Downloads&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~">
<location
@@ -652,7 +553,7 @@
<issue
id="MissingTranslation"
message="&quot;archives&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;"
message="&quot;archives&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;bqi&quot;"
errorLine1=" &lt;string name=&quot;archives&quot;>Archives&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~">
<location
@@ -663,7 +564,7 @@
<issue
id="MissingTranslation"
message="&quot;others&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;nb&quot; (Norwegian Bokmål), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;"
message="&quot;others&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;bqi&quot;"
errorLine1=" &lt;string name=&quot;others&quot;>Others&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~">
<location
@@ -674,7 +575,7 @@
<issue
id="MissingTranslation"
message="&quot;storage_free&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;ar&quot; (Arabic), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;"
message="&quot;storage_free&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;bqi&quot;"
errorLine1=" &lt;string name=&quot;storage_free&quot;>free&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~">
<location
@@ -685,7 +586,7 @@
<issue
id="MissingTranslation"
message="&quot;total_storage&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;"
message="&quot;total_storage&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;bqi&quot;"
errorLine1=" &lt;string name=&quot;total_storage&quot;>Total storage: %s&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
<location
@@ -696,7 +597,7 @@
<issue
id="MissingTranslation"
message="&quot;enable_root_access&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;ne&quot; (Nepali), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;ckb&quot;"
message="&quot;enable_root_access&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;bqi&quot;, &quot;ckb&quot;"
errorLine1=" &lt;string name=&quot;enable_root_access&quot;>Enable root access&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
@@ -707,7 +608,7 @@
<issue
id="MissingTranslation"
message="&quot;press_back_twice&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;nb&quot; (Norwegian Bokmål), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;"
message="&quot;press_back_twice&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;nn&quot; (Norwegian Nynorsk), &quot;bn&quot; (Bangla), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;bqi&quot;, &quot;ckb&quot;"
errorLine1=" &lt;string name=&quot;press_back_twice&quot;>Require pressing Back twice to leave the app&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~">
<location
@@ -723,7 +624,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/filemanager/adapters/ItemsAdapter.kt"
line="797"
line="980"
column="13"/>
</issue>
@@ -734,7 +635,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/filemanager/adapters/ItemsAdapter.kt"
line="801"
line="984"
column="13"/>
</issue>
@@ -745,7 +646,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/filemanager/adapters/ItemsAdapter.kt"
line="808"
line="991"
column="9"/>
</issue>
@@ -756,7 +657,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/filemanager/adapters/ItemsAdapter.kt"
line="814"
line="997"
column="9"/>
</issue>
@@ -767,10 +668,17 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/filemanager/adapters/ItemsAdapter.kt"
line="819"
line="1002"
column="9"/>
</issue>
<issue
id="ObsoleteSdkInt"
message="This folder configuration (`v26`) is unnecessary; `minSdkVersion` is 26. Merge all the resources in this folder into `mipmap-anydpi`.">
<location
file="src/main/res/mipmap-anydpi-v26"/>
</issue>
<issue
id="Overdraw"
message="Possible overdraw: Root element paints background `?attr/selectableItemBackground` with a theme that also paints a background (inferred theme is `@style/AppTheme`)"
@@ -859,17 +767,6 @@
column="14"/>
</issue>
<issue
id="UnusedResources"
message="The resource `R.menu.menu_pdf_viewer` appears to be unused"
errorLine1="&lt;menu xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;"
errorLine2="^">
<location
file="src/main/res/menu/menu_pdf_viewer.xml"
line="2"
column="1"/>
</issue>
<issue
id="UnusedResources"
message="The resource `R.string.path_copied` appears to be unused"
@@ -936,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"
@@ -958,6 +866,171 @@
column="6"/>
</issue>
<issue
id="UseKtx"
message="Use the KTX extension function `SharedPreferences.edit` instead?"
errorLine1=" set(show) = prefs.edit().putBoolean(SHOW_HIDDEN, show).apply()"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/filemanager/helpers/Config.kt"
line="17"
column="21"/>
</issue>
<issue
id="UseKtx"
message="Use the KTX extension function `SharedPreferences.edit` instead?"
errorLine1=" set(temporarilyShowHidden) = prefs.edit().putBoolean(TEMPORARILY_SHOW_HIDDEN, temporarilyShowHidden).apply()"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/filemanager/helpers/Config.kt"
line="21"
column="38"/>
</issue>
<issue
id="UseKtx"
message="Use the KTX extension function `SharedPreferences.edit` instead?"
errorLine1=" set(pressBackTwice) = prefs.edit().putBoolean(PRESS_BACK_TWICE, pressBackTwice).apply()"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/filemanager/helpers/Config.kt"
line="27"
column="31"/>
</issue>
<issue
id="UseKtx"
message="Use the KTX extension function `SharedPreferences.edit` instead?"
errorLine1=" set(homeFolder) = prefs.edit().putString(HOME_FOLDER, homeFolder).apply()"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/filemanager/helpers/Config.kt"
line="38"
column="27"/>
</issue>
<issue
id="UseKtx"
message="Use the KTX extension function `SharedPreferences.edit` instead?"
errorLine1=" set(isRootAvailable) = prefs.edit().putBoolean(IS_ROOT_AVAILABLE, isRootAvailable).apply()"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/filemanager/helpers/Config.kt"
line="69"
column="32"/>
</issue>
<issue
id="UseKtx"
message="Use the KTX extension function `SharedPreferences.edit` instead?"
errorLine1=" set(enableRootAccess) = prefs.edit().putBoolean(ENABLE_ROOT_ACCESS, enableRootAccess).apply()"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/filemanager/helpers/Config.kt"
line="73"
column="33"/>
</issue>
<issue
id="UseKtx"
message="Use the KTX extension function `SharedPreferences.edit` instead?"
errorLine1=" set(editorTextZoom) = prefs.edit().putFloat(EDITOR_TEXT_ZOOM, editorTextZoom).apply()"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/filemanager/helpers/Config.kt"
line="77"
column="31"/>
</issue>
<issue
id="UseKtx"
message="Use the KTX extension function `SharedPreferences.edit` instead?"
errorLine1=" prefs.edit().putInt(VIEW_TYPE_PREFIX + path.lowercase(Locale.getDefault()), value).apply()"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/filemanager/helpers/Config.kt"
line="83"
column="13"/>
</issue>
<issue
id="UseKtx"
message="Use the KTX extension function `SharedPreferences.edit` instead?"
errorLine1=" prefs.edit().remove(VIEW_TYPE_PREFIX + path.lowercase(Locale.getDefault())).apply()"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/filemanager/helpers/Config.kt"
line="90"
column="9"/>
</issue>
<issue
id="UseKtx"
message="Use the KTX extension function `SharedPreferences.edit` instead?"
errorLine1=" set(fileColumnCnt) = prefs.edit().putInt(getFileColumnsField(), fileColumnCnt).apply()"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/filemanager/helpers/Config.kt"
line="97"
column="30"/>
</issue>
<issue
id="UseKtx"
message="Use the KTX extension function `SharedPreferences.edit` instead?"
errorLine1=" set(displayFilenames) = prefs.edit().putBoolean(DISPLAY_FILE_NAMES, displayFilenames).apply()"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/filemanager/helpers/Config.kt"
line="115"
column="33"/>
</issue>
<issue
id="UseKtx"
message="Use the KTX extension function `SharedPreferences.edit` instead?"
errorLine1=" set(showTabs) = prefs.edit().putInt(SHOW_TABS, showTabs).apply()"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/filemanager/helpers/Config.kt"
line="119"
column="25"/>
</issue>
<issue
id="UseKtx"
message="Use the KTX extension function `SharedPreferences.edit` instead?"
errorLine1=" set(wasStorageAnalysisTabAdded) = prefs.edit().putBoolean(WAS_STORAGE_ANALYSIS_TAB_ADDED, wasStorageAnalysisTabAdded).apply()"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/filemanager/helpers/Config.kt"
line="123"
column="43"/>
</issue>
<issue
id="UseKtx"
message="Use the KTX extension function `String.toUri` instead?"
errorLine1=" intent.data = Uri.parse(&quot;package:$packageName&quot;)"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/filemanager/activities/SimpleActivity.kt"
line="80"
column="43"/>
</issue>
<issue
id="UseKtx"
message="Use the KTX extension function `String.toUri` instead?"
errorLine1=" intent.data = Uri.parse(&quot;package:$packageName&quot;)"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/filemanager/activities/SimpleActivity.kt"
line="80"
column="43"/>
</issue>
<issue
id="ClickableViewAccessibility"
message="Custom view `GestureEditText` overrides `onTouchEvent` but not `performClick`"
+1 -2
View File
@@ -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 -2
View File
@@ -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>
-1
View File
@@ -22,7 +22,6 @@
android:appCategory="productivity"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_launcher_name"
android:localeConfig="@xml/locale_config"
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher"
android:theme="@style/AppTheme">
@@ -26,6 +26,7 @@ import org.fossify.filemanager.R
import org.fossify.filemanager.adapters.DecompressItemsAdapter
import org.fossify.filemanager.databinding.ActivityDecompressBinding
import org.fossify.filemanager.extensions.config
import org.fossify.filemanager.extensions.setLastModified
import org.fossify.filemanager.models.ListItem
import java.io.BufferedInputStream
import java.io.File
@@ -44,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
@@ -69,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) {
@@ -87,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("")
}
@@ -153,6 +155,7 @@ class DecompressActivity : SimpleActivity() {
zipInputStream.setPassword(password?.toCharArray())
}
val buffer = ByteArray(1024)
val foldersTimestamp = mutableListOf<Pair<File, LocalFileHeader>>()
zipInputStream.use {
while (true) {
@@ -161,18 +164,25 @@ class DecompressActivity : SimpleActivity() {
val parent = "$destination/$filename"
val newPath = "$parent/${entry.fileName.trimEnd('/')}"
if (!getDoesFilePathExist(parent)) {
if (!createDirectorySync(parent)) {
continue
}
}
if (entry.isDirectory) {
val outputFile = File(newPath)
val isVulnerableForZipPathTraversal = !outputFile.canonicalPath.startsWith(parent)
if (isVulnerableForZipPathTraversal) {
continue
}
val isVulnerableForZipPathTraversal = !File(newPath).canonicalPath.startsWith(parent)
if (isVulnerableForZipPathTraversal) {
if (entry.isDirectory) {
if (!outputFile.exists()) {
outputFile.mkdirs()
}
foldersTimestamp.add(Pair(outputFile, entry))
continue
}
@@ -187,8 +197,11 @@ class DecompressActivity : SimpleActivity() {
fos!!.write(buffer, 0, count)
}
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
@@ -411,7 +366,9 @@ class MainActivity : SimpleActivity() {
private fun setupTabs() {
binding.mainTabsHolder.removeAllTabs()
val action = intent.action
val isPickFileIntent = action == RingtoneManager.ACTION_RINGTONE_PICKER || action == Intent.ACTION_GET_CONTENT || action == Intent.ACTION_PICK
val isPickFileIntent = action == RingtoneManager.ACTION_RINGTONE_PICKER
|| action == Intent.ACTION_GET_CONTENT
|| action == Intent.ACTION_PICK
val isCreateDocumentIntent = action == Intent.ACTION_CREATE_DOCUMENT
if (isPickFileIntent) {
@@ -464,7 +421,6 @@ class MainActivity : SimpleActivity() {
}
val bottomBarColor = getBottomNavigationBackgroundColor()
updateNavigationBarColor(bottomBarColor)
mainTabsHolder.setBackgroundColor(bottomBarColor)
}
}
@@ -628,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)
@@ -101,6 +101,7 @@ import org.fossify.filemanager.extensions.config
import org.fossify.filemanager.extensions.isPathOnRoot
import org.fossify.filemanager.extensions.isZipFile
import org.fossify.filemanager.extensions.setAs
import org.fossify.filemanager.extensions.setLastModified
import org.fossify.filemanager.extensions.sharePaths
import org.fossify.filemanager.extensions.toggleItemVisibility
import org.fossify.filemanager.extensions.tryOpenPathIntent
@@ -127,7 +128,8 @@ class ItemsAdapter(
private val swipeRefreshLayout: SwipeRefreshLayout?,
canHaveIndividualViewType: Boolean = true,
itemClick: (Any) -> Unit,
) : MyRecyclerViewAdapter(activity, recyclerView, itemClick), RecyclerViewFastScroller.OnPopupTextUpdate {
) : MyRecyclerViewAdapter(activity, recyclerView, itemClick),
RecyclerViewFastScroller.OnPopupTextUpdate {
private lateinit var fileDrawable: Drawable
private lateinit var folderDrawable: Drawable
@@ -142,7 +144,9 @@ class ItemsAdapter(
private val config = activity.config
private val viewType = if (canHaveIndividualViewType) {
config.getFolderViewType(listItems.firstOrNull { !it.isSectionTitle }?.mPath?.getParentPath() ?: "")
config.getFolderViewType(
path = listItems.firstOrNull { !it.isSectionTitle }?.mPath?.getParentPath().orEmpty()
)
} else {
config.viewType
}
@@ -168,7 +172,8 @@ class ItemsAdapter(
override fun prepareActionMode(menu: Menu) {
menu.apply {
findItem(R.id.cab_decompress).isVisible = getSelectedFileDirItems().map { it.path }.any { it.isZipFile() }
findItem(R.id.cab_decompress).isVisible =
getSelectedFileDirItems().map { it.path }.any { it.isZipFile() }
findItem(R.id.cab_confirm_selection).isVisible = isPickMultipleIntent
findItem(R.id.cab_copy_path).isVisible = isOneItemSelected()
findItem(R.id.cab_open_with).isVisible = isOneFileSelected()
@@ -206,13 +211,21 @@ class ItemsAdapter(
}
}
override fun getSelectableItemCount() = listItems.filter { !it.isSectionTitle && !it.isGridTypeDivider }.size
override fun getSelectableItemCount(): Int {
return listItems.filter { !it.isSectionTitle && !it.isGridTypeDivider }.size
}
override fun getIsItemSelectable(position: Int) = !listItems[position].isSectionTitle && !listItems[position].isGridTypeDivider
override fun getIsItemSelectable(position: Int): Boolean {
return !listItems[position].isSectionTitle && !listItems[position].isGridTypeDivider
}
override fun getItemSelectionKey(position: Int) = listItems.getOrNull(position)?.path?.hashCode()
override fun getItemSelectionKey(position: Int): Int? {
return listItems.getOrNull(position)?.path?.hashCode()
}
override fun getItemKeyPosition(key: Int) = listItems.indexOfFirst { it.path.hashCode() == key }
override fun getItemKeyPosition(key: Int): Int {
return listItems.indexOfFirst { it.path.hashCode() == key }
}
override fun onActionModeCreated() {
swipeRefreshLayout?.isRefreshing = false
@@ -233,25 +246,37 @@ class ItemsAdapter(
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val binding = Binding.getByItemViewType(viewType, isListViewType).inflate(layoutInflater, parent, false)
val binding = Binding.getByItemViewType(viewType, isListViewType)
.inflate(layoutInflater, parent, false)
return createViewHolder(binding.root)
}
override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) {
val fileDirItem = listItems[position]
holder.bindView(fileDirItem, true, !fileDirItem.isSectionTitle) { itemView, layoutPosition ->
holder.bindView(
any = fileDirItem,
allowSingleClick = true,
allowLongClick = !fileDirItem.isSectionTitle
) { itemView, layoutPosition ->
val viewType = getItemViewType(position)
setupView(Binding.getByItemViewType(viewType, isListViewType).bind(itemView), fileDirItem)
setupView(
binding = Binding.getByItemViewType(viewType, isListViewType).bind(itemView),
listItem = fileDirItem
)
}
bindViewHolder(holder)
}
override fun getItemCount() = listItems.size
private fun getItemWithKey(key: Int): FileDirItem? = listItems.firstOrNull { it.path.hashCode() == key }
private fun getItemWithKey(key: Int): FileDirItem? {
return listItems.firstOrNull { it.path.hashCode() == key }
}
private fun isOneFileSelected() = isOneItemSelected() && getItemWithKey(selectedKeys.first())?.isDirectory == false
private fun isOneFileSelected(): Boolean {
return isOneItemSelected() && getItemWithKey(selectedKeys.first())?.isDirectory == false
}
private fun checkHideBtnVisibility(menu: Menu) {
var hiddenCnt = 0
@@ -270,7 +295,10 @@ class ItemsAdapter(
private fun confirmSelection() {
if (selectedKeys.isNotEmpty()) {
val paths = getSelectedFileDirItems().asSequence().filter { !it.isDirectory }.map { it.path }.toMutableList() as ArrayList<String>
val paths = getSelectedFileDirItems()
.asSequence()
.filter { !it.isDirectory }.map { it.path }
.toMutableList() as ArrayList<String>
if (paths.isEmpty()) {
finishActMode()
} else {
@@ -349,7 +377,11 @@ class ItemsAdapter(
getShortcutImage(path, drawable) {
val intent = Intent(activity, SplashActivity::class.java)
intent.action = Intent.ACTION_VIEW
intent.flags = intent.flags or Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NO_HISTORY
intent.flags =
intent.flags or
Intent.FLAG_ACTIVITY_NEW_TASK or
Intent.FLAG_ACTIVITY_CLEAR_TASK or
Intent.FLAG_ACTIVITY_NO_HISTORY
intent.data = Uri.fromFile(File(path))
val shortcut = ShortcutInfo.Builder(activity, path)
@@ -365,7 +397,8 @@ class ItemsAdapter(
private fun getShortcutImage(path: String, drawable: Drawable, callback: () -> Unit) {
val appIconColor = baseConfig.appIconColor
(drawable as LayerDrawable).findDrawableByLayerId(R.id.shortcut_folder_background).applyColorFilter(appIconColor)
(drawable as LayerDrawable).findDrawableByLayerId(R.id.shortcut_folder_background)
.applyColorFilter(appIconColor)
if (activity.getIsPathDirectory(path)) {
callback()
} else {
@@ -386,10 +419,15 @@ class ItemsAdapter(
try {
val bitmap = builder.get()
drawable.findDrawableByLayerId(R.id.shortcut_folder_background).applyColorFilter(0)
drawable.findDrawableByLayerId(R.id.shortcut_folder_background)
.applyColorFilter(0)
drawable.setDrawableByLayerId(R.id.shortcut_folder_image, bitmap)
} catch (e: Exception) {
val fileIcon = fileDrawables.getOrElse(path.substringAfterLast(".").lowercase(Locale.getDefault()), { fileDrawable })
val fileIcon = fileDrawables
.getOrElse(
key = path.substringAfterLast(".").lowercase(Locale.getDefault()),
defaultValue = { fileDrawable }
)
drawable.setDrawableByLayerId(R.id.shortcut_folder_image, fileIcon)
}
@@ -414,15 +452,19 @@ class ItemsAdapter(
}
activity.isPathOnOTG(path) -> {
activity.getDocumentFile(path)?.listFiles()?.filter { if (shouldShowHidden) true else !it.name!!.startsWith(".") }?.forEach {
addFileUris(it.uri.toString(), paths)
}
activity.getDocumentFile(path)?.listFiles()
?.filter { if (shouldShowHidden) true else !it.name!!.startsWith(".") }
?.forEach {
addFileUris(it.uri.toString(), paths)
}
}
else -> {
File(path).listFiles()?.filter { if (shouldShowHidden) true else !it.name.startsWith('.') }?.forEach {
addFileUris(it.absolutePath, paths)
}
File(path).listFiles()
?.filter { if (shouldShowHidden) true else !it.name.startsWith('.') }
?.forEach {
addFileUris(it.absolutePath, paths)
}
}
}
} else {
@@ -481,11 +523,21 @@ class ItemsAdapter(
if (activity.isPathOnRoot(it) || activity.isPathOnRoot(firstFile.path)) {
copyMoveRootItems(files, it, isCopyOperation)
} else {
activity.copyMoveFilesTo(files, source, it, isCopyOperation, false, config.shouldShowHidden()) {
activity.copyMoveFilesTo(
fileDirItems = files,
source = source,
destination = it,
isCopyOperation = isCopyOperation,
copyPhotoVideoOnly = false,
copyHidden = config.shouldShowHidden()
) {
if (!isCopyOperation) {
files.forEach { sourceFileDir ->
val sourcePath = sourceFileDir.path
if (activity.isRestrictedSAFOnlyRoot(sourcePath) && activity.getDoesFilePathExist(sourcePath)) {
if (
activity.isRestrictedSAFOnlyRoot(sourcePath)
&& activity.getDoesFilePathExist(sourcePath)
) {
activity.deleteFile(sourceFileDir, true) {
listener?.refreshFragment()
activity.runOnUiThread {
@@ -494,8 +546,12 @@ class ItemsAdapter(
}
} else {
val sourceFile = File(sourcePath)
if (activity.getDoesFilePathExist(source) && activity.getIsPathDirectory(source) &&
sourceFile.list()?.isEmpty() == true && sourceFile.getProperSize(true) == 0L && sourceFile.getFileCount(true) == 0
if (
activity.getDoesFilePathExist(source)
&& activity.getIsPathDirectory(source)
&& sourceFile.list()?.isEmpty() == true
&& sourceFile.getProperSize(true) == 0L
&& sourceFile.getFileCount(true) == 0
) {
val sourceFolder = sourceFile.toFileDirItem(activity)
activity.deleteFile(sourceFolder, true) {
@@ -519,7 +575,11 @@ class ItemsAdapter(
}
}
private fun copyMoveRootItems(files: ArrayList<FileDirItem>, destinationPath: String, isCopyOperation: Boolean) {
private fun copyMoveRootItems(
files: ArrayList<FileDirItem>,
destinationPath: String,
isCopyOperation: Boolean
) {
activity.toast(R.string.copying)
ensureBackgroundThread {
val fileCnt = files.size
@@ -585,7 +645,11 @@ class ItemsAdapter(
return@handleSAFDialog
}
val paths = getSelectedFileDirItems().asSequence().map { it.path }.filter { it.isZipFile() }.toList()
val paths = getSelectedFileDirItems()
.asSequence()
.map { it.path }
.filter { it.isZipFile() }
.toList()
ensureBackgroundThread {
tryDecompressingPaths(paths) { success ->
activity.runOnUiThread {
@@ -602,15 +666,28 @@ class ItemsAdapter(
}
}
private fun tryDecompressingPaths(sourcePaths: List<String>, callback: (success: Boolean) -> Unit) {
private fun tryDecompressingPaths(
sourcePaths: List<String>,
callback: (success: Boolean) -> Unit
) {
sourcePaths.forEach { path ->
ZipInputStream(BufferedInputStream(activity.getFileInputStreamSync(path))).use { zipInputStream ->
try {
val fileDirItems = ArrayList<FileDirItem>()
var entry = zipInputStream.nextEntry
while (entry != null) {
val currPath = if (entry.isDirectory) path else "${path.getParentPath().trimEnd('/')}/${entry.fileName}"
val fileDirItem = FileDirItem(currPath, entry.fileName, entry.isDirectory, 0, entry.uncompressedSize)
val currPath = if (entry.isDirectory) {
path
} else {
"${path.getParentPath().trimEnd('/')}/${entry.fileName}"
}
val fileDirItem = FileDirItem(
path = currPath,
name = entry.fileName,
isDirectory = entry.isDirectory,
children = 0,
size = entry.uncompressedSize
)
fileDirItems.add(fileDirItem)
entry = zipInputStream.nextEntry
}
@@ -635,9 +712,16 @@ class ItemsAdapter(
}
}
private fun decompressPaths(paths: List<String>, conflictResolutions: LinkedHashMap<String, Int>, callback: (success: Boolean) -> Unit) {
private fun decompressPaths(
paths: List<String>,
conflictResolutions: LinkedHashMap<String, Int>,
callback: (success: Boolean) -> Unit
) {
paths.forEach { path ->
val zipInputStream = ZipInputStream(BufferedInputStream(activity.getFileInputStreamSync(path)))
val zipInputStream =
ZipInputStream(BufferedInputStream(activity.getFileInputStreamSync(path)))
val foldersTimestamp = mutableListOf<Pair<File, LocalFileHeader>>()
zipInputStream.use {
try {
var entry = zipInputStream.nextEntry
@@ -650,11 +734,15 @@ class ItemsAdapter(
val resolution = getConflictResolution(conflictResolutions, newPath)
val doesPathExist = activity.getDoesFilePathExist(newPath)
if (doesPathExist && resolution == CONFLICT_OVERWRITE) {
val fileDirItem = FileDirItem(newPath, newPath.getFilenameFromPath(), entry.isDirectory)
val fileDirItem = FileDirItem(
path = newPath,
name = newPath.getFilenameFromPath(),
isDirectory = entry.isDirectory
)
if (activity.getIsPathDirectory(path)) {
activity.deleteFolderBg(fileDirItem, false) {
if (it) {
extractEntry(newPath, entry, zipInputStream)
extractEntry(newPath, entry, zipInputStream, foldersTimestamp)
} else {
callback(false)
}
@@ -662,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)
@@ -683,21 +774,33 @@ class ItemsAdapter(
}
}
private fun extractEntry(newPath: String, entry: LocalFileHeader, zipInputStream: ZipInputStream) {
private fun extractEntry(
newPath: String,
entry: LocalFileHeader,
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)
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())
if (fos != null) {
zipInputStream.copyTo(fos)
File(newPath).setLastModified(entry)
}
}
}
private fun getConflictResolution(conflictResolutions: LinkedHashMap<String, Int>, path: String): Int {
private fun getConflictResolution(
conflictResolutions: LinkedHashMap<String, Int>,
path: String
): Int {
return if (conflictResolutions.size == 1 && conflictResolutions.containsKey("")) {
conflictResolutions[""]!!
} else if (conflictResolutions.containsKey(path)) {
@@ -708,15 +811,21 @@ class ItemsAdapter(
}
@SuppressLint("NewApi")
private fun compressPaths(sourcePaths: List<String>, targetPath: String, password: String? = null): Boolean {
private fun compressPaths(
sourcePaths: List<String>,
targetPath: String,
password: String? = null
): Boolean {
val queue = LinkedList<String>()
val fos = activity.getFileOutputStreamSync(targetPath, "application/zip") ?: return false
val zout = password?.let { ZipOutputStream(fos, password.toCharArray()) } ?: ZipOutputStream(fos)
val zout =
password?.let { ZipOutputStream(fos, password.toCharArray()) } ?: ZipOutputStream(fos)
var res: Closeable = fos
fun zipEntry(name: String) = ZipParameters().also {
fun zipEntry(name: String, lastModified: Long) = ZipParameters().also {
it.fileNameInZip = name
it.lastModifiedFileTime = lastModified
if (password != null) {
it.isEncryptFiles = true
it.encryptionMethod = EncryptionMethod.AES
@@ -732,9 +841,11 @@ class ItemsAdapter(
queue.push(mainFilePath)
if (activity.getIsPathDirectory(mainFilePath)) {
name = "${mainFilePath.getFilenameFromPath()}/"
val dirModified = File(mainFilePath).lastModified()
zout.putNextEntry(
ZipParameters().also {
it.fileNameInZip = name
it.lastModifiedFileTime = dirModified
}
)
}
@@ -749,9 +860,9 @@ class ItemsAdapter(
if (activity.getIsPathDirectory(file.path)) {
queue.push(file.path)
name = "${name.trimEnd('/')}/"
zout.putNextEntry(zipEntry(name))
zout.putNextEntry(zipEntry(name, file.modified))
} else {
zout.putNextEntry(zipEntry(name))
zout.putNextEntry(zipEntry(name, file.modified))
activity.getFileInputStreamSync(file.path)!!.copyTo(zout)
zout.closeEntry()
}
@@ -764,9 +875,9 @@ class ItemsAdapter(
if (activity.getIsPathDirectory(file.absolutePath)) {
queue.push(file.absolutePath)
name = "${name.trimEnd('/')}/"
zout.putNextEntry(zipEntry(name))
zout.putNextEntry(zipEntry(name, file.lastModified()))
} else {
zout.putNextEntry(zipEntry(name))
zout.putNextEntry(zipEntry(name, file.lastModified()))
activity.getFileInputStreamSync(file.path)!!.copyTo(zout)
zout.closeEntry()
}
@@ -774,8 +885,14 @@ class ItemsAdapter(
}
} else {
name = if (base == currentPath) currentPath.getFilenameFromPath() else mainFilePath.relativizeWith(base)
zout.putNextEntry(zipEntry(name))
name =
if (base == currentPath) {
currentPath.getFilenameFromPath()
} else {
mainFilePath.relativizeWith(base)
}
val fileModified = File(mainFilePath).lastModified()
zout.putNextEntry(zipEntry(name, fileModified))
activity.getFileInputStreamSync(mainFilePath)!!.copyTo(zout)
zout.closeEntry()
}
@@ -849,7 +966,11 @@ class ItemsAdapter(
private fun getFirstSelectedItemPath() = getSelectedFileDirItems().first().path
private fun getSelectedFileDirItems() = listItems.filter { selectedKeys.contains(it.path.hashCode()) } as ArrayList<FileDirItem>
private fun getSelectedFileDirItems(): ArrayList<FileDirItem> {
return listItems.filter {
selectedKeys.contains(it.path.hashCode())
} as ArrayList<FileDirItem>
}
fun updateItems(newItems: ArrayList<ListItem>, highlightText: String = "") {
if (newItems.hashCode() != currentItemsHash) {
@@ -895,7 +1016,8 @@ class ItemsAdapter(
override fun onViewRecycled(holder: ViewHolder) {
super.onViewRecycled(holder)
if (!activity.isDestroyed && !activity.isFinishing) {
val icon = Binding.getByItemViewType(holder.itemViewType, isListViewType).bind(holder.itemView).itemIcon
val icon = Binding.getByItemViewType(holder.itemViewType, isListViewType)
.bind(holder.itemView).itemIcon
if (icon != null) {
Glide.with(activity).clear(icon)
}
@@ -907,16 +1029,35 @@ class ItemsAdapter(
binding.apply {
if (listItem.isSectionTitle) {
itemIcon?.setImageDrawable(folderDrawable)
itemSection?.text = if (textToHighlight.isEmpty()) listItem.mName else listItem.mName.highlightTextPart(textToHighlight, properPrimaryColor)
itemSection?.text =
if (textToHighlight.isEmpty()) {
listItem.mName
} else {
listItem.mName.highlightTextPart(
textToHighlight = textToHighlight,
color = properPrimaryColor
)
}
itemSection?.setTextColor(textColor)
itemSection?.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize)
} else if (!listItem.isGridTypeDivider) {
root.setupViewBackground(activity)
itemFrame.isSelected = isSelected
val fileName = listItem.name
itemName?.text = if (textToHighlight.isEmpty()) fileName else fileName.highlightTextPart(textToHighlight, properPrimaryColor)
itemName?.text =
if (textToHighlight.isEmpty()) {
fileName
} else {
fileName.highlightTextPart(
textToHighlight = textToHighlight,
color = properPrimaryColor
)
}
itemName?.setTextColor(textColor)
itemName?.setTextSize(TypedValue.COMPLEX_UNIT_PX, if (isListViewType) fontSize else smallerFontSize)
itemName?.setTextSize(
TypedValue.COMPLEX_UNIT_PX,
if (isListViewType) fontSize else smallerFontSize
)
itemDetails?.setTextColor(textColor)
itemDetails?.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize)
@@ -945,7 +1086,10 @@ class ItemsAdapter(
itemDate?.beVisible()
itemDate?.text = listItem.modified.formatDate(activity, dateFormat, timeFormat)
val drawable = fileDrawables.getOrElse(fileName.substringAfterLast(".").lowercase(Locale.getDefault()), { fileDrawable })
val drawable = fileDrawables.getOrElse(
key = fileName.substringAfterLast(".").lowercase(Locale.getDefault()),
defaultValue = { fileDrawable }
)
val options = RequestOptions()
.signature(listItem.getKey())
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
@@ -970,14 +1114,18 @@ class ItemsAdapter(
return activity.resources.getQuantityString(R.plurals.items, children, children)
}
private fun getOTGPublicPath(itemToLoad: String) =
"${baseConfig.OTGTreeUri}/document/${baseConfig.OTGPartition}%3A${itemToLoad.substring(baseConfig.OTGPath.length).replace("/", "%2F")}"
private fun getOTGPublicPath(itemToLoad: String): String {
return "${baseConfig.OTGTreeUri}/document/${baseConfig.OTGPartition}%3A${
itemToLoad.substring(baseConfig.OTGPath.length).replace("/", "%2F")
}"
}
private fun getImagePathToLoad(path: String): Any {
var itemToLoad = if (path.endsWith(".apk", true)) {
val packageInfo = activity.packageManager.getPackageArchiveInfo(path, PackageManager.GET_ACTIVITIES)
if (packageInfo != null) {
val appInfo = packageInfo.applicationInfo
val packageInfo =
activity.packageManager.getPackageArchiveInfo(path, PackageManager.GET_ACTIVITIES)
val appInfo = packageInfo?.applicationInfo
if (appInfo != null) {
appInfo.sourceDir = path
appInfo.publicSourceDir = path
appInfo.loadIcon(activity.packageManager)
@@ -998,13 +1146,16 @@ class ItemsAdapter(
}
fun initDrawables() {
folderDrawable = resources.getColoredDrawableWithColor(R.drawable.ic_folder_vector, properPrimaryColor)
folderDrawable =
resources.getColoredDrawableWithColor(R.drawable.ic_folder_vector, properPrimaryColor)
folderDrawable.alpha = 180
fileDrawable = resources.getDrawable(R.drawable.ic_file_generic)
fileDrawables = getFilePlaceholderDrawables(activity)
}
override fun onChange(position: Int) = listItems.getOrNull(position)?.getBubbleText(activity, dateFormat, timeFormat) ?: ""
override fun onChange(position: Int): String {
return listItems.getOrNull(position)?.getBubbleText(activity, dateFormat, timeFormat) ?: ""
}
private sealed interface Binding {
companion object {
@@ -1025,12 +1176,23 @@ class ItemsAdapter(
}
}
fun inflate(layoutInflater: LayoutInflater, viewGroup: ViewGroup, attachToRoot: Boolean): ItemViewBinding
fun inflate(
layoutInflater: LayoutInflater,
viewGroup: ViewGroup,
attachToRoot: Boolean
): ItemViewBinding
fun bind(view: View): ItemViewBinding
data object ItemSection : Binding {
override fun inflate(layoutInflater: LayoutInflater, viewGroup: ViewGroup, attachToRoot: Boolean): ItemViewBinding {
return ItemSectionBindingAdapter(ItemSectionBinding.inflate(layoutInflater, viewGroup, attachToRoot))
override fun inflate(
layoutInflater: LayoutInflater,
viewGroup: ViewGroup,
attachToRoot: Boolean
): ItemViewBinding {
return ItemSectionBindingAdapter(
ItemSectionBinding.inflate(layoutInflater, viewGroup, attachToRoot)
)
}
override fun bind(view: View): ItemViewBinding {
@@ -1039,8 +1201,14 @@ class ItemsAdapter(
}
data object ItemEmpty : Binding {
override fun inflate(layoutInflater: LayoutInflater, viewGroup: ViewGroup, attachToRoot: Boolean): ItemViewBinding {
return ItemEmptyBindingAdapter(ItemEmptyBinding.inflate(layoutInflater, viewGroup, attachToRoot))
override fun inflate(
layoutInflater: LayoutInflater,
viewGroup: ViewGroup,
attachToRoot: Boolean
): ItemViewBinding {
return ItemEmptyBindingAdapter(
ItemEmptyBinding.inflate(layoutInflater, viewGroup, attachToRoot)
)
}
override fun bind(view: View): ItemViewBinding {
@@ -1049,8 +1217,14 @@ class ItemsAdapter(
}
data object ItemFileDirList : Binding {
override fun inflate(layoutInflater: LayoutInflater, viewGroup: ViewGroup, attachToRoot: Boolean): ItemViewBinding {
return ItemFileDirListBindingAdapter(ItemFileDirListBinding.inflate(layoutInflater, viewGroup, attachToRoot))
override fun inflate(
layoutInflater: LayoutInflater,
viewGroup: ViewGroup,
attachToRoot: Boolean
): ItemViewBinding {
return ItemFileDirListBindingAdapter(
ItemFileDirListBinding.inflate(layoutInflater, viewGroup, attachToRoot)
)
}
override fun bind(view: View): ItemViewBinding {
@@ -1059,8 +1233,14 @@ class ItemsAdapter(
}
data object ItemDirGrid : Binding {
override fun inflate(layoutInflater: LayoutInflater, viewGroup: ViewGroup, attachToRoot: Boolean): ItemViewBinding {
return ItemDirGridBindingAdapter(ItemDirGridBinding.inflate(layoutInflater, viewGroup, attachToRoot))
override fun inflate(
layoutInflater: LayoutInflater,
viewGroup: ViewGroup,
attachToRoot: Boolean
): ItemViewBinding {
return ItemDirGridBindingAdapter(
ItemDirGridBinding.inflate(layoutInflater, viewGroup, attachToRoot)
)
}
override fun bind(view: View): ItemViewBinding {
@@ -1069,8 +1249,14 @@ class ItemsAdapter(
}
data object ItemFileGrid : Binding {
override fun inflate(layoutInflater: LayoutInflater, viewGroup: ViewGroup, attachToRoot: Boolean): ItemViewBinding {
return ItemFileGridBindingAdapter(ItemFileGridBinding.inflate(layoutInflater, viewGroup, attachToRoot))
override fun inflate(
layoutInflater: LayoutInflater,
viewGroup: ViewGroup,
attachToRoot: Boolean
): ItemViewBinding {
return ItemFileGridBindingAdapter(
ItemFileGridBinding.inflate(layoutInflater, viewGroup, attachToRoot)
)
}
override fun bind(view: View): ItemViewBinding {
@@ -1112,7 +1298,9 @@ class ItemsAdapter(
override fun getRoot(): View = binding.root
}
private class ItemFileDirListBindingAdapter(val binding: ItemFileDirListBinding) : ItemViewBinding {
private class ItemFileDirListBindingAdapter(
val binding: ItemFileDirListBinding
) : ItemViewBinding {
override val itemFrame: FrameLayout = binding.itemFrame
override val itemName: TextView = binding.itemName
override val itemIcon: ImageView = binding.itemIcon
@@ -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
@@ -22,7 +22,8 @@ class ViewPagerAdapter(val activity: SimpleActivity, val tabsToShow: ArrayList<I
(view as MyViewPagerFragment<*>).apply {
val isPickRingtoneIntent = activity.intent.action == RingtoneManager.ACTION_RINGTONE_PICKER
val isGetContentIntent = activity.intent.action == Intent.ACTION_GET_CONTENT || activity.intent.action == Intent.ACTION_PICK
val isGetContentIntent = activity.intent.action == Intent.ACTION_GET_CONTENT
|| activity.intent.action == Intent.ACTION_PICK
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
}
@@ -0,0 +1,15 @@
package org.fossify.filemanager.extensions
import net.lingala.zip4j.model.LocalFileHeader
import java.io.File
fun File.setLastModified(localFileHeader: LocalFileHeader) {
setLastModified(localFileHeader.lastModifiedOrCurrentTimeMillis)
}
private val LocalFileHeader.lastModifiedOrCurrentTimeMillis
get() = if (lastModifiedTimeEpoch == 0L) {
System.currentTimeMillis()
} else {
lastModifiedTimeEpoch
}
@@ -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"
+16 -9
View File
@@ -6,22 +6,29 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/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"
+1 -1
View File
@@ -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"
+15 -8
View File
@@ -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"
+16 -9
View File
@@ -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"
+14 -7
View File
@@ -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>
+20 -8
View File
@@ -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"
+6 -1
View File
@@ -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
View File
@@ -0,0 +1 @@
unqualifiedResLocale=en-US
+30 -21
View File
@@ -1,38 +1,47 @@
<?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="set_as_home_folder">تعيين كمجلد رئيسي</string>
<string name="home_folder_updated">تم تحديث المجلد الرئيسي</string>
<string name="copy_path">نسخ المسار الى الحافظة</string>
<string name="path_copied">تم نسخ المسار</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="compress">ضغط</string>
<string name="show_recents">أظهر الأحدث</string>
<string name="invert_colors">اعكس الألوان</string>
<string name="compress">اضغط</string>
<string name="decompress">فك الضغط</string>
<string name="compress_as">ضغط كا</string>
<string name="compressing">ضغط…</string>
<string name="decompressing">فك الضغط…</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="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="file_editor">محرّر الملفات</string>
<string name="storage_analysis">تحليل التخزين</string>
<string name="images">الصور</string>
<string name="videos">الفيديوهات</string>
<string name="archives">الأرشيف</string>
<string name="others">الاخرين</string>
<string name="others">الآخرين</string>
<string name="total_storage">إجمالي مساحة التخزين: %s</string>
<string name="enable_root_access">تفعيل الدخول الى مسار الروت</string>
<string name="press_back_twice">تتطلب الضغط على رجوع مرتين لمغادرة التطبيق</string>
<string name="enable_root_access">فعّل وصول الجذر (root)</string>
<string name="press_back_twice">يتطلب النقر على رجوع مرتين لمغادرة التطبيق</string>
<string name="audio">صوت</string>
<string name="documents">المستندات</string>
<string name="downloads">التنزيلات</string>
<string name="storage_free">خالية</string>
<string name="open_as">افتح كـ</string>
<string name="image_file">ملف صورة</string>
<string name="text_file">ملف نصي</string>
<string name="audio_file">ملف صوتي</string>
<string name="video_file">ملف فيديو</string>
<string name="other_file">ملف آخر</string>
</resources>
+3 -1
View File
@@ -1,2 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="audio">Audio</string>
</resources>
+2 -2
View File
@@ -34,7 +34,7 @@
<string name="file_editor">Файлов редактор</string>
<string name="storage_analysis">Анализ на съхранението</string>
<string name="images">Изображения</string>
<string name="videos">Видеоклипове</string>
<string name="videos">Видео</string>
<string name="archives">Архиви</string>
<string name="others">Други</string>
<string name="total_storage">Общо място за съхранение: %s</string>
@@ -44,4 +44,4 @@
<string name="storage_free">свободно</string>
<string name="documents">Документи</string>
<string name="audio">Аудиофайлове</string>
</resources>
</resources>
+22
View File
@@ -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>
+2 -2
View File
@@ -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>
+27 -2
View File
@@ -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>
+5 -5
View File
@@ -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>
+1 -1
View File
@@ -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>
+8 -1
View File
@@ -1,2 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<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>
+5 -1
View File
@@ -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>
+44 -2
View File
@@ -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>
+1 -1
View File
@@ -39,7 +39,7 @@
<string name="downloads">Lataukset</string>
<string name="archives">Arkistot</string>
<string name="others">Muut</string>
<string name="storage_free">ilmainen</string>
<string name="storage_free">vapaana</string>
<string name="total_storage">Tallennustila: %s</string>
<string name="enable_root_access">Ota käyttöön root-ominaisuudet</string>
<string name="press_back_twice">Ota käyttöön sovelluksesta poistuminen kahdella takaisin-painikkeen painalluksella</string>
+2 -2
View File
@@ -26,8 +26,8 @@
<string name="decompressing">Décompression…</string>
<string name="compression_successful">Compression réussie</string>
<string name="decompression_successful">Décompression réussie</string>
<string name="compressing_failed">Compression ratée</string>
<string name="decompressing_failed">Décompression ratée</string>
<string name="compressing_failed">Échec de la compression</string>
<string name="decompressing_failed">Échec de la décompression</string>
<string name="manage_favorites">Gérer les favoris</string>
<string name="go_to_favorite">Aller au favori</string>
<string name="favorites_activity_placeholder">Vous pouvez ajouter des dossiers souvent utilisés comme favoris pour y avoir accès rapidement depuis n\'importe où.</string>
+6 -6
View File
@@ -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>
+17 -17
View File
@@ -1,17 +1,17 @@
<?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>
<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="show_recents">הצג אחרונים</string>
<string name="invert_colors">הפוך צבעים</string>
<string name="open_as">פתח כ</string>
<string name="text_file">קובץ טקסט</string>
@@ -19,29 +19,29 @@
<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="compress">דחיסה</string>
<string name="decompress">חילוץ</string>
<string name="compress_as">דחיסה כ</string>
<string name="compressing">דוחס…</string>
<string name="decompressing">משחרר דחיסה…</string>
<string name="decompressing">מחלץ…</string>
<string name="compression_successful">הדחיסה הצליחה</string>
<string name="decompression_successful">שחרור הדחיסה הצליח</string>
<string name="decompression_successful">החילוץ הצליח</string>
<string name="compressing_failed">הדחיסה נכשלה</string>
<string name="decompressing_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="favorites_activity_placeholder">באפשרותך להוסיף תיקיות בשימוש תכוף למועדפים לגישה נוחה מכל מקום.</string>
<string name="file_editor">עורך הקבצים</string>
<string name="storage_analysis">ניתוח אחסון</string>
<string name="images">תמונות</string>
<string name="videos">וידיאו</string>
<string name="audio">אודיו</string>
<string name="videos">סרטונים</string>
<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="storage_free">חופשי</string>
<string name="total_storage">שטח אחסון כולל: %s</string>
<string name="enable_root_access">אפשר גישת שורש</string>
<string name="press_back_twice">דרוש לחיצה על חזרה פעמיים כדי לצאת מהאפליקציה דרוש לחיצה על חזרה פעמיים כדי לצאת מהאפליקציה</string>
<string name="press_back_twice">דרישת לחיצה כפולה על כפתור אחורה כדי לצאת מהאפליקציה</string>
</resources>
+47
View File
@@ -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>
+3 -2
View File
@@ -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>
+21 -8
View File
@@ -1,14 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_launcher_name">Failų tvarkytuvė</string>
<string name="press_back_again">Paspauskite atgal dar kartą, norėdami išeiti</string>
<string name="press_back_again">Dar kartą paspauskite atgal, kad išeitumėte</string>
<string name="copy_path">Kopijuoti kelią į iškarpinę</string>
<string name="path_copied">Kelias nukopijuotas</string>
<string name="select_audio_file">Pasirinkite garso įrašo failą</string>
<string name="search_folder">Ieškoti aplanke</string>
<string name="search_folder">Ieškoti aplanką</string>
<string name="open_as">Atverti kaip</string>
<string name="text_file">Tekstinis failas</string>
<string name="image_file">Paveikslo failas</string>
<string name="image_file">Vaizdo failas</string>
<string name="audio_file">Garso įrašo failas</string>
<string name="video_file">Vaizdo įrašo failas</string>
<string name="other_file">Kitas failas</string>
@@ -19,16 +19,29 @@
<string name="decompressing">Išskleidžiama…</string>
<string name="compression_successful">Glaudinimas sėkmingas</string>
<string name="decompression_successful">Išskleidimas sėkmingas</string>
<string name="compressing_failed">Nepavyko glaudinti</string>
<string name="decompressing_failed">Nepavyko išskleisti</string>
<string name="file_editor">Failų redaktorius</string>
<string name="compressing_failed">Glaudinimas nepavyko.</string>
<string name="decompressing_failed">Išskleidimas nepavyko.</string>
<string name="file_editor">Failų rengyklė</string>
<string name="storage_analysis">Saugyklos analizė</string>
<string name="images">Paveikslai</string>
<string name="images">Vaizdai</string>
<string name="videos">Vaizdo įrašai</string>
<string name="audio">Garso įrašai</string>
<string name="documents">Dokumentai</string>
<string name="downloads">Atsiuntimai</string>
<string name="downloads">Atsisiuntimai</string>
<string name="archives">Archyvai</string>
<string name="others">Kiti</string>
<string name="storage_free">laisva</string>
<string name="enable_root_access">Įjungti pagrindinį prieigą</string>
<string name="total_storage">Bendra saugykla: %s</string>
<string name="invert_colors">Invertuoti spalvas</string>
<string name="rooted_device_only">Ši operacija veikia tik pagrindiniuose įrenginiuose.</string>
<string name="recents">Naujausiai</string>
<string name="show_recents">Rodyti naujausių</string>
<string name="press_back_twice">Reikalauti dukart paspausti „Atgal“, kad palikti programėlę</string>
<string name="manage_favorites">Tvarkyti mėgstamus</string>
<string name="go_to_favorite">Eiti į mėgstamą</string>
<string name="favorites_activity_placeholder">Dažnai naudojamus aplankus galite pridėti prie mėgstamų, kad juos būtų lengva pasiekti iš bet kur.</string>
<string name="go_to_home_folder">Eiti į pagrindinį aplanką</string>
<string name="set_as_home_folder">Nustatyti kaip pagrindinį aplanką</string>
<string name="home_folder_updated">Pagrindinis aplankas atnaujintas</string>
</resources>
+4 -1
View File
@@ -1,2 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="press_back_again">Притиснете назад уште еднаш за да излезете</string>
<string name="app_launcher_name">Управител со датотеки</string>
</resources>
+5 -1
View File
@@ -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>
+6 -1
View File
@@ -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>
+47
View File
@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="search_folder">Cercar dins lo dossièr</string>
<string name="invert_colors">Invertir las colors</string>
<string name="images">Imatges</string>
<string name="app_launcher_name">Gestionari de fichièrs</string>
<string name="recents">Recents</string>
<string name="show_recents">Mostrar los recents</string>
<string name="open_as">Dobrir coma</string>
<string name="text_file">Fichièr tèxte</string>
<string name="image_file">Fichièr imatge</string>
<string name="audio_file">Fichièr àudio</string>
<string name="video_file">Fichièr vidèo</string>
<string name="other_file">Autre fichièr</string>
<string name="decompress">Descompressar</string>
<string name="compress_as">Compressar coma</string>
<string name="compressing">Compression…</string>
<string name="decompressing">Descompression…</string>
<string name="compression_successful">Compression reüssida</string>
<string name="go_to_favorite">Anar als favorits</string>
<string name="file_editor">Editor de fichièrs</string>
<string name="videos">Vidèos</string>
<string name="audio">Àudio</string>
<string name="downloads">Telecargaments</string>
<string name="archives">Fichièrs</string>
<string name="others">Autres</string>
<string name="storage_free">disponible</string>
<string name="total_storage">Emmagazinatge total : %s</string>
<string name="enable_root_access">Activar l’accès root</string>
<string name="press_back_again">Tocatz de nòu en rèire per sortir</string>
<string name="go_to_home_folder">Anar al dossièr principal</string>
<string name="set_as_home_folder">Definir coma dossièr principal</string>
<string name="home_folder_updated">Dossièr per defaut actualizat</string>
<string name="copy_path">Copiar l’emplaçament al quichapapièrs</string>
<string name="path_copied">Emplaçament copiat</string>
<string name="select_audio_file">Seleccionatz un fichièr àudio</string>
<string name="compress">Compressar</string>
<string name="documents">Documents</string>
<string name="rooted_device_only">Aquesta operacion fonciona sonque suls aparelhs rootats</string>
<string name="decompression_successful">Descompression reüssida</string>
<string name="compressing_failed">Fracàs de la compression</string>
<string name="decompressing_failed">Fracàs de la descompression</string>
<string name="manage_favorites">Gerir los favorits</string>
<string name="storage_analysis">Analisi de l\'emmagazinatge</string>
<string name="press_back_twice">Cal quichar dos còps la tòca Entrada per quitar l\'aplicacion</string>
<string name="favorites_activity_placeholder">Podètz apondre los dossièrs utilizatq frequentament per i accedir de pertot.</string>
</resources>
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_launcher_name">Arquivos</string>
<string name="app_launcher_name">Gerenciador de Arquivos</string>
<string name="press_back_again">Aperte novamente o botão Voltar para sair</string>
<string name="go_to_home_folder">Ir para Pasta Principal</string>
<string name="set_as_home_folder">Definir como Pasta Principal</string>
+2 -2
View File
@@ -13,7 +13,7 @@
<string name="recents">Недавнее</string>
<string name="show_recents">Показывать недавнее</string>
<string name="invert_colors">Инвертировать цвета</string>
<string name="open_as">Открыть как…</string>
<string name="open_as">Открыть как</string>
<string name="text_file">Текст</string>
<string name="image_file">Изображение</string>
<string name="audio_file">Звуковой файл</string>
@@ -21,7 +21,7 @@
<string name="other_file">Другое</string>
<string name="compress">Сжать</string>
<string name="decompress">Извлечь</string>
<string name="compress_as">Сжать как…</string>
<string name="compress_as">Сжать как</string>
<string name="compressing">Сжатие…</string>
<string name="decompressing">Извлечение…</string>
<string name="compression_successful">Сжатие успешно</string>
+1
View File
@@ -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 -1
View File
@@ -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>
+1
View File
@@ -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>
+3
View File
@@ -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>
+7 -7
View File
@@ -18,19 +18,19 @@
<string name="image_file">Resim dosyası</string>
<string name="audio_file">Ses dosyası</string>
<string name="video_file">Video dosyası</string>
<string name="other_file">Diğer dosya</string>
<string name="other_file">Diğer dosyalar</string>
<string name="compress">Sıkıştır</string>
<string name="decompress">Çöz</string>
<string name="decompress">Çıkar</string>
<string name="compress_as">Sıkıştır</string>
<string name="compressing">Sıkıştırılıyor…</string>
<string name="decompressing">Çözülüyor…</string>
<string name="decompressing">Çıkarılıyor…</string>
<string name="compression_successful">Sıkıştırma başarılı</string>
<string name="decompression_successful">Çözme başarılı</string>
<string name="decompression_successful">Çıkarma başarılı</string>
<string name="compressing_failed">Sıkıştırma başarısız</string>
<string name="decompressing_failed">Çözme başarısız</string>
<string name="decompressing_failed">Çıkarma başarısız</string>
<string name="manage_favorites">Gözdeleri yönet</string>
<string name="go_to_favorite">Gözdeye git</string>
<string name="favorites_activity_placeholder">Sık kullanılan klasörleri her yerden kolay erişmek için gözdelere ekleyebilirsiniz.</string>
<string name="favorites_activity_placeholder">Sık kullanılan klasörlere her yerden kolay erişmek için gözdelere ekleyebilirsiniz.</string>
<string name="file_editor">Dosya Düzenleyici</string>
<string name="storage_analysis">Depolama analizi</string>
<string name="images">Resimler</string>
@@ -44,4 +44,4 @@
<string name="total_storage">Toplam depolama: %s</string>
<string name="enable_root_access">Root erişimini etkinleştir</string>
<string name="press_back_twice">Uygulamadan çıkmak için Geri tuşuna iki kez basmayı gerektir</string>
</resources>
</resources>
+9 -9
View File
@@ -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>
+8 -8
View File
@@ -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,8 +14,8 @@
<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">Quản lý mục yêu thích</string>
<string name="go_to_favorite">Đến 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>
<string name="audio">Âm thanh</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>
</resources>
<string name="press_back_twice">Nhấn đúp Quay lại để thoát ứng dụng</string>
</resources>
+1 -1
View File
@@ -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>
+44 -1
View File
@@ -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>
+2 -2
View File
@@ -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
View File
@@ -1,5 +1,4 @@
plugins {
alias(libs.plugins.android).apply(false)
alias(libs.plugins.kotlinAndroid).apply(false)
alias(libs.plugins.detekt).apply(false)
}
+63
View File
@@ -0,0 +1,63 @@
build:
maxIssues: 0
weights:
complexity: 2
LongParameterList: 2
style: 1
processors:
active: true
exclude:
- "FunctionCountProcessor"
- "PropertyCountProcessor"
config:
validation: true
complexity:
LongParameterList:
active: true
functionThreshold: 10
constructorThreshold: 8
ignoreDefaultParameters: true
ignoreAnnotated:
- "Composable"
LongMethod:
active: true
threshold: 120
ignoreAnnotated:
- "Composable"
- "Preview"
style:
MagicNumber:
active: true
ignoreAnnotated: ["Composable"]
ignoreEnums: true
ignoreNumbers: ["-1", "0", "1", "2", "42", "1000"]
MaxLineLength:
active: true
maxLineLength: 120
excludePackageStatements: true
excludeImportStatements: true
ReturnCount:
active: true
max: 4
excludeGuardClauses: true
excludes: ["**/test/**", "**/androidTest/**"]
naming:
FunctionNaming:
active: true
ignoreAnnotated: ["Composable", "Preview"]
functionPattern: "[a-z][A-Za-z0-9]*"
Compose: # io.nlopez.compose.rules
ComposableParametersOrdering:
active: true
ModifierDefaultValue:
active: true
MissingModifierDefaultValue:
active: true
PublicComposablePreview:
active: true
@@ -0,0 +1,30 @@
هل سئمت من مديري الملفات الذين يبطئونك وينتهكون خصوصيتك؟ افتح تجربة سريعة وآمنة وقابلة للتخصيص بالكامل مع مدير الملفات Fossify. ⚡
🚀 سيطر على عالمك الرقمي من خلال التنقل فائق السرعة:
• أدر ملفاتك بسرعة من خلال إمكانيات الضغط والنقل السهلة، مما يحافظ على تنظيم حياتك الرقمية.
• يمكنك الوصول بسرعة إلى المجلدات الأكثر استخدامًا لديك باستخدام مجلد المنزل القابل للتخصيص واختصارات المفضلة.
• ابحث عما تحتاجه في ثوانٍ باستخدام خيارات التنقل والبحث والفرز البديهية.
🔐 عزز بياناتك بخصوصية وأمان لا مثيل لهما:
• أمّن الملفات الحساسة بكلمة مرور أو نمط أو أقفال بصمة الإصبع للعناصر المخفية أو التطبيق بأكمله.
• لا يلزم الوصول إلى الإنترنت - تظل ملفاتك خاصة وآمنة على جهازك.
💾 أتقن تخزينك مثل المحترفين:
• أفرغ المساحة بضغط سهل للملفات والمجلدات لزيادة إمكانات جهازك.
• تحديد وتنظيف الملفات التي تستهلك مساحة كبيرة باستخدام أداة تحليل التخزين المضمنة.
• يمكنك التنقل بسلاسة في ملفات الجذر وبطاقات SD وأجهزة USB للتنظيم الكامل.
📁 حسّن سير عملك باستخدام أدوات يدوية:
• أنشئ اختصارات لسطح المكتب للوصول الفوري إلى الملفات والمجلدات الأكثر استخدامًا لديك.
• حرّر المستندات أو طباعتها أو قراءتها بسهولة باستخدام محرر الملفات الخفيف، المعزز بإيماءات التكبير/التصغير.
اجعلها خاصة بك مع التخصيص اللانهائي:
• استمتع بتجربة مفتوحة المصدر وخالية من الإعلانات تمنحك التحكم، وليس الشركات العملاقة.
• خصّص الألوان والسمات والأيقونات لتعكس أسلوبك وتفضيلاتك الفريدة.
تخلص من مديري الملفات المنتفخين والمنتهكين للخصوصية واستمتع بالحرية الحقيقية مع مدير الملفات Fossify. نزّل الآن واستعد التحكم في حياتك الرقمية!
استكشف المزيد من التطبيقات بواسطة 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 @@
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)
Loaded 100 of 125 files, more files were not shown because too many files have changed in this diff. Show more