21 Commits
1.1.3 ... 1.2.0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Bumps com.android.application from 8.10.1 to 8.11.0.

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

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

* chore(deps): update gradle wrapper

---------

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

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

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

Extra translations are removed automatically by Weblate

* chore: update detekt rules

More compose-friendly

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

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

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

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

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

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

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

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

* fix(i18n): generate locale config automatically

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

---------

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

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

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

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

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-23 17:04:46 +05:30
29 changed files with 960 additions and 669 deletions

View File

@@ -1,2 +1,2 @@
# Auto-generated file. DO NOT EDIT.
1.1.3
1.2.0

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

1
.gitignore vendored
View File

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

View File

@@ -1,5 +1,4 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
@@ -7,72 +6,58 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
## [1.1.3] - 2025-06-19
## [1.2.0] - 2025-07-15
### Added
- Option to show keyboard automatically in app drawer ([#106])
### Changed
- Updated translations
## [1.1.4] - 2025-06-28
### Fixed
- Addressed crash on startup due to widgets ([#182])
## [1.1.3] - 2025-06-19
### Changed
- Updated translations
### Fixed
- Addressed frequently occurring crashes ([#6])
## [1.1.2] - 2025-06-06
### Changed
- Updated translations
### Fixed
- Clicking home screen app labels now works as expected ([#115])
- Clicking home screen app labels now works as expected ([#115])
## [1.1.1] - 2025-05-14
### Changed
- Updated translations
### Removed
- Removed redundant launcher settings icon from the app drawer ([#51])
## [1.1.0] - 2025-03-19
### Added
- Added double tap to lock screen feature ([#63])
### Changed
- Added more translations
## [1.0.1] - 2025-01-01
### Changed
- Other minor bug fixes and improvements
- Added more translations
### Fixed
- Fixed scrolling performance issues ([#65])
- Fixed various issues related to widgets ([#5], [#44], [#74])
## [1.0.0] - 2024-10-16
### Added
- Initial release
[Unreleased]: https://github.com/FossifyOrg/Launcher/compare/1.1.3...HEAD
[1.1.3]: https://github.com/FossifyOrg/Launcher/compare/1.1.2...1.1.3
[1.1.2]: https://github.com/FossifyOrg/Launcher/compare/1.1.1...1.1.2
[1.1.1]: https://github.com/FossifyOrg/Launcher/compare/1.1.0...1.1.1
[1.1.0]: https://github.com/FossifyOrg/Launcher/compare/1.0.1...1.1.0
[1.0.1]: https://github.com/FossifyOrg/Launcher/compare/1.0.0...1.0.1
[1.0.0]: https://github.com/FossifyOrg/Launcher/releases/tag/1.0.0
[#5]: https://github.com/FossifyOrg/Launcher/issues/5
[#6]: https://github.com/FossifyOrg/Launcher/issues/6
[#44]: https://github.com/FossifyOrg/Launcher/issues/44
@@ -80,4 +65,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
[#63]: https://github.com/FossifyOrg/Launcher/issues/63
[#65]: https://github.com/FossifyOrg/Launcher/issues/65
[#74]: https://github.com/FossifyOrg/Launcher/issues/74
[#106]: https://github.com/FossifyOrg/Launcher/issues/106
[#115]: https://github.com/FossifyOrg/Launcher/issues/115
[#182]: https://github.com/FossifyOrg/Launcher/issues/182
[Unreleased]: https://github.com/FossifyOrg/Launcher/compare/1.2.0...HEAD
[1.2.0]: https://github.com/FossifyOrg/Launcher/compare/1.1.4...1.2.0
[1.1.4]: https://github.com/FossifyOrg/Launcher/compare/1.1.3...1.1.4
[1.1.3]: https://github.com/FossifyOrg/Launcher/compare/1.1.2...1.1.3
[1.1.2]: https://github.com/FossifyOrg/Launcher/compare/1.1.1...1.1.2
[1.1.1]: https://github.com/FossifyOrg/Launcher/compare/1.1.0...1.1.1
[1.1.0]: https://github.com/FossifyOrg/Launcher/compare/1.0.1...1.1.0
[1.0.1]: https://github.com/FossifyOrg/Launcher/compare/1.0.0...1.0.1
[1.0.0]: https://github.com/FossifyOrg/Launcher/releases/tag/1.0.0

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 {
@@ -122,6 +131,9 @@ android {
detekt {
baseline = file("detekt-baseline.xml")
config.setFrom("$rootDir/detekt.yml")
buildUponDefaultConfig = true
allRules = false
}
dependencies {
@@ -129,4 +141,5 @@ dependencies {
implementation(libs.bundles.room)
ksp(libs.androidx.room.compiler)
detektPlugins(libs.compose.detekt)
}

View File

@@ -1,464 +1,152 @@
<?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:HomeScreenGrid.kt$HomeScreenGrid$fun drawInto(canvas: Canvas)</ID>
<ID>LongMethod:HomeScreenGrid.kt$HomeScreenGrid$private fun addAppIconOrShortcut( draggedHomeGridItem: HomeScreenGridItem?, xIndex: Int, yIndex: Int, newParentId: Long? = null, toFolderEnd: Boolean = true, )</ID>
<ID>LongMethod:MainActivity.kt$MainActivity$private fun getDefaultAppPackages(appLaunchers: ArrayList&lt;AppLauncher&gt;)</ID>
<ID>LongMethod:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$override fun onTouchEvent(event: MotionEvent?): Boolean</ID>
<ID>LoopWithTooManyJumpStatements:MainActivity.kt$MainActivity$for</ID>
<ID>MagicNumber:Context.kt$30</ID>
<ID>MagicNumber:Context.kt$70.0</ID>
<ID>MagicNumber:Converters.kt$Converters$100</ID>
<ID>MagicNumber:HiddenIconsAdapter.kt$HiddenIconsAdapter$0.1f</ID>
<ID>MagicNumber:HiddenIconsAdapter.kt$HiddenIconsAdapter$150</ID>
<ID>MagicNumber:HomeScreenGrid.kt$AnimatedGridPager$0.5f</ID>
<ID>MagicNumber:HomeScreenGrid.kt$AnimatedGridPager$255</ID>
<ID>MagicNumber:HomeScreenGrid.kt$AnimatedGridPager$255.0f</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid$0.9f</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid$1.2f</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid$1.5f</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid$3f</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid$5</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid.HomeScreenFolder$0.2f</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid.HomeScreenFolder$3</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid.HomeScreenFolder$4f</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid.HomeScreenFolder$5f</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid.HomeScreenFolder.&lt;no name provided&gt;$0.2f</ID>
<ID>MagicNumber:HomeScreenGrid.kt$HomeScreenGrid.HomeScreenGridTouchHelper$100</ID>
<ID>MagicNumber:LaunchersAdapter.kt$LaunchersAdapter$0.1f</ID>
<ID>MagicNumber:MainActivity.kt$MainActivity$0.5</ID>
<ID>MagicNumber:MainActivity.kt$MainActivity$2000</ID>
<ID>MagicNumber:MainActivity.kt$MainActivity.MyGestureListener$500L</ID>
<ID>MagicNumber:MyAppWidgetHostView.kt$MyAppWidgetHostView$4</ID>
<ID>MagicNumber:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$3</ID>
<ID>MagicNumber:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$4</ID>
<ID>MagicNumber:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$5</ID>
<ID>MaxLineLength:Activity.kt$LauncherApps.ShortcutQuery.FLAG_MATCH_DYNAMIC or LauncherApps.ShortcutQuery.FLAG_MATCH_MANIFEST or LauncherApps.ShortcutQuery.FLAG_MATCH_PINNED</ID>
<ID>MaxLineLength:AllAppsFragment.kt$AllAppsFragment$// some devices ACTION_MOVE keeps triggering for the whole long press duration, but we are interested in real moves only, when coords change</ID>
<ID>MaxLineLength:AppLauncher.kt$AppLauncher$@ColumnInfo(name = "activity_name") var activityName: String</ID>
<ID>MaxLineLength:AppLauncher.kt$AppLauncher$sorting and SORT_BY_TITLE != 0 -&gt; title.normalizeString().lowercase().compareTo(other.title.normalizeString().lowercase())</ID>
<ID>MaxLineLength:FolderIconsAdapter.kt$FolderIconsAdapter.&lt;no name provided&gt;$val yOffset = resources.getDimension(R.dimen.long_press_anchor_button_offset_y) * (visibleMenuItems - 1)</ID>
<ID>MaxLineLength:HiddenIconsAdapter.kt$HiddenIconsAdapter$private fun getSelectedItems()</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$AnimatedGridPager$((pageChangeSwipedPercentage &gt; 0f &amp;&amp; item.page == currentPage - 1) || (pageChangeSwipedPercentage &lt; 0f &amp;&amp; item.page == currentPage + 1))</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$(context as? MainActivity)</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$abs(it.second - draggedItemCurrentCoords.first + sideMargins.left) + abs(it.third - draggedItemCurrentCoords.second + sideMargins.top)</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$abs(it.x - draggedItemCurrentCoords.first + sideMargins.left) + abs(it.y - draggedItemCurrentCoords.second + sideMargins.top)</ID>
<ID>MaxLineLength:HomeScreenGrid.kt$HomeScreenGrid$draggedItem!!.getWidthInCells() * cellWidth - iconMargin * (draggedItem!!.getWidthInCells() - 1)</ID>
<ID>MaxLineLength:HomeScreenGridItem.kt$HomeScreenGridItem$@ColumnInfo(name = "activity_name") var activityName: String</ID>
<ID>MaxLineLength:HomeScreenGridItem.kt$HomeScreenGridItem$@ColumnInfo(name = "docked") var docked: Boolean = false</ID>
<ID>MaxLineLength:HomeScreenGridItem.kt$HomeScreenGridItem$@ColumnInfo(name = "icon") var icon: Bitmap? = null</ID>
<ID>MaxLineLength:HomeScreenGridItem.kt$HomeScreenGridItem$constructor() : this(null, -1, -1, -1, -1, 0, "", "", "", ITEM_TYPE_ICON, "", -1, "", null, false, null, null, null, null, 1, 1)</ID>
<ID>MaxLineLength:HomeScreenGridItemsDao.kt$HomeScreenGridItemsDao$@Query("DELETE FROM home_screen_grid_items WHERE parent_id IN (SELECT id FROM home_screen_grid_items WHERE package_name = :packageName)")</ID>
<ID>MaxLineLength:HomeScreenGridItemsDao.kt$HomeScreenGridItemsDao$@Query("UPDATE home_screen_grid_items SET `left` = :left, `top` = :top, `right` = :right, `bottom` = :bottom, `page` = :page, `docked` = :docked , `parent_id` = :parentId WHERE id = :id")</ID>
<ID>MaxLineLength:HomeScreenGridItemsDao.kt$HomeScreenGridItemsDao$@Query("UPDATE home_screen_grid_items SET `left` = `left` + :shiftBy WHERE parent_id == :folderId AND `left` &gt; :shiftFrom AND id != :excludingId")</ID>
<ID>MaxLineLength:HomeScreenGridItemsDao.kt$HomeScreenGridItemsDao$fun</ID>
<ID>MaxLineLength:MainActivity.kt$MainActivity$(abs(mTouchDownX - event.x) &gt; mMoveGestureThreshold || abs(mTouchDownY - event.y) &gt; mMoveGestureThreshold)</ID>
<ID>MaxLineLength:MainActivity.kt$MainActivity$// delay showing the shortcut both to let the user see adding it in realtime and hackily avoid concurrent modification exception at HomeScreenGrid</ID>
<ID>MaxLineLength:MainActivity.kt$MainActivity$// some devices ACTION_MOVE keeps triggering for the whole long press duration, but we are interested in real moves only, when coords change</ID>
<ID>MaxLineLength:MainActivity.kt$MainActivity$if</ID>
<ID>MaxLineLength:MyAppWidgetHostView.kt$MyAppWidgetHostView$if</ID>
<ID>MaxLineLength:MyAppWidgetHostView.kt$MyAppWidgetHostView$var onIgnoreInterceptedListener: (() -&gt; Unit)? = null // let the home grid react on swallowed clicks, for example by hiding the widget resize frame</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$canvas.drawRect(lineDotRadius, lineDotRadius, width.toFloat() - lineDotRadius, height.toFloat() - lineDotRadius, resizeWidgetLinePaint)</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$class</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$minResizeWidthCells = Math.min(context.config.homeColumnCount, context.getCellCount(providerInfo.minResizeWidth))</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$private val MAX_TOUCH_LINE_DISTANCE = lineDotRadius * 5 // how close we have to be to the widgets side to drag it</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$val</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$val wantedBottom = roundToClosestMultiplyOfNumber(frameRect.bottom - sideMargins.top, cellHeight)</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$val wantedBottomCellY = roundToClosestMultiplyOfNumber(wantedBottom - sideMargins.top, cellHeight) / cellHeight - 1</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$val wantedLeft = roundToClosestMultiplyOfNumber(frameRect.left - sideMargins.left, cellWidth)</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$val wantedLeftCellX = roundToClosestMultiplyOfNumber(wantedLeft - sideMargins.left, cellWidth) / cellWidth</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$val wantedRight = roundToClosestMultiplyOfNumber(frameRect.right - sideMargins.left, cellWidth)</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$val wantedRightCellX = roundToClosestMultiplyOfNumber(wantedRight - sideMargins.left, cellWidth) / cellWidth - 1</ID>
<ID>MaxLineLength:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$val wantedTopCellY = roundToClosestMultiplyOfNumber(wantedTop - sideMargins.top, cellHeight) / cellHeight</ID>
<ID>MaxLineLength:WidgetsFragment.kt$WidgetsFragment$// some devices ACTION_MOVE keeps triggering for the whole long press duration, but we are interested in real moves only, when coords change</ID>
<ID>MaxLineLength:WidgetsFragment.kt$WidgetsFragment$if</ID>
<ID>NestedBlockDepth:AllAppsFragment.kt$AllAppsFragment$override fun onInterceptTouchEvent(event: MotionEvent?): Boolean</ID>
<ID>NestedBlockDepth:HomeScreenGrid.kt$HomeScreenGrid$@SuppressLint("ClickableViewAccessibility") fun widgetLongPressed(item: HomeScreenGridItem)</ID>
<ID>NestedBlockDepth:HomeScreenGrid.kt$HomeScreenGrid$fun drawInto(canvas: Canvas)</ID>
<ID>NestedBlockDepth:HomeScreenGrid.kt$HomeScreenGrid$private fun Canvas.drawItemInCell(item: HomeScreenGridItem, cell: Rect)</ID>
<ID>NestedBlockDepth:HomeScreenGrid.kt$HomeScreenGrid$private fun addAppIconOrShortcut()</ID>
<ID>NestedBlockDepth:HomeScreenGrid.kt$HomeScreenGrid$private fun addWidget()</ID>
<ID>NestedBlockDepth:HomeScreenGrid.kt$HomeScreenGrid$private fun moveItem()</ID>
<ID>NestedBlockDepth:MainActivity.kt$MainActivity$override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?)</ID>
<ID>NestedBlockDepth:MainActivity.kt$MainActivity$override fun onTouchEvent(event: MotionEvent?): Boolean</ID>
<ID>NestedBlockDepth:MainActivity.kt$MainActivity$private fun findFirstEmptyCell(): Pair&lt;Int, Rect&gt;</ID>
<ID>NestedBlockDepth:MyAppWidgetResizeFrame.kt$MyAppWidgetResizeFrame$override fun onTouchEvent(event: MotionEvent?): Boolean</ID>
<ID>NewLineAtEndOfFile:IconCache.kt$org.fossify.home.helpers.IconCache.kt</ID>
<ID>NewLineAtEndOfFile:View.kt$org.fossify.home.extensions.View.kt</ID>
<ID>ReturnCount: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,689 @@
<?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="17"
column="23"/>
</issue>
<issue id="CustomSplashScreen" message="The application should not provide its own launch screen" errorLine1="class SplashActivity : BaseSplashActivity() {"
<issue
id="CustomSplashScreen"
message="The application should not provide its own launch screen"
errorLine1="class SplashActivity : BaseSplashActivity() {"
errorLine2=" ~~~~~~~~~~~~~~">
<location file="src/main/kotlin/org.fossify.home/activities/SplashActivity.kt" line="6" column="7" />
<location
file="src/main/kotlin/org/fossify/home/activities/SplashActivity.kt"
line="6"
column="7"/>
</issue>
<issue id="LockedOrientationActivity"
<issue
id="AndroidGradlePluginVersion"
message="A newer version of Gradle than 8.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="AndroidGradlePluginVersion"
message="A newer version of com.android.application than 8.10.1 is available: 8.11.0"
errorLine1="gradlePlugins-agp = &quot;8.10.1&quot;"
errorLine2=" ~~~~~~~~">
<location
file="$HOME/Projects/Fossify/FossifyOrg/Launcher/gradle/libs.versions.toml"
line="14"
column="21"/>
</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="16"
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="47"
column="13"/>
</issue>
<issue id="MissingTranslation"
message="&quot;app_launcher_name&quot; is not translated in &quot;hi&quot; (Hindi), &quot;fil&quot; (Filipino; Pilipino), &quot;lt&quot; (Lithuanian), &quot;lv&quot; (Latvian), &quot;mk&quot; (Macedonian), &quot;ms&quot; (Malay), &quot;en&quot; (English), &quot;eo&quot; (Esperanto), &quot;is&quot; (Icelandic), &quot;my&quot; (Burmese), &quot;eu&quot; (Basque), &quot;ar&quot; (Arabic), &quot;ne&quot; (Nepali), &quot;az&quot; (Azerbaijani), &quot;fa&quot; (Persian), &quot;nl&quot; (Dutch), &quot;nn&quot; (Norwegian Nynorsk), &quot;be&quot; (Belarusian), &quot;bn&quot; (Bangla), &quot;br&quot; (Breton), &quot;si&quot; (Sinhala), &quot;ltg&quot;, &quot;kn&quot; (Kannada), &quot;or&quot; (Odia), &quot;ko&quot; (Korean), &quot;kr&quot; (Kanuri), &quot;sat&quot; (Santali), &quot;ta&quot; (Tamil), &quot;cr&quot; (Cree), &quot;te&quot; (Telugu), &quot;th&quot; (Thai), &quot;cy&quot; (Welsh), &quot;ckb&quot;, &quot;da&quot; (Danish)"
errorLine1=" &lt;string name=&quot;app_launcher_name&quot;>Launcher_debug&lt;/string>" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
<location file="src/debug/res/values/strings.xml" line="3" column="13" />
<issue
id="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="47"
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

@@ -33,6 +33,7 @@ import android.view.animation.DecelerateInterpolator
import android.widget.PopupMenu
import androidx.core.graphics.drawable.toBitmap
import androidx.core.graphics.drawable.toDrawable
import androidx.core.net.toUri
import androidx.core.view.GestureDetectorCompat
import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat
@@ -51,6 +52,7 @@ import org.fossify.commons.extensions.onGlobalLayout
import org.fossify.commons.extensions.performHapticFeedback
import org.fossify.commons.extensions.realScreenSize
import org.fossify.commons.extensions.showErrorToast
import org.fossify.commons.extensions.showKeyboard
import org.fossify.commons.extensions.toast
import org.fossify.commons.extensions.viewBinding
import org.fossify.commons.helpers.DARK_GREY
@@ -94,7 +96,6 @@ import org.fossify.home.receivers.LockDeviceAdminReceiver
import kotlin.math.abs
import kotlin.math.max
import kotlin.math.min
import androidx.core.net.toUri
class MainActivity : SimpleActivity(), FlingListener {
private var mTouchDownX = -1
@@ -581,6 +582,16 @@ class MainActivity : SimpleActivity(), FlingListener {
null
)
if (
fragment is AllAppsFragmentBinding
&& config.showSearchBar
&& config.autoShowKeyboardInAppDrawer
) {
fragment.root.postDelayed({
showKeyboard(fragment.searchBar.binding.topToolbarSearch)
}, animationDuration)
}
Handler(Looper.getMainLooper()).postDelayed({
updateStatusBarIcons()
}, animationDuration)

View File

@@ -59,6 +59,7 @@ class SettingsActivity : SimpleActivity() {
setupUseEnglish()
setupDoubleTapToLock()
setupCloseAppDrawerOnOtherAppOpen()
setupOpenKeyboardOnAppDrawer()
setupDrawerColumnCount()
setupDrawerSearchBar()
setupHomeRowCount()
@@ -152,6 +153,15 @@ class SettingsActivity : SimpleActivity() {
}
}
private fun setupOpenKeyboardOnAppDrawer() {
binding.settingsOpenKeyboardOnAppDrawerHolder.beVisibleIf(config.showSearchBar)
binding.settingsOpenKeyboardOnAppDrawer.isChecked = config.autoShowKeyboardInAppDrawer
binding.settingsOpenKeyboardOnAppDrawerHolder.setOnClickListener {
binding.settingsOpenKeyboardOnAppDrawer.toggle()
config.autoShowKeyboardInAppDrawer = binding.settingsOpenKeyboardOnAppDrawer.isChecked
}
}
private fun setupCloseAppDrawerOnOtherAppOpen() {
binding.settingsCloseAppDrawerOnOtherApp.isChecked = config.closeAppDrawer
binding.settingsCloseAppDrawerOnOtherAppHolder.setOnClickListener {
@@ -192,6 +202,7 @@ class SettingsActivity : SimpleActivity() {
binding.settingsDrawerSearchHolder.setOnClickListener {
binding.settingsShowSearchBar.toggle()
config.showSearchBar = binding.settingsShowSearchBar.isChecked
binding.settingsOpenKeyboardOnAppDrawerHolder.beVisibleIf(config.showSearchBar)
}
}

View File

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

View File

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

View File

@@ -1266,10 +1266,15 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) :
gridItems
.filter { it.type == ITEM_TYPE_WIDGET && !it.outOfBounds() }
.forEach { item ->
val appWidgetProviderInfo = item.providerInfo
val providerInfo = item.providerInfo
?: appWidgetManager!!.installedProviders
.firstOrNull { it.provider.className == item.className }
placeAppWidget(appWidgetProviderInfo!!, item)
if (providerInfo != null) {
placeAppWidget(providerInfo, item)
} else {
removeWidget(item)
}
}
} else {
gridItems

View File

@@ -203,6 +203,22 @@
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_open_keyboard_on_app_drawer_holder"
style="@style/SettingsHolderSwitchStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ripple_background">
<org.fossify.commons.views.MyMaterialSwitch
android:id="@+id/settings_open_keyboard_on_app_drawer"
style="@style/SettingsSwitchStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/auto_show_keyboard_in_app_drawer" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_close_app_drawer_on_other_app_holder"
style="@style/SettingsHolderSwitchStyle"

View File

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

View File

@@ -17,4 +17,5 @@
<string name="double_tap_to_lock">Toc doble per a bloquejar la pantalla</string>
<string name="lock_device_admin_hint">Per a activar la funció de toc doble per a bloquejar la pantalla, heu de concedir permís d\'administració. Tingueu en compte que l\'aplicació no es pot desinstal·lar fins que no s\'elimini aquest permís.</string>
<string name="lock_device_admin_warning">Desactivant el permís d\'administració es desactivarà la funció de toc doble per a bloquejar la pantalla.</string>
</resources>
<string name="auto_show_keyboard_in_app_drawer">Mostra automàticament el teclat al calaix</string>
</resources>

View File

@@ -17,4 +17,5 @@
<string name="lock_device_admin_hint">Chcete-li povolit funkci zamykání obrazovky dvojitým klepnutím, musíte udělit oprávnění správce. Upozornění: aplikaci nelze odinstalovat, dokud toto oprávnění neodeberete.</string>
<string name="lock_device_admin_warning">Deaktivací oprávnění správce zakážete funkci zamykání obrazovky dvojitým klepnutím.</string>
<string name="double_tap_to_lock">Klepněte dvakrát pro zamknutí obrazovky</string>
</resources>
<string name="auto_show_keyboard_in_app_drawer">Automaticky zobrazit klávesnici v seznamu aplikací</string>
</resources>

View File

@@ -17,4 +17,5 @@
<string name="lock_device_admin_hint">Um die Funktion „Doppeltes Antippen zum Sperren des Bildschirms“ zu aktivieren, musst du die Administratorberechtigung erteilen. Beachte, dass die App nicht deinstalliert werden kann, bis diese Berechtigung entfernt wird.</string>
<string name="double_tap_to_lock">Doppeltes Antippen zum Sperren des Bildschirms</string>
<string name="lock_device_admin_warning">Durch Entfernen der Administratorberechtigung wird die Funktion „Doppeltes Antippen zum Sperren des Bildschirms“ deaktiviert.</string>
</resources>
<string name="auto_show_keyboard_in_app_drawer">Keyboard automatisch in App-Schublade anzeigen</string>
</resources>

View File

@@ -17,4 +17,5 @@
<string name="double_tap_to_lock">Naciśnij dwukrotnie, aby zablokować ekran</string>
<string name="lock_device_admin_hint">Aby włączyć funkcję dwukrotnego naciśnięcia w celu zablokowania ekranu, musisz udzielić uprawnienia administratora. Uwaga: aplikacja nie może zostać odinstalowana, dopóki to uprawnienie nie zostanie usunięte.</string>
<string name="lock_device_admin_warning">Dezaktywacja uprawnienia administratora spowoduje wyłączenie funkcji dwukrotnego naciśnięcia w celu zablokowania ekranu.</string>
</resources>
<string name="auto_show_keyboard_in_app_drawer">Automatycznie pokazuj klawiaturę w szufladzie</string>
</resources>

View File

@@ -12,6 +12,7 @@
<string name="hidden_icons_placeholder">Some apps cannot be uninstalled due to system restrictions, but you can at least hide their icons to avoid seeing them.</string>
<string name="app_drawer_settings">App drawer</string>
<string name="close_app_drawer_on_app_open">Close app drawer on opening an app</string>
<string name="auto_show_keyboard_in_app_drawer">Automatically show keyboard in drawer</string>
<string name="home_screen_settings">Home screen</string>
<string name="widget_too_big">Widget is too big for current home screen size</string>
<string name="double_tap_to_lock">Double tap to lock screen</string>

58
detekt.yml Normal file
View File

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

View File

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

View File

@@ -0,0 +1,8 @@
Added:
• Option to show keyboard automatically in app drawer
Changed:
• Updated translations

View File

@@ -5,6 +5,6 @@ android.nonTransitiveRClass=true
org.gradle.jvmargs=-Xmx4096M
# Versioning
VERSION_NAME=1.1.3
VERSION_CODE=6
VERSION_NAME=1.2.0
VERSION_CODE=8
APP_ID=org.fossify.home

View File

@@ -1,16 +1,17 @@
[versions]
#jetbrains
kotlin = "2.1.21"
kotlin = "2.2.0"
#KSP
ksp = "2.1.21-2.0.2"
ksp = "2.2.0-2.0.2"
#Detekt
detekt = "1.23.8"
detektCompose = "0.4.22"
#Room
room = "2.7.1"
room = "2.7.2"
#Fossify
commons = "3.0.5"
commons = "4.3.0"
#Gradle
gradlePlugins-agp = "8.10.1"
gradlePlugins-agp = "8.11.1"
#build
app-build-compileSDKVersion = "34"
app-build-targetSDK = "34"
@@ -22,6 +23,8 @@ app-build-kotlinJVMTarget = "17"
androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" }
androidx-room-ktx = { module = "androidx.room:room-ktx", version.ref = "room" }
androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" }
#Compose
compose-detekt = { module = "io.nlopez.compose.rules:detekt", version.ref = "detektCompose" }
#Fossify
fossify-commons = { module = "org.fossify:commons", version.ref = "commons" }
[bundles]

View File

Binary file not shown.

View File

@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME

5
gradlew vendored
View File

@@ -86,8 +86,7 @@ done
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
' "$PWD" ) || exit
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
@@ -206,7 +205,7 @@ fi
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.

35
lint.xml Normal file
View File

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