17 Commits
1.1.2 ... 1.1.4

Author SHA1 Message Date
fossifybot[bot]
355e4aa7ad chore(release): v1.1.4 (7) (#185)
Co-authored-by: fossifybot[bot] <212866877+fossifybot[bot]@users.noreply.github.com>
2025-06-28 18:32:08 +05:30
Naveen Singh
562ea3e5f9 fix: check nullability before placing widget (#184)
* fix: check nullability before placing widget

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

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

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

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

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

* fix(i18n): generate locale config automatically

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

---------

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

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

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

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

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

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

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

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

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

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

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

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

* fix: handle null shortcutInfo gracefully

* style: format code

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

* fix: use safe calls to prevent NPEs

* style: format code

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

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

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

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

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

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

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

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

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

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

* chore: add code owners

* ci: add fastlane metadata validation
2025-06-09 14:48:55 +05:30
25 changed files with 1535 additions and 911 deletions

View File

@@ -1,2 +1,2 @@
# Auto-generated file. DO NOT EDIT.
1.1.2
1.1.4

View File

@@ -22,8 +22,6 @@ updates:
prefix: "chore"
prefix-development: "chore"
include: "scope"
assignees:
- "naveensingh"
- package-ecosystem: "gradle"
directory: "/"
@@ -37,8 +35,6 @@ updates:
prefix: "chore"
prefix-development: "chore"
include: "scope"
assignees:
- "naveensingh"
- package-ecosystem: "github-actions"
directory: "/"
@@ -48,5 +44,3 @@ updates:
prefix: "chore"
prefix-development: "chore"
include: "scope"
assignees:
- "naveensingh"

View File

@@ -4,6 +4,10 @@ on:
repository_dispatch:
types: [prepare-release]
workflow_dispatch:
push:
branches: [main]
paths:
- "CHANGELOG.md"
jobs:
call-release-pr:

View File

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

View File

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

1
.gitignore vendored
View File

@@ -10,3 +10,4 @@ keystore.jks
keystore.properties
fastlane/fastlane.json
fastlane/report.xml
.kotlin/

View File

@@ -7,6 +7,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
## [1.1.4] - 2025-06-28
### Fixed
- Addressed crash on startup due to widgets ([#182])
## [1.1.3] - 2025-06-19
### Changed
- Updated translations
### Fixed
- Addressed frequently occurring crashes ([#6])
## [1.1.2] - 2025-06-06
### Changed
@@ -55,7 +71,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Initial release
[Unreleased]: https://github.com/FossifyOrg/Launcher/compare/1.1.2...HEAD
[Unreleased]: https://github.com/FossifyOrg/Launcher/compare/1.1.4...HEAD
[1.1.4]: https://github.com/FossifyOrg/Launcher/compare/1.1.3...1.1.4
[1.1.3]: https://github.com/FossifyOrg/Launcher/compare/1.1.2...1.1.3
[1.1.2]: https://github.com/FossifyOrg/Launcher/compare/1.1.1...1.1.2
[1.1.1]: https://github.com/FossifyOrg/Launcher/compare/1.1.0...1.1.1
[1.1.0]: https://github.com/FossifyOrg/Launcher/compare/1.0.1...1.1.0
@@ -63,9 +81,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
[1.0.0]: https://github.com/FossifyOrg/Launcher/releases/tag/1.0.0
[#5]: https://github.com/FossifyOrg/Launcher/issues/5
[#6]: https://github.com/FossifyOrg/Launcher/issues/6
[#44]: https://github.com/FossifyOrg/Launcher/issues/44
[#51]: https://github.com/FossifyOrg/Launcher/issues/51
[#63]: https://github.com/FossifyOrg/Launcher/issues/63
[#65]: https://github.com/FossifyOrg/Launcher/issues/65
[#74]: https://github.com/FossifyOrg/Launcher/issues/74
[#115]: https://github.com/FossifyOrg/Launcher/issues/115
[#182]: https://github.com/FossifyOrg/Launcher/issues/182

1
CODEOWNERS Normal file
View File

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

View File

@@ -10,26 +10,26 @@ GEM
public_suffix (>= 2.0.2, < 7.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.1116.0)
aws-sdk-core (3.225.2)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.992.0)
aws-sigv4 (~> 1.9)
base64
jmespath (~> 1, >= 1.6.1)
logger
aws-sdk-kms (1.100.0)
aws-sdk-core (~> 3, >= 3.216.0)
aws-sdk-kms (1.105.0)
aws-sdk-core (~> 3, >= 3.225.0)
aws-sigv4 (~> 1.5)
aws-sdk-s3 (1.185.0)
aws-sdk-core (~> 3, >= 3.216.0)
aws-sdk-s3 (1.189.1)
aws-sdk-core (~> 3, >= 3.225.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)
claide (1.1.0)
colored (1.2)
colored2 (3.1.2)
@@ -71,7 +71,7 @@ GEM
faraday_middleware (1.2.1)
faraday (~> 1.0)
fastimage (2.4.0)
fastlane (2.227.2)
fastlane (2.228.0)
CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.8, < 3.0.0)
artifactory (~> 3.0)
@@ -160,7 +160,7 @@ GEM
httpclient (2.9.0)
mutex_m
jmespath (1.6.2)
json (2.11.3)
json (2.12.2)
jwt (2.10.1)
base64
logger (1.7.0)
@@ -170,13 +170,13 @@ GEM
multipart-post (2.4.1)
mutex_m (0.3.0)
nanaimo (0.4.0)
naturally (2.2.1)
naturally (2.3.0)
nkf (0.2.0)
optparse (0.6.0)
os (1.1.4)
plist (3.7.2)
public_suffix (6.0.2)
rake (13.2.1)
rake (13.3.0)
representable (3.2.0)
declarative (< 0.1.0)
trailblazer-option (>= 0.1.1, < 0.2.0)

View File

@@ -1,3 +1,4 @@
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import org.jetbrains.kotlin.konan.properties.Properties
import java.io.FileInputStream
@@ -100,8 +101,15 @@ android {
includeInApk = false
}
androidResources {
@Suppress("UnstableApiUsage")
generateLocaleConfig = true
}
tasks.withType<KotlinCompile> {
kotlinOptions.jvmTarget = project.libs.versions.app.build.kotlinJVMTarget.get()
compilerOptions.jvmTarget.set(
JvmTarget.fromTarget(project.libs.versions.app.build.kotlinJVMTarget.get())
)
}
namespace = project.property("APP_ID").toString()
@@ -109,8 +117,9 @@ android {
lint {
checkReleaseBuilds = false
abortOnError = true
warningsAsErrors = true
warningsAsErrors = false
baseline = file("lint-baseline.xml")
lintConfig = rootProject.file("lint.xml")
}
bundle {

View File

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

View File

@@ -1,269 +1,733 @@
<?xml version="1.0" encoding="UTF-8"?>
<issues format="6" by="lint 8.1.1" type="baseline" client="gradle" dependencies="false" name="AGP (8.1.1)" variant="all" version="8.1.1">
<issues format="6" by="lint 8.10.1" type="baseline" client="gradle" dependencies="false" name="AGP (8.10.1)" variant="all" version="8.10.1">
<issue id="NewApi" message="`android:enforceNavigationBarContrast` requires API level 29 (current min is 26)"
<issue
id="NewApi"
message="`android:enforceNavigationBarContrast` requires API level 29 (current min is 26)"
errorLine1=" &lt;item name=&quot;android:enforceNavigationBarContrast&quot;>false&lt;/item>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/styles.xml" line="12" column="15" />
<location
file="src/main/res/values/styles.xml"
line="12"
column="15"/>
</issue>
<issue id="NewApi" message="`android:enforceStatusBarContrast` requires API level 29 (current min is 26)"
<issue
id="NewApi"
message="`android:enforceStatusBarContrast` requires API level 29 (current min is 26)"
errorLine1=" &lt;item name=&quot;android:enforceStatusBarContrast&quot;>false&lt;/item>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/styles.xml" line="13" column="15" />
<location
file="src/main/res/values/styles.xml"
line="13"
column="15"/>
</issue>
<issue id="NewApi" message="`android:windowLayoutInDisplayCutoutMode` requires API level 27 (current min is 26)"
<issue
id="NewApi"
message="`android:windowLayoutInDisplayCutoutMode` requires API level 27 (current min is 26)"
errorLine1=" &lt;item name=&quot;android:windowLayoutInDisplayCutoutMode&quot;>shortEdges&lt;/item>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/styles.xml" line="14" column="15" />
<location
file="src/main/res/values/styles.xml"
line="14"
column="15"/>
</issue>
<issue id="NotificationPermission"
<issue
id="NotificationPermission"
message="When targeting Android 13 or higher, posting a permission requires holding the `POST_NOTIFICATIONS` permission (usage from org.fossify.commons.asynctasks.CopyMoveTask)">
<location file="src/main/AndroidManifest.xml" />
<location
file="src/main/AndroidManifest.xml"/>
</issue>
<issue id="UnusedAttribute" message="Attribute `localeConfig` is only used in API level 33 and higher (current min is 26)"
errorLine1=" android:localeConfig=&quot;@xml/locale_config&quot;" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/AndroidManifest.xml" line="30" column="9" />
<issue
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;34&quot;"
errorLine2=" ~~~~">
<location
file="$HOME/Projects/Fossify/FossifyOrg/Launcher/gradle/libs.versions.toml"
line="16"
column="23"/>
</issue>
<issue id="CustomSplashScreen" message="The application should not provide its own launch screen" errorLine1="class SplashActivity : BaseSplashActivity() {"
<issue
id="UnusedAttribute"
message="Attribute `localeConfig` is only used in API level 33 and higher (current min is 26)"
errorLine1=" android:localeConfig=&quot;@xml/locale_config&quot;"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="31"
column="9"/>
</issue>
<issue
id="CustomSplashScreen"
message="The application should not provide its own launch screen"
errorLine1="class SplashActivity : BaseSplashActivity() {"
errorLine2=" ~~~~~~~~~~~~~~">
<location file="src/main/kotlin/org.fossify.home/activities/SplashActivity.kt" line="6" column="7" />
<location
file="src/main/kotlin/org/fossify/home/activities/SplashActivity.kt"
line="6"
column="7"/>
</issue>
<issue id="LockedOrientationActivity"
<issue
id="AndroidGradlePluginVersion"
message="A newer version of Gradle than 8.11.1 is available: 8.14.2"
errorLine1="distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="$HOME/Projects/Fossify/FossifyOrg/Launcher/gradle/wrapper/gradle-wrapper.properties"
line="3"
column="17"/>
</issue>
<issue
id="GradleDependency"
message="A newer version of androidx.room:room-compiler than 2.7.1 is available: 2.7.2"
errorLine1="room = &quot;2.7.1&quot;"
errorLine2=" ~~~~~~~">
<location
file="$HOME/Projects/Fossify/FossifyOrg/Launcher/gradle/libs.versions.toml"
line="9"
column="8"/>
</issue>
<issue
id="GradleDependency"
message="A newer version of androidx.room:room-ktx than 2.7.1 is available: 2.7.2"
errorLine1="room = &quot;2.7.1&quot;"
errorLine2=" ~~~~~~~">
<location
file="$HOME/Projects/Fossify/FossifyOrg/Launcher/gradle/libs.versions.toml"
line="9"
column="8"/>
</issue>
<issue
id="GradleDependency"
message="A newer version of androidx.room:room-runtime than 2.7.1 is available: 2.7.2"
errorLine1="room = &quot;2.7.1&quot;"
errorLine2=" ~~~~~~~">
<location
file="$HOME/Projects/Fossify/FossifyOrg/Launcher/gradle/libs.versions.toml"
line="9"
column="8"/>
</issue>
<issue
id="GradleDependency"
message="A newer version of org.fossify:commons than 3.0.5 is available: 3.1.0"
errorLine1="commons = &quot;3.0.5&quot;"
errorLine2=" ~~~~~~~">
<location
file="$HOME/Projects/Fossify/FossifyOrg/Launcher/gradle/libs.versions.toml"
line="11"
column="11"/>
</issue>
<issue
id="GradleDependency"
message="A newer version of `compileSdkVersion` than 34 is available: 35"
errorLine1="app-build-compileSDKVersion = &quot;34&quot;"
errorLine2=" ~~~~">
<location
file="$HOME/Projects/Fossify/FossifyOrg/Launcher/gradle/libs.versions.toml"
line="15"
column="31"/>
</issue>
<issue
id="LockedOrientationActivity"
message="Expecting `android:screenOrientation=&quot;unspecified&quot;` or `&quot;fullSensor&quot;` for this activity so the user can use the application in any orientation and provide a great experience on Chrome OS devices"
errorLine1=" android:screenOrientation=&quot;portrait&quot;" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/AndroidManifest.xml" line="47" column="13" />
errorLine1=" android:screenOrientation=&quot;portrait&quot;"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="48"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;app_launcher_name&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;eu&quot; (Basque), &quot;ar&quot; (Arabic), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nl&quot; (Dutch), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;, &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;app_launcher_name&quot;>Launcher_debug&lt;/string>" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/debug/res/values/strings.xml" line="3" column="13" />
<issue
id="DiscouragedApi"
message="Should not restrict activity to fixed orientation. This may not be suitable for different form factors, causing the app to be letterboxed."
errorLine1=" android:screenOrientation=&quot;portrait&quot;"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="48"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;app_name&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;in&quot; (Indonesian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;eu&quot; (Basque), &quot;ar&quot; (Arabic), &quot;nb&quot; (Norwegian Bokmål), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ca&quot; (Catalan), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;, &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;app_name&quot;>Simple Launcher&lt;/string>" errorLine2=" ~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="3" column="13" />
<issue
id="UseRequiresApi"
message="Use `@RequiresApi(Build.VERSION_CODES.Q) instead of `@TargetApi` to propagate the requirement to callers of `getRoleManager`"
errorLine1="@get:TargetApi(Build.VERSION_CODES.Q)"
errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/extensions/Context.kt"
line="34"
column="1"/>
</issue>
<issue id="MissingTranslation"
message="&quot;app_launcher_name&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;eu&quot; (Basque), &quot;ar&quot; (Arabic), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nl&quot; (Dutch), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;, &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;app_launcher_name&quot;>Launcher&lt;/string>" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="4" column="13" />
<issue
id="UseRequiresApi"
message="Use `@RequiresApi(Build.VERSION_CODES.Q) instead of `@TargetApi` to propagate the requirement to callers of `isDefaultLauncher`"
errorLine1="@TargetApi(Build.VERSION_CODES.Q)"
errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/extensions/Context.kt"
line="79"
column="1"/>
</issue>
<issue id="MissingTranslation"
message="&quot;launcher_settings&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;eu&quot; (Basque), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;launcher_settings&quot;>Launcher Settings&lt;/string>" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="5" column="13" />
<issue
id="MissingTranslation"
message="&quot;app_launcher_name&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ar&quot; (Arabic), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;"
errorLine1=" &lt;string name=&quot;app_launcher_name&quot;>Launcher_debug&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/debug/res/values/strings.xml"
line="3"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;app_info&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;eu&quot; (Basque), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;app_info&quot;>App info&lt;/string>" errorLine2=" ~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="6" column="13" />
<issue
id="MissingTranslation"
message="&quot;app_launcher_name&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ar&quot; (Arabic), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;"
errorLine1=" &lt;string name=&quot;app_launcher_name&quot;>Launcher&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="3"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;touch_hold_widget&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;ia&quot; (Interlingua), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;eu&quot; (Basque), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
<issue
id="MissingTranslation"
message="&quot;launcher_settings&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh)"
errorLine1=" &lt;string name=&quot;launcher_settings&quot;>Launcher Settings&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="4"
column="13"/>
</issue>
<issue
id="MissingTranslation"
message="&quot;app_info&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;app_info&quot;>App info&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="5"
column="13"/>
</issue>
<issue
id="MissingTranslation"
message="&quot;touch_hold_widget&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;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;touch_hold_widget&quot;>Long press the widget and drag it on your home screen&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="7" column="13" />
<location
file="src/main/res/values/strings.xml"
line="6"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;uninstall&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;eu&quot; (Basque), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;uninstall&quot;>Uninstall&lt;/string>" errorLine2=" ~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="8" column="13" />
<issue
id="MissingTranslation"
message="&quot;uninstall&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;uninstall&quot;>Uninstall&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="7"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;hide_icon&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;eu&quot; (Basque), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;hide_icon&quot;>Hide icon&lt;/string>" errorLine2=" ~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="9" column="13" />
<issue
id="MissingTranslation"
message="&quot;hide_icon&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;hide_icon&quot;>Hide icon&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="8"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;add_hidden_icons&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;eu&quot; (Basque), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;add_hidden_icons&quot;>Add hidden icons&lt;/string>" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="10" column="13" />
<issue
id="MissingTranslation"
message="&quot;add_hidden_icons&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;add_hidden_icons&quot;>Add hidden icons&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="9"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;manage_hidden_icons&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;eu&quot; (Basque), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;manage_hidden_icons&quot;>Manage hidden icons&lt;/string>" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="11" column="13" />
<issue
id="MissingTranslation"
message="&quot;manage_hidden_icons&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;manage_hidden_icons&quot;>Manage hidden icons&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="10"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;hidden_icons&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;eu&quot; (Basque), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;hidden_icons&quot;>Hidden icons&lt;/string>" errorLine2=" ~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="12" column="13" />
<issue
id="MissingTranslation"
message="&quot;hidden_icons&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;hidden_icons&quot;>Hidden icons&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="11"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;hidden_icons_placeholder&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;eu&quot; (Basque), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
<issue
id="MissingTranslation"
message="&quot;hidden_icons_placeholder&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;hidden_icons_placeholder&quot;>Some apps cannot be uninstalled due to system restrictions, but you can at least hide their icons to avoid seeing them.&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="13" column="13" />
<location
file="src/main/res/values/strings.xml"
line="12"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;app_drawer_settings&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;hr&quot; (Croatian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;in&quot; (Indonesian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;iw&quot; (Hebrew), &quot;eu&quot; (Basque), &quot;nb&quot; (Norwegian Bokmål), &quot;ja&quot; (Japanese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;fi&quot; (Finnish), &quot;bg&quot; (Bulgarian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;sl&quot; (Slovenian), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;sr&quot; (Serbian), &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;gl&quot; (Galician), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;pa&quot; (Punjabi), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;app_drawer_settings&quot;>App drawer&lt;/string>" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="14" column="13" />
<issue
id="MissingTranslation"
message="&quot;app_drawer_settings&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;nb&quot; (Norwegian Bokmål), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bg&quot; (Bulgarian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;sl&quot; (Slovenian), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;sr&quot; (Serbian), &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;pa&quot; (Punjabi), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;app_drawer_settings&quot;>App drawer&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="13"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;close_app_drawer_on_app_open&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;hr&quot; (Croatian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;in&quot; (Indonesian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;iw&quot; (Hebrew), &quot;eu&quot; (Basque), &quot;nb&quot; (Norwegian Bokmål), &quot;ja&quot; (Japanese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;fi&quot; (Finnish), &quot;bg&quot; (Bulgarian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;sl&quot; (Slovenian), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;sr&quot; (Serbian), &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;gl&quot; (Galician), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;pa&quot; (Punjabi), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
<issue
id="MissingTranslation"
message="&quot;close_app_drawer_on_app_open&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;nb&quot; (Norwegian Bokmål), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bg&quot; (Bulgarian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;sl&quot; (Slovenian), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;sr&quot; (Serbian), &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;pa&quot; (Punjabi), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;close_app_drawer_on_app_open&quot;>Close app drawer on opening an app&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="15" column="13" />
<location
file="src/main/res/values/strings.xml"
line="14"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;home_screen_settings&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;hr&quot; (Croatian), &quot;lv&quot; (Latvian), &quot;hu&quot; (Hungarian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;in&quot; (Indonesian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;iw&quot; (Hebrew), &quot;eu&quot; (Basque), &quot;ar&quot; (Arabic), &quot;nb&quot; (Norwegian Bokmål), &quot;ja&quot; (Japanese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;fi&quot; (Finnish), &quot;bg&quot; (Bulgarian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;sl&quot; (Slovenian), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ca&quot; (Catalan), &quot;ltg&quot;, &quot;sr&quot; (Serbian), &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;gl&quot; (Galician), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;pa&quot; (Punjabi), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;home_screen_settings&quot;>Home screen&lt;/string>" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="16" column="13" />
<issue
id="MissingTranslation"
message="&quot;home_screen_settings&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;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ar&quot; (Arabic), &quot;nb&quot; (Norwegian Bokmål), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bg&quot; (Bulgarian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;sl&quot; (Slovenian), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;sr&quot; (Serbian), &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;pa&quot; (Punjabi), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;home_screen_settings&quot;>Home screen&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="15"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;widget_too_big&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;hr&quot; (Croatian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ml&quot; (Malayalam), &quot;in&quot; (Indonesian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;iw&quot; (Hebrew), &quot;eu&quot; (Basque), &quot;nb&quot; (Norwegian Bokmål), &quot;ja&quot; (Japanese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;fi&quot; (Finnish), &quot;bg&quot; (Bulgarian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;sl&quot; (Slovenian), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;sr&quot; (Serbian), &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;gl&quot; (Galician), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;pa&quot; (Punjabi), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
<issue
id="MissingTranslation"
message="&quot;widget_too_big&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;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;nb&quot; (Norwegian Bokmål), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bg&quot; (Bulgarian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;sl&quot; (Slovenian), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;sr&quot; (Serbian), &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;pa&quot; (Punjabi), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;widget_too_big&quot;>Widget is too big for current home screen size&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="17" column="13" />
<location
file="src/main/res/values/strings.xml"
line="16"
column="13"/>
</issue>
<issue id="NotifyDataSetChanged"
<issue
id="MissingTranslation"
message="&quot;double_tap_to_lock&quot; is not translated in &quot;fil&quot; (Filipino; Pilipino), &quot;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;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ar&quot; (Arabic), &quot;vi&quot; (Vietnamese), &quot;nb&quot; (Norwegian Bokmål), &quot;ja&quot; (Japanese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;ro&quot; (Romanian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bg&quot; (Bulgarian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;sk&quot; (Slovak), &quot;sl&quot; (Slovenian), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;sr&quot; (Serbian), &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;gl&quot; (Galician), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;pa&quot; (Punjabi), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;, &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;double_tap_to_lock&quot;>Double tap to lock screen&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="17"
column="13"/>
</issue>
<issue
id="MissingTranslation"
message="&quot;lock_device_admin_hint&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;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ar&quot; (Arabic), &quot;vi&quot; (Vietnamese), &quot;nb&quot; (Norwegian Bokmål), &quot;ja&quot; (Japanese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;ro&quot; (Romanian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bg&quot; (Bulgarian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;sk&quot; (Slovak), &quot;sl&quot; (Slovenian), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;sr&quot; (Serbian), &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;gl&quot; (Galician), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;pa&quot; (Punjabi), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;, &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;lock_device_admin_hint&quot;>To enable the double tap to lock screen feature, you need to grant admin permission. Note that the app cannot be uninstalled until this permission is removed.&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="18"
column="13"/>
</issue>
<issue
id="MissingTranslation"
message="&quot;lock_device_admin_warning&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;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;ar&quot; (Arabic), &quot;vi&quot; (Vietnamese), &quot;nb&quot; (Norwegian Bokmål), &quot;ja&quot; (Japanese), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;ro&quot; (Romanian), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bg&quot; (Bulgarian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;bs&quot; (Bosnian), &quot;si&quot; (Sinhala), &quot;sk&quot; (Slovak), &quot;sl&quot; (Slovenian), &quot;zgh&quot; (Standard Moroccan Tamazight), &quot;ltg&quot;, &quot;sr&quot; (Serbian), &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;gl&quot; (Galician), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;pa&quot; (Punjabi), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;, &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;lock_device_admin_warning&quot;>Deactivating admin permission will disable the double tap to lock screen feature.&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="19"
column="13"/>
</issue>
<issue
id="NotifyDataSetChanged"
message="It will always be more efficient to use more specific change events if you can. Rely on `notifyDataSetChanged` as a last resort."
errorLine1=" notifyDataSetChanged()" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/kotlin/org.fossify.home/adapters/FolderIconsAdapter.kt" line="107" column="9" />
errorLine1=" notifyDataSetChanged()"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/adapters/FolderIconsAdapter.kt"
line="107"
column="9"/>
</issue>
<issue id="NotifyDataSetChanged"
<issue
id="NotifyDataSetChanged"
message="It will always be more efficient to use more specific change events if you can. Rely on `notifyDataSetChanged` as a last resort."
errorLine1=" notifyDataSetChanged()" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/kotlin/org.fossify.home/adapters/LaunchersAdapter.kt" line="83" column="13" />
errorLine1=" notifyDataSetChanged()"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/adapters/WidgetsAdapter.kt"
line="120"
column="13"/>
</issue>
<issue id="NotifyDataSetChanged"
<issue
id="NotifyDataSetChanged"
message="It will always be more efficient to use more specific change events if you can. Rely on `notifyDataSetChanged` as a last resort."
errorLine1=" notifyDataSetChanged()" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/kotlin/org.fossify.home/adapters/LaunchersAdapter.kt" line="92" column="13" />
errorLine1=" notifyDataSetChanged()"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/adapters/WidgetsAdapter.kt"
line="127"
column="13"/>
</issue>
<issue id="NotifyDataSetChanged"
message="It will always be more efficient to use more specific change events if you can. Rely on `notifyDataSetChanged` as a last resort."
errorLine1=" notifyDataSetChanged()" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/kotlin/org.fossify.home/adapters/LaunchersAdapter.kt" line="99" column="13" />
</issue>
<issue id="NotifyDataSetChanged"
message="It will always be more efficient to use more specific change events if you can. Rely on `notifyDataSetChanged` as a last resort."
errorLine1=" notifyDataSetChanged()" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/kotlin/org.fossify.home/adapters/WidgetsAdapter.kt" line="120" column="13" />
</issue>
<issue id="NotifyDataSetChanged"
message="It will always be more efficient to use more specific change events if you can. Rely on `notifyDataSetChanged` as a last resort."
errorLine1=" notifyDataSetChanged()" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/kotlin/org.fossify.home/adapters/WidgetsAdapter.kt" line="127" column="13" />
</issue>
<issue id="ObsoleteSdkInt"
<issue
id="ObsoleteSdkInt"
message="This folder configuration (`v26`) is unnecessary; `minSdkVersion` is 26. Merge all the resources in this folder into `mipmap-anydpi`.">
<location file="src/main/res/mipmap-anydpi-v26" />
<location
file="src/main/res/mipmap-anydpi-v26"/>
</issue>
<issue id="VectorPath"
message="Very long vector path (937 characters), which is bad for performance. Considering reducing precision, removing minor details or rasterizing vector."
errorLine1=" &lt;path android:fillColor=&quot;#FFFFFFFF&quot; android:pathData=&quot;M16.952 32.327c-0.206 0-0.377-0.068-0.512-0.202-0.135-0.136-0.203-0.307-0.203-0.513v-8.838l-1.429 1.096c-0.159 0.127-0.334 0.175-0.524 0.143-0.191-0.032-0.349-0.127-0.476-0.286-0.127-0.159-0.175-0.334-0.143-0.524 0.032-0.191 0.127-0.349 0.286-0.476l2.287-1.739v-2.001c0-0.206 0.067-0.377 0.202-0.512s0.306-0.202 0.512-0.202c0.206 0 0.377 0.068 0.512 0.202 0.135 0.135 0.202 0.306 0.202 0.512v0.905l5.765-4.383c0.064-0.048 0.131-0.083 0.202-0.107 0.071-0.024 0.147-0.036 0.226-0.036 0.079 0 0.155 0.012 0.226 0.036 0.071 0.024 0.139 0.06 0.202 0.107l9.505 7.242c0.159 0.127 0.25 0.286 0.274 0.476 0.024 0.191-0.028 0.365-0.155 0.524-0.127 0.159-0.282 0.25-0.465 0.274-0.183 0.024-0.353-0.028-0.512-0.155l-1.453-1.096v8.838c0 0.206-0.068 0.377-0.202 0.512-0.135 0.135-0.306 0.202-0.512 0.202h-4.35a1 1 44.991 0 1-1-1l-0.001-2.941a1.001 1.001 45.025 0 0-1-1.001l-1.114-0.001a0.999 0.999 135.043 0 0-1 0.999l-0.001 2.944a1 1 135.009 0 1-1 1z&quot;/>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/drawable/ic_launcher_monochrome.xml" line="2" column="59" />
<issue
id="VectorPath"
message="Very long vector path (864 characters), which is bad for performance. Considering reducing precision, removing minor details or rasterizing vector."
errorLine1=" &lt;path android:fillColor=&quot;#ffffff&quot; android:pathData=&quot;M200.501 347.513q-9.168 0-15.694-6.526-6.527-6.527-6.527-15.694v-79.43l-22.22 16.938q-3.885 2.774-8.331 2.356-4.446-0.418-7.22-4.303t-2.223-8.331q0.551-4.446 4.446-7.22l99.703-76.37q3.059-2.223 6.526-3.334 3.467-1.111 7.077-1.111t7.077 1.111q3.467 1.111 6.526 3.334l30.828 23.608v-6.108q0-6.944 4.864-11.799 4.864-4.864 11.799-4.864 6.944 0 11.799 4.864 4.864 4.864 4.864 11.799v31.663l35.549 27.217q3.61 2.774 4.303 7.22 0.694 4.446-2.08 8.331t-7.22 4.303q-4.446 0.418-8.331-2.356l-22.22-16.938v79.43q0 9.168-6.526 15.694-6.517 6.517-15.675 6.517H300.49q-9.168 0-15.694-6.526-6.527-6.527-6.527-15.694v-22.22q0-9.168-6.526-15.694-6.527-6.527-15.694-6.527-9.168 0-15.694 6.526-6.527 6.526-6.527 15.694v22.22q0 9.168-6.526 15.694-6.527 6.527-15.694 6.527zm33.326-110.817h44.431q0-8.882-6.669-14.582-6.669-5.69-15.552-5.69-8.882 0-15.552 5.69-6.669 5.69-6.669 14.582z&quot;/>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/drawable/ic_launcher_foreground.xml"
line="2"
column="57"/>
</issue>
<issue id="Overdraw"
<issue
id="VectorPath"
message="Very long vector path (864 characters), which is bad for performance. Considering reducing precision, removing minor details or rasterizing vector."
errorLine1=" &lt;path android:pathData=&quot;M200.501 347.513q-9.168 0-15.694-6.526-6.527-6.527-6.527-15.694v-79.43l-22.22 16.938q-3.885 2.774-8.331 2.356-4.446-0.418-7.22-4.303t-2.223-8.331q0.551-4.446 4.446-7.22l99.703-76.37q3.059-2.223 6.526-3.334 3.467-1.111 7.077-1.111t7.077 1.111q3.467 1.111 6.526 3.334l30.828 23.608v-6.108q0-6.944 4.864-11.799 4.864-4.864 11.799-4.864 6.944 0 11.799 4.864 4.864 4.864 4.864 11.799v31.663l35.549 27.217q3.61 2.774 4.303 7.22 0.694 4.446-2.08 8.331t-7.22 4.303q-4.446 0.418-8.331-2.356l-22.22-16.938v79.43q0 9.168-6.526 15.694-6.517 6.517-15.675 6.517H300.49q-9.168 0-15.694-6.526-6.527-6.527-6.527-15.694v-22.22q0-9.168-6.526-15.694-6.527-6.527-15.694-6.527-9.168 0-15.694 6.526-6.527 6.526-6.527 15.694v22.22q0 9.168-6.526 15.694-6.527 6.527-15.694 6.527zm33.326-110.817h44.431q0-8.882-6.669-14.582-6.669-5.69-15.552-5.69-8.882 0-15.552 5.69-6.669 5.69-6.669 14.582z&quot; android:fillColor=&quot;#ffffff&quot;/>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/drawable/ic_launcher_monochrome.xml"
line="2"
column="29"/>
</issue>
<issue
id="Overdraw"
message="Possible overdraw: Root element paints background `?attr/selectableItemBackground` with a theme that also paints a background (inferred theme is `@style/AppTheme`)"
errorLine1=" android:background=&quot;?attr/selectableItemBackground&quot;" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/layout/item_hidden_icon.xml" line="6" column="5" />
errorLine1=" android:background=&quot;?attr/selectableItemBackground&quot;"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/layout/item_hidden_icon.xml"
line="6"
column="5"/>
</issue>
<issue id="Overdraw"
message="Possible overdraw: Root element paints background `?attr/selectableItemBackground` with a theme that also paints a background (inferred theme is `@style/AppTheme`)"
errorLine1=" android:background=&quot;?attr/selectableItemBackground&quot;" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/layout/item_launcher_label.xml" line="6" column="5" />
<issue
id="UnusedResources"
message="The resource `R.layout.dialog_folder_icons` appears to be unused"
errorLine1="&lt;FrameLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;"
errorLine2="^">
<location
file="src/main/res/layout/dialog_folder_icons.xml"
line="2"
column="1"/>
</issue>
<issue id="UnusedResources" message="The resource `R.layout.dialog_folder_icons` appears to be unused"
errorLine1="&lt;FrameLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;" errorLine2="^">
<location file="src/main/res/layout/dialog_folder_icons.xml" line="2" column="1" />
</issue>
<issue id="UnusedResources" message="The resource `R.dimen.icon_long_press_anchor_offset_y` appears to be unused"
<issue
id="UnusedResources"
message="The resource `R.dimen.icon_long_press_anchor_offset_y` appears to be unused"
errorLine1=" &lt;dimen name=&quot;icon_long_press_anchor_offset_y&quot;>150dp&lt;/dimen>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/dimens.xml" line="3" column="12" />
<location
file="src/main/res/values/dimens.xml"
line="3"
column="12"/>
</issue>
<issue id="UnusedResources" message="The resource `R.dimen.min_folder_view_height` appears to be unused"
errorLine1=" &lt;dimen name=&quot;min_folder_view_height&quot;>200dp&lt;/dimen>" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/dimens.xml" line="12" column="12" />
<issue
id="UnusedResources"
message="The resource `R.dimen.min_folder_view_height` appears to be unused"
errorLine1=" &lt;dimen name=&quot;min_folder_view_height&quot;>200dp&lt;/dimen>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/dimens.xml"
line="12"
column="12"/>
</issue>
<issue id="UnusedResources" message="The resource `R.dimen.max_folder_view_height` appears to be unused"
errorLine1=" &lt;dimen name=&quot;max_folder_view_height&quot;>500dp&lt;/dimen>" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/dimens.xml" line="13" column="12" />
<issue
id="UnusedResources"
message="The resource `R.dimen.max_folder_view_height` appears to be unused"
errorLine1=" &lt;dimen name=&quot;max_folder_view_height&quot;>500dp&lt;/dimen>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/dimens.xml"
line="13"
column="12"/>
</issue>
<issue id="UnusedResources" message="The resource `R.string.hide_icon` appears to be unused"
errorLine1=" &lt;string name=&quot;hide_icon&quot;>Hide icon&lt;/string>" errorLine2=" ~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="9" column="13" />
<issue
id="UnusedResources"
message="The resource `R.color.ic_launcher_amber_background` appears to be unused"
errorLine1=" &lt;color name=&quot;ic_launcher_amber_background&quot;>#106D20&lt;/color>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/ic_launcher_amber_background.xml"
line="3"
column="12"/>
</issue>
<issue id="UnusedResources" message="The resource `R.string.add_hidden_icons` appears to be unused"
errorLine1=" &lt;string name=&quot;add_hidden_icons&quot;>Add hidden icons&lt;/string>" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/values/strings.xml" line="10" column="13" />
<issue
id="UnusedResources"
message="The resource `R.color.ic_launcher_blue_background` appears to be unused"
errorLine1=" &lt;color name=&quot;ic_launcher_blue_background&quot;>#106D20&lt;/color>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/ic_launcher_blue_background.xml"
line="3"
column="12"/>
</issue>
<issue id="AlwaysShowAction" message="Prefer &quot;`ifRoom`&quot; instead of &quot;`always`&quot;"
errorLine1=" app:showAsAction=&quot;always&quot; />" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/menu/menu_app_icon.xml" line="9" column="13" />
<location file="src/main/res/menu/menu_app_icon.xml" line="14" column="13" />
<location file="src/main/res/menu/menu_app_icon.xml" line="19" column="13" />
<location file="src/main/res/menu/menu_app_icon.xml" line="24" column="13" />
<location file="src/main/res/menu/menu_app_icon.xml" line="29" column="13" />
<location file="src/main/res/menu/menu_app_icon.xml" line="34" column="13" />
<issue
id="UnusedResources"
message="The resource `R.string.hide_icon` appears to be unused"
errorLine1=" &lt;string name=&quot;hide_icon&quot;>Hide icon&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="8"
column="13"/>
</issue>
<issue id="AlwaysShowAction" message="Prefer &quot;`ifRoom`&quot; instead of &quot;`always`&quot;"
errorLine1=" app:showAsAction=&quot;always&quot; />" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/menu/menu_home_screen.xml" line="7" column="9" />
<location file="src/main/res/menu/menu_home_screen.xml" line="11" column="9" />
<issue
id="UnusedResources"
message="The resource `R.string.add_hidden_icons` appears to be unused"
errorLine1=" &lt;string name=&quot;add_hidden_icons&quot;>Add hidden icons&lt;/string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/values/strings.xml"
line="9"
column="13"/>
</issue>
<issue id="ClickableViewAccessibility" message="Custom view `MyAppWidgetHostView` overrides `onTouchEvent` but not `performClick`"
errorLine1=" override fun onTouchEvent(event: MotionEvent?): Boolean {" errorLine2=" ~~~~~~~~~~~~">
<location file="src/main/kotlin/org.fossify.home/views/MyAppWidgetHostView.kt" line="23" column="18" />
<issue
id="UseKtx"
message="Use the KTX extension function `SharedPreferences.edit` instead?"
errorLine1=" set(wasHomeScreenInit) = prefs.edit().putBoolean(WAS_HOME_SCREEN_INIT, wasHomeScreenInit).apply()"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/helpers/Config.kt"
line="14"
column="34"/>
</issue>
<issue id="ClickableViewAccessibility" message="Custom view `MyAppWidgetResizeFrame` overrides `onTouchEvent` but not `performClick`"
errorLine1=" override fun onTouchEvent(event: MotionEvent?): Boolean {" errorLine2=" ~~~~~~~~~~~~">
<location file="src/main/kotlin/org.fossify.home/views/MyAppWidgetResizeFrame.kt" line="105" column="18" />
<issue
id="UseKtx"
message="Use the KTX extension function `SharedPreferences.edit` instead?"
errorLine1=" set(homeColumnCount) = prefs.edit().putInt(HOME_COLUMN_COUNT, homeColumnCount).apply()"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/helpers/Config.kt"
line="18"
column="32"/>
</issue>
<issue id="ContentDescription" message="Missing `contentDescription` attribute on image" errorLine1=" &lt;ImageView" errorLine2=" ~~~~~~~~~">
<location file="src/main/res/layout/item_widget_preview.xml" line="9" column="6" />
<issue
id="UseKtx"
message="Use the KTX extension function `SharedPreferences.edit` instead?"
errorLine1=" set(homeRowCount) = prefs.edit().putInt(HOME_ROW_COUNT, homeRowCount).apply()"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/helpers/Config.kt"
line="22"
column="29"/>
</issue>
<issue id="RtlSymmetry" message="When you define `paddingStart` you should probably also define `paddingEnd` for right-to-left symmetry"
errorLine1=" android:paddingStart=&quot;@dimen/medium_margin&quot;" errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
<location file="src/main/res/layout/item_widget_list_section.xml" line="27" column="9" />
<issue
id="UseKtx"
message="Use the KTX extension function `SharedPreferences.edit` instead?"
errorLine1=" set(drawerColumnCount) = prefs.edit().putInt(DRAWER_COLUMN_COUNT, drawerColumnCount).apply()"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/helpers/Config.kt"
line="26"
column="34"/>
</issue>
<issue
id="UseKtx"
message="Use the KTX extension function `SharedPreferences.edit` instead?"
errorLine1=" set(showSearchBar) = prefs.edit().putBoolean(SHOW_SEARCH_BAR, showSearchBar).apply()"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/helpers/Config.kt"
line="30"
column="30"/>
</issue>
<issue
id="UseKtx"
message="Use the KTX extension function `SharedPreferences.edit` instead?"
errorLine1=" set(closeAppDrawer) = prefs.edit().putBoolean(CLOSE_APP_DRAWER, closeAppDrawer).apply()"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/helpers/Config.kt"
line="34"
column="31"/>
</issue>
<issue
id="UseKtx"
message="Use the KTX extension function `Int.toDrawable` instead?"
errorLine1=" background = ColorDrawable(Color.TRANSPARENT)"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/views/MyAppWidgetResizeFrame.kt"
line="48"
column="22"/>
</issue>
<issue
id="UseKtx"
message="Use the KTX extension function `Int.toDrawable` instead?"
errorLine1=" background = ColorDrawable(Color.TRANSPARENT)"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/views/MyAppWidgetResizeFrame.kt"
line="48"
column="22"/>
</issue>
<issue
id="UseKtx"
message="Use the KTX extension function `Int.toDrawable` instead?"
errorLine1=" background = ColorDrawable(backgroundColor)"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/extensions/View.kt"
line="31"
column="18"/>
</issue>
<issue
id="UseKtx"
message="Use the KTX extension function `Int.toDrawable` instead?"
errorLine1=" background = ColorDrawable(backgroundColor)"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/extensions/View.kt"
line="31"
column="18"/>
</issue>
<issue
id="ClickableViewAccessibility"
message="Custom view `MyAppWidgetHostView` overrides `onTouchEvent` but not `performClick`"
errorLine1=" override fun onTouchEvent(event: MotionEvent?): Boolean {"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/views/MyAppWidgetHostView.kt"
line="23"
column="18"/>
</issue>
<issue
id="ClickableViewAccessibility"
message="Custom view `MyAppWidgetResizeFrame` overrides `onTouchEvent` but not `performClick`"
errorLine1=" override fun onTouchEvent(event: MotionEvent?): Boolean {"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/views/MyAppWidgetResizeFrame.kt"
line="105"
column="18"/>
</issue>
<issue
id="ContentDescription"
message="Missing `contentDescription` attribute on image"
errorLine1=" &lt;ImageView"
errorLine2=" ~~~~~~~~~">
<location
file="src/main/res/layout/item_widget_preview.xml"
line="9"
column="6"/>
</issue>
<issue
id="SetTextI18n"
message="Number formatting does not take into account locale settings. Consider using `String.format` instead."
errorLine1=" binding.settingsDrawerColumnCount.text = currentColumnCount.toString()"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/activities/SettingsActivity.kt"
line="165"
column="50"/>
</issue>
<issue
id="SetTextI18n"
message="Number formatting does not take into account locale settings. Consider using `String.format` instead."
errorLine1=" binding.settingsHomeScreenRowCount.text = currentRowCount.toString()"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/activities/SettingsActivity.kt"
line="200"
column="51"/>
</issue>
<issue
id="SetTextI18n"
message="Number formatting does not take into account locale settings. Consider using `String.format` instead."
errorLine1=" binding.settingsHomeScreenColumnCount.text = currentColumnCount.toString()"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/kotlin/org/fossify/home/activities/SettingsActivity.kt"
line="226"
column="54"/>
</issue>
<issue
id="RtlSymmetry"
message="When you define `paddingStart` you should probably also define `paddingEnd` for right-to-left symmetry"
errorLine1=" android:paddingStart=&quot;@dimen/medium_margin&quot;"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/layout/item_widget_list_section.xml"
line="27"
column="9"/>
</issue>
</issues>

View File

@@ -28,7 +28,6 @@
android:appCategory="productivity"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_launcher_name"
android:localeConfig="@xml/locale_config"
android:roundIcon="@mipmap/ic_launcher"
android:supportsRtl="true"
android:theme="@style/AppTheme">

View File

@@ -2,7 +2,6 @@ package org.fossify.home.activities
import android.animation.ObjectAnimator
import android.annotation.SuppressLint
import android.app.Activity
import android.app.admin.DevicePolicyManager
import android.app.role.RoleManager
import android.appwidget.AppWidgetHost
@@ -10,7 +9,6 @@ import android.appwidget.AppWidgetManager
import android.appwidget.AppWidgetProviderInfo
import android.content.ActivityNotFoundException
import android.content.ComponentName
import android.content.Context
import android.content.Intent
import android.content.pm.ActivityInfo
import android.content.pm.LauncherApps
@@ -20,7 +18,6 @@ import android.graphics.Bitmap
import android.graphics.Color
import android.graphics.Rect
import android.graphics.drawable.Drawable
import android.net.Uri
import android.os.Bundle
import android.os.Handler
import android.os.Looper
@@ -97,6 +94,7 @@ import org.fossify.home.receivers.LockDeviceAdminReceiver
import kotlin.math.abs
import kotlin.math.max
import kotlin.math.min
import androidx.core.net.toUri
class MainActivity : SimpleActivity(), FlingListener {
private var mTouchDownX = -1
@@ -222,7 +220,7 @@ class MainActivity : SimpleActivity(), FlingListener {
if (!showIcon) {
try {
launchersDB.deleteById(it.id!!)
} catch (ignored: Exception) {
} catch (_: Exception) {
}
}
showIcon
@@ -248,7 +246,11 @@ class MainActivity : SimpleActivity(), FlingListener {
override fun onStop() {
super.onStop()
binding.homeScreenGrid.root.appWidgetHost.stopListening()
try {
binding.homeScreenGrid.root.appWidgetHost.stopListening()
} catch (_: Exception) {
}
wasJustPaused = false
}
@@ -283,19 +285,20 @@ class MainActivity : SimpleActivity(), FlingListener {
}
}
REQUEST_ALLOW_BINDING_WIDGET -> mActionOnCanBindWidget?.invoke(resultCode == Activity.RESULT_OK)
REQUEST_CONFIGURE_WIDGET -> mActionOnWidgetConfiguredWidget?.invoke(resultCode == Activity.RESULT_OK)
REQUEST_ALLOW_BINDING_WIDGET -> mActionOnCanBindWidget?.invoke(resultCode == RESULT_OK)
REQUEST_CONFIGURE_WIDGET -> mActionOnWidgetConfiguredWidget?.invoke(resultCode == RESULT_OK)
REQUEST_CREATE_SHORTCUT -> {
if (resultCode == Activity.RESULT_OK && resultData != null) {
if (resultCode == RESULT_OK && resultData != null) {
val launcherApps =
applicationContext.getSystemService(Context.LAUNCHER_APPS_SERVICE) as LauncherApps
applicationContext.getSystemService(LAUNCHER_APPS_SERVICE) as LauncherApps
if (launcherApps.hasShortcutHostPermission()) {
val item = launcherApps.getPinItemRequest(resultData)
val shortcutInfo = item?.shortcutInfo ?: return
if (item.accept()) {
val shortcutId = item.shortcutInfo?.id!!
val label = item.shortcutInfo.getLabel()
val shortcutId = shortcutInfo.id
val label = shortcutInfo.getLabel()
val icon = launcherApps.getShortcutBadgedIconDrawable(
item.shortcutInfo!!,
shortcutInfo,
resources.displayMetrics.densityDpi
)
mActionOnAddShortcut?.invoke(shortcutId, label, icon)
@@ -324,7 +327,7 @@ class MainActivity : SimpleActivity(), FlingListener {
try {
mDetector.onTouchEvent(event)
} catch (ignored: Exception) {
} catch (_: Exception) {
}
when (event.actionMasked) {
@@ -436,17 +439,15 @@ class MainActivity : SimpleActivity(), FlingListener {
private fun handleIntentAction(intent: Intent) {
if (intent.action == LauncherApps.ACTION_CONFIRM_PIN_SHORTCUT) {
val launcherApps =
applicationContext.getSystemService(Context.LAUNCHER_APPS_SERVICE) as LauncherApps
applicationContext.getSystemService(LAUNCHER_APPS_SERVICE) as LauncherApps
val item = launcherApps.getPinItemRequest(intent)
if (item.shortcutInfo == null) {
return
}
val shortcutInfo = item?.shortcutInfo ?: return
ensureBackgroundThread {
val shortcutId = item.shortcutInfo?.id!!
val label = item.shortcutInfo.getLabel()
val shortcutId = shortcutInfo.id
val label = shortcutInfo.getLabel()
val icon = launcherApps.getShortcutBadgedIconDrawable(
item.shortcutInfo!!,
shortcutInfo,
resources.displayMetrics.densityDpi
)
val (page, rect) = findFirstEmptyCell()
@@ -457,7 +458,7 @@ class MainActivity : SimpleActivity(), FlingListener {
right = rect.right,
bottom = rect.bottom,
page = page,
packageName = item.shortcutInfo!!.`package`,
packageName = shortcutInfo.`package`,
activityName = "",
title = label,
type = ITEM_TYPE_SHORTCUT,
@@ -479,7 +480,7 @@ class MainActivity : SimpleActivity(), FlingListener {
try {
item.accept()
binding.homeScreenGrid.root.storeAndShowGridItem(gridItem)
} catch (ignored: IllegalStateException) {
} catch (_: IllegalStateException) {
}
}
}
@@ -573,6 +574,8 @@ class MainActivity : SimpleActivity(), FlingListener {
window.navigationBarColor = resources.getColor(R.color.semitransparent_navigation)
binding.homeScreenGrid.root.fragmentExpanded()
binding.homeScreenGrid.root.hideResizeLines()
@SuppressLint("AccessibilityFocus")
fragment.root.performAccessibilityAction(
AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS,
null
@@ -641,7 +644,7 @@ class MainActivity : SimpleActivity(), FlingListener {
}
val devicePolicyManager =
getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager
getSystemService(DEVICE_POLICY_SERVICE) as DevicePolicyManager
val isLockDeviceAdminActive = devicePolicyManager.isAdminActive(
ComponentName(this, LockDeviceAdminReceiver::class.java)
)
@@ -694,7 +697,7 @@ class MainActivity : SimpleActivity(), FlingListener {
val userHandle = android.os.Process.myUserHandle()
val shortcutBounds = binding.homeScreenGrid.root.getClickableRect(clickedGridItem)
val launcherApps =
applicationContext.getSystemService(Context.LAUNCHER_APPS_SERVICE) as LauncherApps
applicationContext.getSystemService(LAUNCHER_APPS_SERVICE) as LauncherApps
launcherApps.startShortcut(packageName, id, shortcutBounds, null, userHandle)
}
}
@@ -718,7 +721,7 @@ class MainActivity : SimpleActivity(), FlingListener {
x: Float,
y: Float,
gridItem: HomeScreenGridItem,
isOnAllAppsFragment: Boolean
isOnAllAppsFragment: Boolean,
) {
binding.homeScreenGrid.root.hideResizeLines()
mLongPressedIcon = gridItem
@@ -813,7 +816,7 @@ class MainActivity : SimpleActivity(), FlingListener {
Intent(Intent.ACTION_SET_WALLPAPER).apply {
startActivity(this)
}
} catch (e: ActivityNotFoundException) {
} catch (_: ActivityNotFoundException) {
toast(org.fossify.commons.R.string.no_app_found)
} catch (e: Exception) {
showErrorToast(e)
@@ -883,7 +886,7 @@ class MainActivity : SimpleActivity(), FlingListener {
}
private class MyGestureListener(
private val flingListener: FlingListener
private val flingListener: FlingListener,
) : GestureDetector.SimpleOnGestureListener() {
override fun onSingleTapUp(event: MotionEvent): Boolean {
(flingListener as MainActivity).homeScreenClicked(event.x, event.y)
@@ -899,7 +902,7 @@ class MainActivity : SimpleActivity(), FlingListener {
event1: MotionEvent?,
event2: MotionEvent,
velocityX: Float,
velocityY: Float
velocityY: Float,
): Boolean {
// ignore fling events just after releasing an icon from dragging
if (System.currentTimeMillis() - mLastUpEvent < 500L) {
@@ -955,7 +958,7 @@ class MainActivity : SimpleActivity(), FlingListener {
Class.forName("android.app.StatusBarManager")
.getMethod("expandNotificationsPanel")
.invoke(getSystemService("statusbar"))
} catch (e: Exception) {
} catch (_: Exception) {
}
}
}
@@ -1004,9 +1007,16 @@ class MainActivity : SimpleActivity(), FlingListener {
}
val label = info.loadLabel(packageManager).toString()
val drawable =
info.loadIcon(packageManager) ?: getDrawableForPackageName(packageName) ?: continue
val placeholderColor = calculateAverageColor(drawable.toBitmap())
val drawable = info.loadIcon(packageManager)
?: getDrawableForPackageName(packageName)
?: continue
val bitmap = drawable.toBitmap(
width = max(drawable.intrinsicWidth, 1),
height = max(drawable.intrinsicHeight, 1),
config = Bitmap.Config.ARGB_8888
)
val placeholderColor = calculateAverageColor(bitmap)
allApps.add(
AppLauncher(
id = null,
@@ -1015,7 +1025,7 @@ class MainActivity : SimpleActivity(), FlingListener {
activityName = activityName,
order = 0,
thumbnailColor = placeholderColor,
drawable = drawable.toBitmap().toDrawable(resources)
drawable = bitmap.toDrawable(resources)
)
)
}
@@ -1028,7 +1038,7 @@ class MainActivity : SimpleActivity(), FlingListener {
val homeScreenGridItems = ArrayList<HomeScreenGridItem>()
try {
val defaultDialerPackage =
(getSystemService(Context.TELECOM_SERVICE) as TelecomManager).defaultDialerPackage
(getSystemService(TELECOM_SERVICE) as TelecomManager).defaultDialerPackage
appLaunchers.firstOrNull { it.packageName == defaultDialerPackage }?.apply {
val dialerIcon =
HomeScreenGridItem(
@@ -1051,7 +1061,7 @@ class MainActivity : SimpleActivity(), FlingListener {
)
homeScreenGridItems.add(dialerIcon)
}
} catch (e: Exception) {
} catch (_: Exception) {
}
try {
@@ -1078,11 +1088,11 @@ class MainActivity : SimpleActivity(), FlingListener {
)
homeScreenGridItems.add(messengerIcon)
}
} catch (e: Exception) {
} catch (_: Exception) {
}
try {
val browserIntent = Intent("android.intent.action.VIEW", Uri.parse("http://"))
val browserIntent = Intent(Intent.ACTION_VIEW, "http://".toUri())
val resolveInfo =
packageManager.resolveActivity(browserIntent, PackageManager.MATCH_DEFAULT_ONLY)
val defaultBrowserPackage = resolveInfo!!.activityInfo.packageName
@@ -1108,7 +1118,7 @@ class MainActivity : SimpleActivity(), FlingListener {
)
homeScreenGridItems.add(browserIcon)
}
} catch (e: Exception) {
} catch (_: Exception) {
}
try {
@@ -1141,7 +1151,7 @@ class MainActivity : SimpleActivity(), FlingListener {
homeScreenGridItems.add(storeIcon)
}
}
} catch (e: Exception) {
} catch (_: Exception) {
}
try {
@@ -1171,7 +1181,7 @@ class MainActivity : SimpleActivity(), FlingListener {
)
homeScreenGridItems.add(cameraIcon)
}
} catch (e: Exception) {
} catch (_: Exception) {
}
homeScreenGridItemsDB.insertAll(homeScreenGridItems)
@@ -1181,7 +1191,7 @@ class MainActivity : SimpleActivity(), FlingListener {
appWidgetManager: AppWidgetManager,
appWidgetId: Int,
appWidgetInfo: AppWidgetProviderInfo,
callback: (canBind: Boolean) -> Unit
callback: (canBind: Boolean) -> Unit,
) {
mActionOnCanBindWidget = null
val canCreateWidget =
@@ -1201,7 +1211,7 @@ class MainActivity : SimpleActivity(), FlingListener {
fun handleWidgetConfigureScreen(
appWidgetHost: AppWidgetHost,
appWidgetId: Int,
callback: (canBind: Boolean) -> Unit
callback: (canBind: Boolean) -> Unit,
) {
mActionOnWidgetConfiguredWidget = callback
appWidgetHost.startAppWidgetConfigureActivityForResult(
@@ -1215,7 +1225,7 @@ class MainActivity : SimpleActivity(), FlingListener {
fun handleShorcutCreation(
activityInfo: ActivityInfo,
callback: (shortcutId: String, label: String, icon: Drawable) -> Unit
callback: (shortcutId: String, label: String, icon: Drawable) -> Unit,
) {
mActionOnAddShortcut = callback
val componentName = ComponentName(activityInfo.packageName, activityInfo.name)

View File

File diff suppressed because it is too large Load Diff

View File

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

View File

@@ -2,7 +2,7 @@
<resources>
<string name="app_launcher_name">משגר</string>
<string name="launcher_settings">הגדרות משגר</string>
<string name="app_info">מידע על האפליקציה</string>
<string name="app_info">פרטי אפליקציה</string>
<string name="touch_hold_widget">לחיצה ארוכה על הווידג\'ט וגרירה שלו במסך הראשי</string>
<string name="uninstall">הסרה</string>
<string name="hide_icon">הסתר אייקון</string>

View File

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

View File

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

View File

@@ -0,0 +1,8 @@
Changed:
• Updated translations
Fixed:
• Addressed frequently occurring crashes

View File

@@ -0,0 +1,4 @@
Fixed:
• Addressed crash on startup due to widgets

View File

@@ -1,17 +1,17 @@
Le Lanceur Fossify est votre passerelle vers une expérience d'écran d'accueil rapide, personnalisée et respectueuse de la vie privée. Pas de publicités, pas de surabondance, juste un lanceur fluide et efficace conçu pour s'adapter à votre style et à vos préférences uniques.<br><br>
Fossify Launcher est votre passerelle vers une expérience d'écran d'accueil rapide, personnalisée et respectueuse de la vie privée. Pas de publicités, pas de surabondance, juste un lanceur fluide et efficace conçu pour s'adapter à votre style et à vos préférences uniques.<br><br>
<b>🚀 NAVIGATION ULTRA-RAPIDE :</b><br>
Naviguez sur votre appareil avec rapidité et précision. Le Lanceur Fossify est optimisé pour être réactif et fluide, vous donnant un accès instantané à vos applications préférées sans décalage.<br><br>
Naviguez sur votre appareil avec rapidité et précision. Fossify Launcher est optimisé pour être réactif et fluide, vous donnant un accès instantané à vos applications préférées sans décalage.<br><br>
<b>🎨 PERSONNALISATION COMPLÈTE :</b><br>
Personnalisez votre écran d'accueil avec des thèmes dynamiques, des couleurs personnalisées et des mises en page. Personnalisez votre lanceur en fonction de votre style avec des outils faciles à utiliser qui vous permettent de créer une configuration vraiment unique.<br><br>
<b>🖼️ PRISE EN CHARGE COMPLÈTE DES WIDGETS :</b><br>
Intégrez facilement des widgets entièrement redimensionnables. Que vous ayez besoin d'horloges, de calendriers ou d'autres outils pratiques, le Lanceur Fossify veille à ce qu'ils s'intègrent parfaitement dans la conception de votre écran d'accueil.<br><br>
Intégrez facilement des widgets entièrement redimensionnables. Que vous ayez besoin d'horloges, de calendriers ou d'autres outils pratiques, Fossify Launcher veille à ce qu'ils s'intègrent parfaitement dans la conception de votre écran d'accueil.<br><br>
<b>📱 PAS D'ENCOMBREMENT INDÉSIRABLE :</b><br>
Gérez facilement vos applications en les masquant ou en les désinstallant en quelques clics, pour garder votre écran d'accueil organisé et sans encombrement.<br><br>
<b>🔒 CONFIDENTIALITÉ ET SÉCURITÉ :</b><br>
Votre vie privée est au cœur du Lanceur Fossify. Sans accès à Internet et sans autorisations intrusives, vos données restent avec vous. Pas de suivi, pas de publicités : juste un lanceur conçu pour respecter votre vie privée.<br><br>
Votre vie privée est au cœur de Fossify Launcher. Sans accès à Internet et sans autorisations intrusives, vos données restent avec vous. Pas de suivi, pas de publicités : juste un lanceur conçu pour respecter votre vie privée.<br><br>
<b>🌐 ASSURANCE OPEN SOURCE :</b><br>
Le Lanceur Fossify est construit sur une base open source, vous permettant de consulter notre code sur GitHub, favorisant la confiance et une communauté engagée en faveur de la confidentialité.<br><br>
Trouvez votre équilibre entre vitesse, personnalisation et confidentialité avec le Lanceur Fossify.<br><br>
Fossify Launcher est construit sur une base open source, qui vous permet de consulter notre code sur GitHub, favorisant la confiance et une communauté engagée en faveur de la confidentialité.<br><br>
Trouvez votre équilibre entre vitesse, personnalisation et confidentialité avec Fossify Launcher.<br><br>
Découvrez d'autres applications Fossify : https://www.fossify.org<br>
Code open source : https://www.github.com/FossifyOrg<br>
Rejoignez la communauté sur Reddit : https://www.reddit.com/r/Fossify<br>

View File

@@ -5,6 +5,6 @@ android.nonTransitiveRClass=true
org.gradle.jvmargs=-Xmx4096M
# Versioning
VERSION_NAME=1.1.2
VERSION_CODE=5
VERSION_NAME=1.1.4
VERSION_CODE=7
APP_ID=org.fossify.home

View File

@@ -1,14 +1,14 @@
[versions]
#jetbrains
kotlin = "2.1.21"
kotlin = "2.2.0"
#KSP
ksp = "2.1.21-2.0.1"
ksp = "2.1.21-2.0.2"
#Detekt
detekt = "1.23.8"
#Room
room = "2.7.1"
room = "2.7.2"
#Fossify
commons = "2.0.1"
commons = "4.0.0"
#Gradle
gradlePlugins-agp = "8.10.1"
#build

34
lint.xml Normal file
View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<lint>
<!-- Fatal -->
<issue id="ExportedReceiver" severity="error" />
<issue id="ExportedService" severity="error" />
<issue id="ExportedContentProvider" severity="error" />
<issue id="MissingPermission" severity="error" />
<issue id="NotificationPermission" severity="error" />
<issue id="UnsafeOptInUsageError" severity="error" />
<issue id="StringFormatMatches" severity="error" />
<issue id="StringFormatInvalid" severity="error" />
<issue id="StringFormatCount" severity="error" />
<issue id="Range" severity="error" />
<issue id="CheckResult" severity="error" />
<issue id="WrongThread" severity="error" />
<issue id="Recycle" severity="error" />
<issue id="StaticFieldLeak" severity="error" />
<issue id="UseRequireInsteadOfGet" severity="error" />
<issue id="ClickableViewAccessibility" severity="error" />
<issue id="RtlSymmetry" severity="warning" />
<issue id="SetTextI18n" severity="warning" />
<!-- Warnings -->
<issue id="AllowBackup" severity="warning" />
<issue id="MissingTranslation" severity="warning" />
<issue id="UnusedResources" severity="warning" />
<issue id="UnusedQuantity" severity="warning" />
<issue id="MissingQuantity" severity="warning" />
<issue id="ContentDescription" severity="warning" />
<issue id="VectorPath" severity="warning" />
<issue id="IconDensities" severity="warning" />
<issue id="GradleDependency" severity="warning" />
<issue id="Overdraw" severity="warning" />
</lint>