diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml
new file mode 100644
index 000000000..9a13ba793
--- /dev/null
+++ b/.github/workflows/pr.yml
@@ -0,0 +1,11 @@
+name: PR
+
+on:
+ pull_request:
+ branches: [ $default-branch ]
+
+jobs:
+ call-pr-workflow:
+ uses: FossifyOrg/.github/.github/workflows/pr.yml@main
+ with:
+ test_task: ":app:testFossDebugUnitTest"
diff --git a/.github/workflows/testing-build.yml b/.github/workflows/testing-build.yml
new file mode 100644
index 000000000..005ed26ca
--- /dev/null
+++ b/.github/workflows/testing-build.yml
@@ -0,0 +1,10 @@
+name: Testing build (on PR)
+
+on:
+ pull_request:
+ branches: [ $default-branch ]
+ types: [ labeled, opened, synchronize, reopened ]
+
+jobs:
+ call-testing-build-workflow:
+ uses: FossifyOrg/.github/.github/workflows/testing-build.yml@main
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index f397934e4..4ad537851 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -6,6 +6,7 @@ plugins {
alias(libs.plugins.android)
alias(libs.plugins.kotlinAndroid)
alias(libs.plugins.ksp)
+ alias(libs.plugins.detekt)
}
val keystorePropertiesFile: File = rootProject.file("keystore.properties")
@@ -87,7 +88,9 @@ android {
lint {
checkReleaseBuilds = false
- abortOnError = false
+ abortOnError = true
+ warningsAsErrors = true
+ baseline = file("lint-baseline.xml")
}
packaging {
@@ -104,6 +107,10 @@ android {
}
}
+detekt {
+ baseline = file("detekt-baseline.xml")
+}
+
dependencies {
implementation(libs.fossify.commons)
implementation(libs.android.image.cropper)
diff --git a/app/detekt-baseline.xml b/app/detekt-baseline.xml
new file mode 100644
index 000000000..7a3c20ba9
--- /dev/null
+++ b/app/detekt-baseline.xml
@@ -0,0 +1,824 @@
+
+
+
+
+ ComplexCondition:Activity.kt$(hide && filename.startsWith('.')) || (!hide && !filename.startsWith('.'))
+ ComplexCondition:Context.kt$animate && roundCorners == ROUNDED_CORNERS_NONE && (path.isGif() || path.isWebP())
+ ComplexCondition:DirectoryAdapter.kt$DirectoryAdapter$!config.useRecycleBin || config.tempSkipRecycleBin || (isOneItemSelected() && fileDirItem.areFavorites())
+ ComplexCondition:MainActivity.kt$MainActivity$!config.wasOTGHandled && hasPermission(getPermissionToRequest()) && hasOTGConnected() && config.OTGPath.isEmpty()
+ ComplexCondition:MainActivity.kt$MainActivity$(!defaultDir.exists() || !defaultDir.isDirectory) && (config.defaultFolder != RECYCLE_BIN && config.defaultFolder != FAVORITES)
+ ComplexCondition:MediaActivity.kt$MediaActivity$mMedia.isEmpty() || !isRandomSorting || (isRandomSorting && !mWasFullscreenViewOpen)
+ ComplexCondition:MediaAdapter.kt$MediaAdapter$showFileTypes && (medium.isGIF() || medium.isRaw() || medium.isSVG())
+ ComplexCondition:MediaFetcher.kt$MediaFetcher$!isImage && !isVideo && !isGif && !isRaw && !isSvg
+ ComplexCondition:MediaFetcher.kt$MediaFetcher$curPath != FAVORITES && curPath != RECYCLE_BIN && isRPlus() && !isExternalStorageManager()
+ ComplexCondition:MediaFetcher.kt$MediaFetcher$currentGrouping and GROUP_BY_LAST_MODIFIED_DAILY != 0 || currentGrouping and GROUP_BY_LAST_MODIFIED_MONTHLY != 0 || currentGrouping and GROUP_BY_DATE_TAKEN_DAILY != 0 || currentGrouping and GROUP_BY_DATE_TAKEN_MONTHLY != 0
+ ComplexCondition:MediaFetcher.kt$MediaFetcher$isImage || isVideo || isGif || isRaw
+ ComplexCondition:MediaSideScroll.kt$MediaSideScroll$(percent == 100 && event.rawY > mLastTouchY) || (percent == -100 && event.rawY < mLastTouchY)
+ ComplexCondition:PhotoFragment.kt$PhotoFragment$isRPlus() && !isExternalStorageManager() && mMedium.path.startsWith("/storage/") && mMedium.isHidden()
+ ComplexCondition:PhotoFragment.kt$PhotoFragment$mIsFragmentVisible && context?.config?.allowZoomingImages == true && (mMedium.isImage() || mMedium.isPortrait()) && !mIsSubsamplingVisible
+ ComplexCondition:PhotoFragment.kt$PhotoFragment$mStoredShowExtendedDetails && isVisible() && context != null && resources != null
+ ComplexCondition:PhotoVideoActivity.kt$PhotoVideoActivity$realPath != mUri.toString() && realPath.isNotEmpty() && mUri!!.authority != "mms" && filename.contains('.') && getDoesFilePathExist(realPath)
+ ComplexCondition:PicassoRegionDecoder.kt$PicassoRegionDecoder$(rect.width() > rect.height() && screenWidth > screenHeight) || (rect.height() > rect.width() && screenHeight > screenWidth)
+ ComplexCondition:SettingsActivity.kt$SettingsActivity$requestCode == PICK_IMPORT_SOURCE_INTENT && resultCode == Activity.RESULT_OK && resultData != null && resultData.data != null
+ ComplexCondition:SettingsActivity.kt$SettingsActivity$requestCode == SELECT_EXPORT_FAVORITES_FILE_INTENT && resultCode == Activity.RESULT_OK && resultData != null && resultData.data != null
+ ComplexCondition:SettingsActivity.kt$SettingsActivity$requestCode == SELECT_IMPORT_FAVORITES_FILE_INTENT && resultCode == Activity.RESULT_OK && resultData != null && resultData.data != null
+ ComplexCondition:VideoFragment.kt$VideoFragment$activity == null || mConfig.openVideosOnSeparateScreen || mIsPanorama || mExoPlayer != null
+ ComplexCondition:VideoFragment.kt$VideoFragment$mStoredShowExtendedDetails && isVisible() && context != null && resources != null
+ ComplexCondition:VideoFragment.kt$VideoFragment$mWasFragmentInit && menuVisible && mConfig.autoplayVideos && !mConfig.openVideosOnSeparateScreen
+ ComplexCondition:VideoPlayerActivity.kt$VideoPlayerActivity$config.allowDownGesture && !mIgnoreCloseDown && Math.abs(diffY) > Math.abs(diffX) && diffY < -mCloseDownThreshold && downGestureDuration < MAX_CLOSE_DOWN_GESTURE_DURATION && binding.videoSurfaceFrame.controller.state.zoom == 1f
+ ComplexCondition:VideoPlayerActivity.kt$VideoPlayerActivity$mIsDragged || (Math.abs(diffX) > mDragThreshold && Math.abs(diffX) > Math.abs(diffY)) && binding.videoSurfaceFrame.controller.state.zoom == 1f
+ ComplexCondition:ViewPagerFragment.kt$ViewPagerFragment$!mIgnoreCloseDown && (Math.abs(diffY) > Math.abs(diffX)) && (diffY < -mCloseDownThreshold) && downGestureDuration < MAX_CLOSE_DOWN_GESTURE_DURATION && context?.config?.allowDownGesture == true
+ CyclomaticComplexMethod:Activity.kt$fun AppCompatActivity.fixDateTaken( paths: ArrayList<String>, showToasts: Boolean, hasRescanned: Boolean = false, callback: (() -> Unit)? = null )
+ CyclomaticComplexMethod:Context.kt$@Suppress("UNCHECKED_CAST") fun Context.getSortedDirectories(source: ArrayList<Directory>): ArrayList<Directory>
+ CyclomaticComplexMethod:Context.kt$fun Context.getCachedDirectories( getVideosOnly: Boolean = false, getImagesOnly: Boolean = false, forceShowHidden: Boolean = false, forceShowExcluded: Boolean = false, callback: (ArrayList<Directory>) -> Unit, )
+ CyclomaticComplexMethod:Context.kt$fun Context.getCachedMedia(path: String, getVideosOnly: Boolean = false, getImagesOnly: Boolean = false, callback: (ArrayList<ThumbnailItem>) -> Unit)
+ CyclomaticComplexMethod:Context.kt$fun Context.getDirectParentSubfolders(dirs: ArrayList<Directory>, currentPathPrefix: String): ArrayList<Directory>
+ CyclomaticComplexMethod:DirectoryAdapter.kt$DirectoryAdapter$override fun actionItemPressed(id: Int)
+ CyclomaticComplexMethod:DirectoryAdapter.kt$DirectoryAdapter$private fun copyMoveTo(selectedPaths: Collection<String>, isCopyOperation: Boolean)
+ CyclomaticComplexMethod:DirectoryAdapter.kt$DirectoryAdapter$private fun setupView(view: View, directory: Directory, holder: ViewHolder)
+ CyclomaticComplexMethod:EditActivity.kt$EditActivity$private fun initEditActivity()
+ CyclomaticComplexMethod:EditActivity.kt$EditActivity$private fun updatePrimaryActionButtons()
+ CyclomaticComplexMethod:MainActivity.kt$MainActivity$override fun deleteFolders(folders: ArrayList<File>)
+ CyclomaticComplexMethod:MainActivity.kt$MainActivity$private fun checkInvalidDirectories(dirs: ArrayList<Directory>)
+ CyclomaticComplexMethod:MainActivity.kt$MainActivity$private fun gotDirectories(newDirs: ArrayList<Directory>)
+ CyclomaticComplexMethod:MainActivity.kt$MainActivity$private fun setupOptionsMenu()
+ CyclomaticComplexMethod:ManageBottomActionsDialog.kt$ManageBottomActionsDialog$private fun dialogConfirmed()
+ CyclomaticComplexMethod:MediaActivity.kt$MediaActivity$override fun onResume()
+ CyclomaticComplexMethod:MediaActivity.kt$MediaActivity$private fun setupOptionsMenu()
+ CyclomaticComplexMethod:MediaAdapter.kt$MediaAdapter$override fun actionItemPressed(id: Int)
+ CyclomaticComplexMethod:MediaAdapter.kt$MediaAdapter$private fun setupThumbnail(view: View, medium: Medium)
+ CyclomaticComplexMethod:MediaFetcher.kt$MediaFetcher$fun getAndroid11FolderMedia( isPickImage: Boolean, isPickVideo: Boolean, favoritePaths: ArrayList<String>, getFavoritePathsOnly: Boolean, getProperDateTaken: Boolean, dateTakens: HashMap<String, Long> ): HashMap<String, ArrayList<Medium>>
+ CyclomaticComplexMethod:MediaFetcher.kt$MediaFetcher$fun getFilesFrom( curPath: String, isPickImage: Boolean, isPickVideo: Boolean, getProperDateTaken: Boolean, getProperLastModified: Boolean, getProperFileSize: Boolean, favoritePaths: ArrayList<String>, getVideoDurations: Boolean, lastModifieds: HashMap<String, Long>, dateTakens: HashMap<String, Long>, android11Files: HashMap<String, ArrayList<Medium>>? ): ArrayList<Medium>
+ CyclomaticComplexMethod:MediaFetcher.kt$MediaFetcher$fun groupMedia(media: ArrayList<Medium>, path: String): ArrayList<ThumbnailItem>
+ CyclomaticComplexMethod:MediaFetcher.kt$MediaFetcher$private fun getMediaInFolder( folder: String, isPickImage: Boolean, isPickVideo: Boolean, filterMedia: Int, getProperDateTaken: Boolean, getProperLastModified: Boolean, getProperFileSize: Boolean, favoritePaths: ArrayList<String>, getVideoDurations: Boolean, lastModifieds: HashMap<String, Long>, dateTakens: HashMap<String, Long> ): ArrayList<Medium>
+ CyclomaticComplexMethod:MediaFetcher.kt$MediaFetcher$private fun getMediaOnOTG( folder: String, isPickImage: Boolean, isPickVideo: Boolean, filterMedia: Int, favoritePaths: ArrayList<String>, getVideoDurations: Boolean ): ArrayList<Medium>
+ CyclomaticComplexMethod:MediaSideScroll.kt$MediaSideScroll$override fun onTouchEvent(event: MotionEvent): Boolean
+ CyclomaticComplexMethod:PhotoFragment.kt$PhotoFragment$override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View
+ CyclomaticComplexMethod:PhotoVideoActivity.kt$PhotoVideoActivity$private fun checkIntent(savedInstanceState: Bundle? = null)
+ CyclomaticComplexMethod:PickDirectoryDialog.kt$PickDirectoryDialog$private fun gotDirectories(newDirs: ArrayList<Directory>)
+ CyclomaticComplexMethod:SettingsActivity.kt$SettingsActivity$private fun parseFile(inputStream: InputStream?)
+ CyclomaticComplexMethod:String.kt$fun String.shouldFolderBeVisible( excludedPaths: MutableSet<String>, includedPaths: MutableSet<String>, showHidden: Boolean, folderNoMediaStatuses: HashMap<String, Boolean>, callback: (path: String, hasNoMedia: Boolean) -> Unit ): Boolean
+ CyclomaticComplexMethod:VideoFragment.kt$VideoFragment$override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View
+ CyclomaticComplexMethod:VideoPlayerActivity.kt$VideoPlayerActivity$private fun handleEvent(event: MotionEvent)
+ CyclomaticComplexMethod:ViewPagerActivity.kt$ViewPagerActivity$fun refreshMenuItems()
+ CyclomaticComplexMethod:ViewPagerActivity.kt$ViewPagerActivity$private fun initContinue()
+ CyclomaticComplexMethod:ViewPagerActivity.kt$ViewPagerActivity$private fun setupOptionsMenu()
+ CyclomaticComplexMethod:ViewPagerFragment.kt$ViewPagerFragment$fun getMediumExtendedDetails(medium: Medium): String
+ EmptyCatchBlock:Activity.kt${ }
+ EmptyCatchBlock:Context.kt${ }
+ EmptyCatchBlock:EditActivity.kt$EditActivity${ }
+ EmptyCatchBlock:MainActivity.kt$MainActivity${ }
+ EmptyCatchBlock:MediaActivity.kt$MediaActivity${ }
+ EmptyCatchBlock:MediaFetcher.kt$MediaFetcher${ }
+ EmptyCatchBlock:MyWidgetProvider.kt$MyWidgetProvider${ }
+ EmptyCatchBlock:PhotoVideoActivity.kt$PhotoVideoActivity${ }
+ EmptyCatchBlock:ViewPagerActivity.kt$ViewPagerActivity${ }
+ EmptyFunctionBlock:App.kt$App.<no name provided>${}
+ EmptyFunctionBlock:DefaultPageTransformer.kt$DefaultPageTransformer${}
+ EmptyFunctionBlock:DirectoryAdapter.kt$DirectoryAdapter${}
+ EmptyFunctionBlock:ManageFoldersAdapter.kt$ManageFoldersAdapter${}
+ EmptyFunctionBlock:ManageHiddenFoldersAdapter.kt$ManageHiddenFoldersAdapter${}
+ EmptyFunctionBlock:MediaAdapter.kt$MediaAdapter${}
+ EmptyFunctionBlock:PhotoVideoActivity.kt$PhotoVideoActivity${}
+ EmptyFunctionBlock:RotateTransformation.kt$RotateTransformation${}
+ EmptyFunctionBlock:SearchActivity.kt$SearchActivity${}
+ EmptyFunctionBlock:VideoFragment.kt$VideoFragment${}
+ EmptyFunctionBlock:VideoPlayerActivity.kt$VideoPlayerActivity${}
+ EmptyFunctionBlock:ViewPagerActivity.kt$ViewPagerActivity${}
+ EmptyFunctionBlock:ViewPagerActivity.kt$ViewPagerActivity.<no name provided>${}
+ ForbiddenComment:Context.kt$// TODO: animate JXL
+ ForbiddenComment:PhotoFragment.kt$PhotoFragment$// TODO: Implement panorama using a FOSS library
+ ForbiddenComment:PhotoFragment.kt$PhotoFragment.<no name provided>$// TODO: Implement panorama using a FOSS library
+ ForbiddenComment:VideoFragment.kt$VideoFragment$// checkIfPanorama() TODO: Implement panorama using a FOSS library
+ ImplicitDefaultLocale:PlaybackSpeedFragment.kt$PlaybackSpeedFragment$String.format("%.2f", value)
+ InstanceOfCheckForException:Activity.kt$e !is IOException
+ LargeClass:DirectoryAdapter.kt$DirectoryAdapter : MyRecyclerViewAdapterItemTouchHelperContractOnPopupTextUpdate
+ LargeClass:EditActivity.kt$EditActivity : SimpleActivityOnCropImageCompleteListener
+ LargeClass:MainActivity.kt$MainActivity : SimpleActivityDirectoryOperationsListener
+ LargeClass:MediaActivity.kt$MediaActivity : SimpleActivityMediaOperationsListener
+ LargeClass:MediaFetcher.kt$MediaFetcher
+ LargeClass:PhotoFragment.kt$PhotoFragment : ViewPagerFragment
+ LargeClass:SettingsActivity.kt$SettingsActivity : SimpleActivity
+ LargeClass:VideoFragment.kt$VideoFragment : ViewPagerFragmentSurfaceTextureListenerOnSeekBarChangeListenerPlaybackSpeedListener
+ LargeClass:ViewPagerActivity.kt$ViewPagerActivity : SimpleActivityOnPageChangeListenerFragmentListener
+ LongMethod:Activity.kt$fun AppCompatActivity.fixDateTaken( paths: ArrayList<String>, showToasts: Boolean, hasRescanned: Boolean = false, callback: (() -> Unit)? = null )
+ LongMethod:Activity.kt$fun BaseSimpleActivity.restoreRecycleBinPaths(paths: ArrayList<String>, callback: () -> Unit)
+ LongMethod:Context.kt$@Suppress("UNCHECKED_CAST") fun Context.getSortedDirectories(source: ArrayList<Directory>): ArrayList<Directory>
+ LongMethod:Context.kt$fun Context.getCachedDirectories( getVideosOnly: Boolean = false, getImagesOnly: Boolean = false, forceShowHidden: Boolean = false, forceShowExcluded: Boolean = false, callback: (ArrayList<Directory>) -> Unit, )
+ LongMethod:Context.kt$fun Context.getCachedMedia(path: String, getVideosOnly: Boolean = false, getImagesOnly: Boolean = false, callback: (ArrayList<ThumbnailItem>) -> Unit)
+ LongMethod:DirectoryAdapter.kt$DirectoryAdapter$private fun setupView(view: View, directory: Directory, holder: ViewHolder)
+ LongMethod:EditActivity.kt$EditActivity$private fun updatePrimaryActionButtons()
+ LongMethod:MainActivity.kt$MainActivity$override fun onCreate(savedInstanceState: Bundle?)
+ LongMethod:MainActivity.kt$MainActivity$private fun gotDirectories(newDirs: ArrayList<Directory>)
+ LongMethod:MediaAdapter.kt$MediaAdapter$private fun setupThumbnail(view: View, medium: Medium)
+ LongMethod:MediaFetcher.kt$MediaFetcher$fun getAndroid11FolderMedia( isPickImage: Boolean, isPickVideo: Boolean, favoritePaths: ArrayList<String>, getFavoritePathsOnly: Boolean, getProperDateTaken: Boolean, dateTakens: HashMap<String, Long> ): HashMap<String, ArrayList<Medium>>
+ LongMethod:MediaFetcher.kt$MediaFetcher$private fun getMediaInFolder( folder: String, isPickImage: Boolean, isPickVideo: Boolean, filterMedia: Int, getProperDateTaken: Boolean, getProperLastModified: Boolean, getProperFileSize: Boolean, favoritePaths: ArrayList<String>, getVideoDurations: Boolean, lastModifieds: HashMap<String, Long>, dateTakens: HashMap<String, Long> ): ArrayList<Medium>
+ LongMethod:PhotoFragment.kt$PhotoFragment$override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View
+ LongMethod:PhotoVideoActivity.kt$PhotoVideoActivity$private fun checkIntent(savedInstanceState: Bundle? = null)
+ LongMethod:SettingsActivity.kt$SettingsActivity$private fun parseFile(inputStream: InputStream?)
+ LongMethod:SettingsActivity.kt$SettingsActivity$private fun setupExportSettings()
+ LongMethod:SettingsActivity.kt$SettingsActivity$private fun setupSettingItems()
+ LongMethod:VideoFragment.kt$VideoFragment$override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View
+ LongMethod:VideoPlayerActivity.kt$VideoPlayerActivity$private fun handleEvent(event: MotionEvent)
+ LongMethod:ViewPagerActivity.kt$ViewPagerActivity$private fun initBottomActionButtons()
+ LongMethod:ViewPagerActivity.kt$ViewPagerActivity$private fun initContinue()
+ LongParameterList:Context.kt$( path: String, curMedia: ArrayList<Medium>, albumCovers: ArrayList<AlbumCover>, hiddenString: String, includedFolders: MutableSet<String>, getProperFileSize: Boolean, noMediaFolders: ArrayList<String>, )
+ LongParameterList:Context.kt$( path: String, target: MySquareImageView, cropThumbnails: Boolean, roundCorners: Int, signature: ObjectKey, crossFadeDuration: Int = THUMBNAIL_FADE_DURATION_MS, )
+ LongParameterList:Context.kt$( path: String, target: MySquareImageView, cropThumbnails: Boolean, roundCorners: Int, signature: ObjectKey, skipMemoryCacheAtPaths: ArrayList<String>? = null, animate: Boolean = false, tryLoadingWithPicasso: Boolean = false, crossFadeDuration: Int = THUMBNAIL_FADE_DURATION_MS, onError: (() -> Unit)? = null )
+ LongParameterList:Context.kt$( type: Int, path: String, target: MySquareImageView, horizontalScroll: Boolean, animateGifs: Boolean, cropThumbnails: Boolean, roundCorners: Int, signature: ObjectKey, skipMemoryCacheAtPaths: ArrayList<String>? = null, onError: (() -> Unit)? = null )
+ LongParameterList:Context.kt$(path: String, fc: FileChannel, level: Int, start: Long, end: Long, callback: () -> Unit)
+ LongParameterList:DirectoryAdapter.kt$DirectoryAdapter$( activity: BaseSimpleActivity, var dirs: ArrayList<Directory>, val listener: DirectoryOperationsListener?, recyclerView: MyRecyclerView, val isPickIntent: Boolean, val swipeRefreshLayout: SwipeRefreshLayout? = null, itemClick: (Any) -> Unit )
+ LongParameterList:DirectoryDao.kt$DirectoryDao$(path: String, thumbnail: String, mediaCnt: Int, lastModified: Long, dateTaken: Long, size: Long, mediaTypes: Int, sortValue: String)
+ LongParameterList:MediaAdapter.kt$MediaAdapter$( activity: BaseSimpleActivity, var media: ArrayList<ThumbnailItem>, val listener: MediaOperationsListener?, val isAGetIntent: Boolean, val allowMultiplePicks: Boolean, val path: String, recyclerView: MyRecyclerView, itemClick: (Any) -> Unit )
+ LongParameterList:MediaFetcher.kt$MediaFetcher$( curPath: String, isPickImage: Boolean, isPickVideo: Boolean, getProperDateTaken: Boolean, getProperLastModified: Boolean, getProperFileSize: Boolean, favoritePaths: ArrayList<String>, getVideoDurations: Boolean, lastModifieds: HashMap<String, Long>, dateTakens: HashMap<String, Long>, android11Files: HashMap<String, ArrayList<Medium>>? )
+ LongParameterList:MediaFetcher.kt$MediaFetcher$( folder: String, isPickImage: Boolean, isPickVideo: Boolean, filterMedia: Int, favoritePaths: ArrayList<String>, getVideoDurations: Boolean )
+ LongParameterList:MediaFetcher.kt$MediaFetcher$( folder: String, isPickImage: Boolean, isPickVideo: Boolean, filterMedia: Int, getProperDateTaken: Boolean, getProperLastModified: Boolean, getProperFileSize: Boolean, favoritePaths: ArrayList<String>, getVideoDurations: Boolean, lastModifieds: HashMap<String, Long>, dateTakens: HashMap<String, Long> )
+ LongParameterList:MediaFetcher.kt$MediaFetcher$( isPickImage: Boolean, isPickVideo: Boolean, favoritePaths: ArrayList<String>, getFavoritePathsOnly: Boolean, getProperDateTaken: Boolean, dateTakens: HashMap<String, Long> )
+ LongParameterList:MediaSideScroll.kt$MediaSideScroll$( activity: Activity, slideInfoView: TextView, isBrightness: Boolean, parentView: ViewGroup?, singleTap: (x: Float, y: Float) -> Unit, doubleTap: ((x: Float, y: Float) -> Unit)? = null )
+ LongParameterList:PickDirectoryDialog.kt$PickDirectoryDialog$( val activity: BaseSimpleActivity, val sourcePath: String, showOtherFolderButton: Boolean, val showFavoritesBin: Boolean, val isPickingCopyMoveDestination: Boolean, val isPickingFolderForWidget: Boolean, val callback: (path: String) -> Unit )
+ LoopWithTooManyJumpStatements:Activity.kt$for
+ LoopWithTooManyJumpStatements:Context.kt$for
+ LoopWithTooManyJumpStatements:MediaFetcher.kt$MediaFetcher$for
+ LoopWithTooManyJumpStatements:String.kt$for
+ LoopWithTooManyJumpStatements:String.kt$while
+ MagicNumber:Activity.kt$10
+ MagicNumber:Activity.kt$1000
+ MagicNumber:Activity.kt$11
+ MagicNumber:Activity.kt$360
+ MagicNumber:Activity.kt$4
+ MagicNumber:Activity.kt$5
+ MagicNumber:Activity.kt$50
+ MagicNumber:Activity.kt$90
+ MagicNumber:ChangeFileThumbnailStyleDialog.kt$ChangeFileThumbnailStyleDialog$16
+ MagicNumber:ChangeFileThumbnailStyleDialog.kt$ChangeFileThumbnailStyleDialog$32
+ MagicNumber:ChangeFileThumbnailStyleDialog.kt$ChangeFileThumbnailStyleDialog$4
+ MagicNumber:ChangeFileThumbnailStyleDialog.kt$ChangeFileThumbnailStyleDialog$64
+ MagicNumber:ChangeFileThumbnailStyleDialog.kt$ChangeFileThumbnailStyleDialog$8
+ MagicNumber:ChangeFolderThumbnailStyleDialog.kt$ChangeFolderThumbnailStyleDialog$36
+ MagicNumber:Config.kt$Config$0.05f
+ MagicNumber:Config.kt$Config$0.5f
+ MagicNumber:Config.kt$Config$50
+ MagicNumber:Context.kt$1000L
+ MagicNumber:Context.kt$1024
+ MagicNumber:Context.kt$50
+ MagicNumber:Context.kt$8
+ MagicNumber:EditActivity.kt$EditActivity$0.03f
+ MagicNumber:EditActivity.kt$EditActivity$100
+ MagicNumber:EditActivity.kt$EditActivity$100f
+ MagicNumber:EditActivity.kt$EditActivity$16f
+ MagicNumber:EditActivity.kt$EditActivity$180
+ MagicNumber:EditActivity.kt$EditActivity$3f
+ MagicNumber:EditActivity.kt$EditActivity$4f
+ MagicNumber:EditActivity.kt$EditActivity$90
+ MagicNumber:EditActivity.kt$EditActivity$9f
+ MagicNumber:EditorDrawCanvas.kt$EditorDrawCanvas$100f
+ MagicNumber:EditorDrawCanvas.kt$EditorDrawCanvas$40f
+ MagicNumber:FilterThumbnailsManager.kt$FilterThumbnailsManager$10
+ MagicNumber:GalleryDatabase.kt$GalleryDatabase.Companion.<no name provided>$10
+ MagicNumber:GalleryDatabase.kt$GalleryDatabase.Companion.<no name provided>$4
+ MagicNumber:GalleryDatabase.kt$GalleryDatabase.Companion.<no name provided>$5
+ MagicNumber:GalleryDatabase.kt$GalleryDatabase.Companion.<no name provided>$6
+ MagicNumber:GalleryDatabase.kt$GalleryDatabase.Companion.<no name provided>$7
+ MagicNumber:GalleryDatabase.kt$GalleryDatabase.Companion.<no name provided>$8
+ MagicNumber:GalleryDatabase.kt$GalleryDatabase.Companion.<no name provided>$9
+ MagicNumber:IsoTypeReader.kt$IsoTypeReader$32
+ MagicNumber:IsoTypeReader.kt$IsoTypeReader$4
+ MagicNumber:MainActivity.kt$MainActivity$1000
+ MagicNumber:MainActivity.kt$MainActivity$30
+ MagicNumber:MainActivity.kt$MainActivity$3000L
+ MagicNumber:MainActivity.kt$MainActivity$50
+ MagicNumber:MainActivity.kt$MainActivity$500
+ MagicNumber:MediaActivity.kt$MediaActivity$3000L
+ MagicNumber:MediaAdapter.kt$MediaAdapter$180
+ MagicNumber:MediaAdapter.kt$MediaAdapter$270
+ MagicNumber:MediaAdapter.kt$MediaAdapter$90
+ MagicNumber:MediaFetcher.kt$MediaFetcher$10
+ MagicNumber:MediaFetcher.kt$MediaFetcher$1000
+ MagicNumber:MediaSideScroll.kt$MediaSideScroll$100
+ MagicNumber:MediaSideScroll.kt$MediaSideScroll$1000L
+ MagicNumber:MediaSideScroll.kt$MediaSideScroll$100f
+ MagicNumber:MediaSideScroll.kt$MediaSideScroll$2.55
+ MagicNumber:MediaSideScroll.kt$MediaSideScroll$255f
+ MagicNumber:MediaSideScroll.kt$MediaSideScroll$3
+ MagicNumber:MediaSideScroll.kt$MediaSideScroll$70
+ MagicNumber:OtherAspectRatioDialog.kt$OtherAspectRatioDialog$16f
+ MagicNumber:OtherAspectRatioDialog.kt$OtherAspectRatioDialog$19f
+ MagicNumber:OtherAspectRatioDialog.kt$OtherAspectRatioDialog$3f
+ MagicNumber:OtherAspectRatioDialog.kt$OtherAspectRatioDialog$4f
+ MagicNumber:OtherAspectRatioDialog.kt$OtherAspectRatioDialog$5f
+ MagicNumber:OtherAspectRatioDialog.kt$OtherAspectRatioDialog$9f
+ MagicNumber:PhotoFragment.kt$PhotoFragment$0.01
+ MagicNumber:PhotoFragment.kt$PhotoFragment$100
+ MagicNumber:PhotoFragment.kt$PhotoFragment$100L
+ MagicNumber:PhotoFragment.kt$PhotoFragment$10f
+ MagicNumber:PhotoFragment.kt$PhotoFragment$180
+ MagicNumber:PhotoFragment.kt$PhotoFragment$270
+ MagicNumber:PhotoFragment.kt$PhotoFragment$300
+ MagicNumber:PhotoFragment.kt$PhotoFragment$360
+ MagicNumber:PhotoFragment.kt$PhotoFragment$400
+ MagicNumber:PhotoFragment.kt$PhotoFragment$4096
+ MagicNumber:PhotoFragment.kt$PhotoFragment$50
+ MagicNumber:PhotoFragment.kt$PhotoFragment$7
+ MagicNumber:PhotoFragment.kt$PhotoFragment$90
+ MagicNumber:PhotoFragment.kt$PhotoFragment.<no name provided>$270
+ MagicNumber:PhotoFragment.kt$PhotoFragment.<no name provided>$360
+ MagicNumber:PhotoFragment.kt$PhotoFragment.<no name provided>$90
+ MagicNumber:PlaybackSpeedFragment.kt$PlaybackSpeedFragment$0.05f
+ MagicNumber:PlaybackSpeedFragment.kt$PlaybackSpeedFragment$0.25f
+ MagicNumber:PlaybackSpeedFragment.kt$PlaybackSpeedFragment$100
+ MagicNumber:PlaybackSpeedFragment.kt$PlaybackSpeedFragment$3f
+ MagicNumber:ResizeMultipleImagesDialog.kt$ResizeMultipleImagesDialog$0.6f
+ MagicNumber:ResizeMultipleImagesDialog.kt$ResizeMultipleImagesDialog$10
+ MagicNumber:ResizeMultipleImagesDialog.kt$ResizeMultipleImagesDialog$100
+ MagicNumber:ResizeMultipleImagesDialog.kt$ResizeMultipleImagesDialog$90
+ MagicNumber:SetWallpaperActivity.kt$SetWallpaperActivity$90
+ MagicNumber:VideoFragment.kt$VideoFragment$1000
+ MagicNumber:VideoFragment.kt$VideoFragment$1000L
+ MagicNumber:VideoFragment.kt$VideoFragment$1000f
+ MagicNumber:VideoFragment.kt$VideoFragment$7
+ MagicNumber:VideoFragment.kt$VideoFragment.<no name provided>$1000
+ MagicNumber:VideoFragment.kt$VideoFragment.<no name provided>$7
+ MagicNumber:VideoPlayerActivity.kt$VideoPlayerActivity$0.5
+ MagicNumber:VideoPlayerActivity.kt$VideoPlayerActivity$0.8
+ MagicNumber:VideoPlayerActivity.kt$VideoPlayerActivity$100
+ MagicNumber:VideoPlayerActivity.kt$VideoPlayerActivity$1000
+ MagicNumber:VideoPlayerActivity.kt$VideoPlayerActivity$1000L
+ MagicNumber:VideoPlayerActivity.kt$VideoPlayerActivity$1000f
+ MagicNumber:VideoPlayerActivity.kt$VideoPlayerActivity$100L
+ MagicNumber:VideoPlayerActivity.kt$VideoPlayerActivity$100f
+ MagicNumber:VideoPlayerActivity.kt$VideoPlayerActivity$7
+ MagicNumber:VideoPlayerActivity.kt$VideoPlayerActivity.<no name provided>$1000
+ MagicNumber:ViewPagerActivity.kt$ViewPagerActivity$1000L
+ MagicNumber:ViewPagerActivity.kt$ViewPagerActivity$180
+ MagicNumber:ViewPagerActivity.kt$ViewPagerActivity$5
+ MagicNumber:ViewPagerActivity.kt$ViewPagerActivity$90
+ MagicNumber:ViewPagerFragment.kt$ViewPagerFragment$1000L
+ MagicNumber:ViewPagerFragment.kt$ViewPagerFragment$100f
+ MagicNumber:WidgetConfigureActivity.kt$WidgetConfigureActivity$100
+ MagicNumber:WidgetConfigureActivity.kt$WidgetConfigureActivity$100f
+ MagicNumber:WidgetConfigureActivity.kt$WidgetConfigureActivity$255f
+ MaxLineLength:Activity.kt$LICENSE_PICASSO
+ MaxLineLength:Activity.kt$copyMoveFilesTo(fileDirItems, source.trimEnd('/'), destination, isCopyOperation, true, config.shouldShowHidden, callback)
+ MaxLineLength:Activity.kt$faqItems.add(0, FAQItem(R.string.faq_16_title, "${getString(R.string.faq_16_text)} ${getString(R.string.faq_16_text_extra)}"))
+ MaxLineLength:Activity.kt$faqItems.add(FAQItem(org.fossify.commons.R.string.faq_10_title_commons, org.fossify.commons.R.string.faq_10_text_commons))
+ MaxLineLength:Activity.kt$faqItems.add(FAQItem(org.fossify.commons.R.string.faq_2_title_commons, org.fossify.commons.R.string.faq_2_text_commons))
+ MaxLineLength:Activity.kt$faqItems.add(FAQItem(org.fossify.commons.R.string.faq_6_title_commons, org.fossify.commons.R.string.faq_6_text_commons))
+ MaxLineLength:Activity.kt$faqItems.add(FAQItem(org.fossify.commons.R.string.faq_7_title_commons, org.fossify.commons.R.string.faq_7_text_commons))
+ MaxLineLength:Activity.kt$fun
+ MaxLineLength:Activity.kt$mediaDB.updateDeleted(destination.removePrefix(recycleBinPath), 0, "$RECYCLE_BIN${source.removePrefix(recycleBinPath)}")
+ MaxLineLength:Activity.kt$return (realDisplayMetrics.widthPixels - displayMetrics.widthPixels > 0) || (realDisplayMetrics.heightPixels - displayMetrics.heightPixels > 0)
+ MaxLineLength:Activity.kt$toast(if (didUpdateFile) R.string.dates_fixed_successfully else org.fossify.commons.R.string.unknown_error_occurred)
+ MaxLineLength:Activity.kt$val
+ MaxLineLength:Activity.kt$}
+ MaxLineLength:AllFilesPermissionDialog.kt$AllFilesPermissionDialog$val activity: BaseSimpleActivity
+ MaxLineLength:ChangeFileThumbnailStyleDialog.kt$ChangeFileThumbnailStyleDialog$dialogFileStyleShowThumbnailFileTypesHolder.setOnClickListener { dialogFileStyleShowThumbnailFileTypes.toggle() }
+ MaxLineLength:ChangeFileThumbnailStyleDialog.kt$ChangeFileThumbnailStyleDialog$dialogFileStyleShowThumbnailVideoDurationHolder.setOnClickListener { dialogFileStyleShowThumbnailVideoDuration.toggle() }
+ MaxLineLength:ChangeFolderThumbnailStyleDialog.kt$ChangeFolderThumbnailStyleDialog$class
+ MaxLineLength:ChangeFolderThumbnailStyleDialog.kt$ChangeFolderThumbnailStyleDialog$val cornerRadius = root.resources.getDimension(org.fossify.commons.R.dimen.rounded_corner_radius_big).toInt()
+ MaxLineLength:ChangeFolderThumbnailStyleDialog.kt$ChangeFolderThumbnailStyleDialog$val useRoundedCornersLayout = binding.dialogRadioFolderStyle.checkedRadioButtonId == R.id.dialog_radio_folder_rounded_corners
+ MaxLineLength:ChangeSortingDialog.kt$ChangeSortingDialog$binding.sortingDialogOrderDivider.beVisibleIf(binding.sortingDialogNumericSorting.isVisible() || binding.sortingDialogUseForThisFolder.isVisible())
+ MaxLineLength:ChangeSortingDialog.kt$ChangeSortingDialog$sortingDialogNumericSorting.beVisibleIf(showFolderCheckbox && (currSorting and SORT_BY_NAME != 0 || currSorting and SORT_BY_PATH != 0))
+ MaxLineLength:ChangeSortingDialog.kt$ChangeSortingDialog$sortingDialogOrderDivider.beVisibleIf(showFolderCheckbox || (currSorting and SORT_BY_NAME != 0 || currSorting and SORT_BY_PATH != 0))
+ MaxLineLength:ChangeSortingDialog.kt$ChangeSortingDialog$val hideSortOrder = checkedId == binding.sortingDialogRadioCustom.id || checkedId == binding.sortingDialogRadioRandom.id
+ MaxLineLength:ChangeSortingDialog.kt$ChangeSortingDialog$val isSortingByNameOrPath = checkedId == binding.sortingDialogRadioName.id || checkedId == binding.sortingDialogRadioPath.id
+ MaxLineLength:ChangeViewTypeDialog.kt$ChangeViewTypeDialog$class
+ MaxLineLength:ChangeViewTypeDialog.kt$ChangeViewTypeDialog$val
+ MaxLineLength:Config.kt$Config$fun getFolderViewType(path: String)
+ MaxLineLength:Config.kt$Config$fun getLastVideoPosition(path: String)
+ MaxLineLength:Config.kt$Config$set(allowRotatingWithGestures) = prefs.edit().putBoolean(ALLOW_ROTATING_WITH_GESTURES, allowRotatingWithGestures).apply()
+ MaxLineLength:Config.kt$Config$set(avoidShowingAllFilesPrompt) = prefs.edit().putBoolean(AVOID_SHOWING_ALL_FILES_PROMPT, avoidShowingAllFilesPrompt).apply()
+ MaxLineLength:Config.kt$Config$set(excludedFolders) = prefs.edit().remove(EXCLUDED_FOLDERS).putStringSet(EXCLUDED_FOLDERS, excludedFolders).apply()
+ MaxLineLength:Config.kt$Config$set(includedFolders) = prefs.edit().remove(INCLUDED_FOLDERS).putStringSet(INCLUDED_FOLDERS, includedFolders).apply()
+ MaxLineLength:Config.kt$Config$set(isExcludedPasswordProtectionOn) = prefs.edit().putBoolean(EXCLUDED_PASSWORD_PROTECTION, isExcludedPasswordProtectionOn).apply()
+ MaxLineLength:Config.kt$Config$set(lastEditorCropAspectRatio) = prefs.edit().putInt(LAST_EDITOR_CROP_ASPECT_RATIO, lastEditorCropAspectRatio).apply()
+ MaxLineLength:Config.kt$Config$set(lastEditorCropOtherAspectRatioX) = prefs.edit().putFloat(LAST_EDITOR_CROP_OTHER_ASPECT_RATIO_X, lastEditorCropOtherAspectRatioX).apply()
+ MaxLineLength:Config.kt$Config$set(lastEditorCropOtherAspectRatioY) = prefs.edit().putFloat(LAST_EDITOR_CROP_OTHER_ASPECT_RATIO_Y, lastEditorCropOtherAspectRatioY).apply()
+ MaxLineLength:Config.kt$Config$set(lastExportedFavoritesFolder) = prefs.edit().putString(LAST_EXPORTED_FAVORITES_FOLDER, lastExportedFavoritesFolder).apply()
+ MaxLineLength:Config.kt$Config$set(openVideosOnSeparateScreen) = prefs.edit().putBoolean(OPEN_VIDEOS_ON_SEPARATE_SCREEN, openVideosOnSeparateScreen).apply()
+ MaxLineLength:Config.kt$Config$set(searchAllFilesByDefault) = prefs.edit().putBoolean(SEARCH_ALL_FILES_BY_DEFAULT, searchAllFilesByDefault).apply()
+ MaxLineLength:Config.kt$Config$set(showPermissionRationale) = prefs.edit().putBoolean(SHOW_PERMISSION_RATIONALE, showPermissionRationale).apply()
+ MaxLineLength:Config.kt$Config$set(showRecycleBinAtFolders) = prefs.edit().putBoolean(SHOW_RECYCLE_BIN_AT_FOLDERS, showRecycleBinAtFolders).apply()
+ MaxLineLength:Config.kt$Config$set(showThumbnailVideoDuration) = prefs.edit().putBoolean(SHOW_THUMBNAIL_VIDEO_DURATION, showThumbnailVideoDuration).apply()
+ MaxLineLength:Config.kt$Config$set(tempSkipDeleteConfirmation) = prefs.edit().putBoolean(TEMP_SKIP_DELETE_CONFIRMATION, tempSkipDeleteConfirmation).apply()
+ MaxLineLength:Config.kt$Config$set(temporarilyShowExcluded) = prefs.edit().putBoolean(TEMPORARILY_SHOW_EXCLUDED, temporarilyShowExcluded).apply()
+ MaxLineLength:Constants.kt$const val DEFAULT_BOTTOM_ACTIONS = BOTTOM_ACTION_TOGGLE_FAVORITE or BOTTOM_ACTION_EDIT or BOTTOM_ACTION_SHARE or BOTTOM_ACTION_DELETE
+ MaxLineLength:Context.kt$// but /storage/emulated/0/Pictures is empty, still Pictures with the first folders thumbnails and proper other info
+ MaxLineLength:Context.kt$<no name provided>$override
+ MaxLineLength:Context.kt$AlphanumericComparator().compare(o1.sortValue.lowercase(Locale.getDefault()), o2.sortValue.lowercase(Locale.getDefault()))
+ MaxLineLength:Context.kt$GetMediaAsynctask
+ MaxLineLength:Context.kt$MultiTransformation(WebpDrawableTransformation(CenterCrop()), WebpDrawableTransformation(roundedCornersTransform))
+ MaxLineLength:Context.kt$allDirs.firstOrNull { parentDirs.firstOrNull { it.path.equals(currentPathPrefix, true) } == null && it.path.equals(currentPathPrefix, true) }
+ MaxLineLength:Context.kt$dirsToCheck.filter { !it.areFavorites() && !it.isRecycleBin() && !getDoesFilePathExist(it.path, OTGPath) && it.path != config.tempFolderPath }
+ MaxLineLength:Context.kt$fun
+ MaxLineLength:Context.kt$if
+ MaxLineLength:Context.kt$if (roundCorners == ROUNDED_CORNERS_SMALL) org.fossify.commons.R.dimen.rounded_corner_radius_small else org.fossify.commons.R.dimen.rounded_corner_radius_big
+ MaxLineLength:Context.kt$it.path
+ MaxLineLength:Context.kt$null
+ MaxLineLength:Context.kt$o1.sortValue.normalizeString().lowercase(Locale.getDefault()).compareTo(o2.sortValue.normalizeString().lowercase(Locale.getDefault()))
+ MaxLineLength:Context.kt$return
+ MaxLineLength:Context.kt$return Directory(null, path, thumbnail!!, dirName, curMedia.size, lastModified, dateTaken, size, getPathLocation(path), mediaTypes, sortValue)
+ MaxLineLength:Context.kt$sorting and SORT_BY_DATE_MODIFIED != 0 -> (o1.sortValue.toLongOrNull() ?: 0).compareTo(o2.sortValue.toLongOrNull() ?: 0)
+ MaxLineLength:Context.kt$sorting and SORT_BY_SIZE != 0 -> (o1.sortValue.toLongOrNull() ?: 0).compareTo(o2.sortValue.toLongOrNull() ?: 0)
+ MaxLineLength:Context.kt$val
+ MaxLineLength:Context.kt$val dateTaken = if (isSortingAscending) Math.min(firstItem.taken, lastItem.taken) else Math.max(firstItem.taken, lastItem.taken)
+ MaxLineLength:Context.kt$val directory = createDirectoryFromMedia(path, curMedia, albumCovers, hiddenString, includedFolders, getProperFileSize, noMediaFolders)
+ MaxLineLength:Context.kt$val lastModified = if (isSortingAscending) Math.min(firstItem.modified, lastItem.modified) else Math.max(firstItem.modified, lastItem.modified)
+ MaxLineLength:Context.kt$val newFolder = Directory(null, tempFolderPath, "", tempFolderPath.getFilenameFromPath(), 0, 0, 0, 0L, getPathLocation(tempFolderPath), 0, "")
+ MaxLineLength:Context.kt$}
+ MaxLineLength:CustomAspectRatioDialog.kt$CustomAspectRatioDialog$val activity: BaseSimpleActivity
+ MaxLineLength:DateTakensDao.kt$DateTakensDao$@Query("SELECT full_path, filename, parent_path, date_taken, last_fixed, last_modified FROM date_takens WHERE parent_path = :path COLLATE NOCASE")
+ MaxLineLength:DirectoryAdapter.kt$DirectoryAdapter$(!isRPlus() || isExternalStorageManager()) && selectedPaths.any { !it.doesThisOrParentHaveNoMedia(HashMap(), null) }
+ MaxLineLength:DirectoryAdapter.kt$DirectoryAdapter$(!isRPlus() || isExternalStorageManager()) && selectedPaths.any { it.doesThisOrParentHaveNoMedia(HashMap(), null) }
+ MaxLineLength:DirectoryAdapter.kt$DirectoryAdapter$MyRecyclerViewAdapter(activity, recyclerView, itemClick), ItemTouchHelperContract, RecyclerViewFastScroller.OnPopupTextUpdate
+ MaxLineLength:DirectoryAdapter.kt$DirectoryAdapter$activity.directoryDB.updateDirectoryAfterRename(firstDir.tmb, firstDir.name, firstDir.path, sourcePath)
+ MaxLineLength:DirectoryAdapter.kt$DirectoryAdapter$activity: BaseSimpleActivity
+ MaxLineLength:DirectoryAdapter.kt$DirectoryAdapter$dirLocation.setImageResource(if (directory.location == LOCATION_SD) org.fossify.commons.R.drawable.ic_sd_card_vector else org.fossify.commons.R.drawable.ic_usb_vector)
+ MaxLineLength:DirectoryAdapter.kt$DirectoryAdapter$dirThumbnail.setImageDrawable(AppCompatResources.getDrawable(activity, R.drawable.ic_vector_warning_colored))
+ MaxLineLength:DirectoryAdapter.kt$DirectoryAdapter$findItem(R.id.cab_empty_disable_recycle_bin).isVisible = isOneItemSelected && selectedPaths.first() == RECYCLE_BIN
+ MaxLineLength:DirectoryAdapter.kt$DirectoryAdapter$findItem(R.id.cab_rename).isVisible = !selectedPaths.contains(FAVORITES) && !selectedPaths.contains(RECYCLE_BIN)
+ MaxLineLength:DirectoryAdapter.kt$DirectoryAdapter$override fun onChange(position: Int)
+ MaxLineLength:DirectoryAdapter.kt$DirectoryAdapter$paths.filter { config.isFolderProtected(it) && config.getFolderProtectionType(it) == tabToShow && config.getFolderProtectionHash(it) == hashToCheck }
+ MaxLineLength:DirectoryAdapter.kt$DirectoryAdapter$private
+ MaxLineLength:DirectoryAdapter.kt$DirectoryAdapter$private fun getAlbumCoversWithout(path: String)
+ MaxLineLength:DirectoryAdapter.kt$DirectoryAdapter$selectedPaths.filter { it != FAVORITES && it != RECYCLE_BIN && (selectedPaths.size == 1 || !config.isFolderProtected(it)) }
+ MaxLineLength:DirectoryAdapter.kt$DirectoryAdapter$val
+ MaxLineLength:DirectoryAdapter.kt$DirectoryAdapter$val paths = getSelectedPaths().filter { !activity.isAStorageRootFolder(it) && !config.isFolderProtected(it) } as ArrayList<String>
+ MaxLineLength:DirectoryAdapter.kt$DirectoryAdapter$val removeDir = directory.path.doesThisOrParentHaveNoMedia(HashMap(), null) && !includedFolders.contains(directory.path)
+ MaxLineLength:DirectoryAdapter.kt$DirectoryAdapter$val warning = resources.getQuantityString(org.fossify.commons.R.plurals.delete_warning, itemsCnt, itemsCnt)
+ MaxLineLength:DirectoryDao.kt$DirectoryDao$@Query("SELECT path, thumbnail, filename, media_count, last_modified, date_taken, size, location, media_types, sort_value FROM directories")
+ MaxLineLength:DirectoryDao.kt$DirectoryDao$@Query("UPDATE OR REPLACE directories SET thumbnail = :thumbnail, media_count = :mediaCnt, last_modified = :lastModified, date_taken = :dateTaken, size = :size, media_types = :mediaTypes, sort_value = :sortValue WHERE path = :path COLLATE NOCASE")
+ MaxLineLength:DirectoryDao.kt$DirectoryDao$@Query("UPDATE directories SET thumbnail = :thumbnail, filename = :name, path = :newPath WHERE path = :oldPath COLLATE NOCASE")
+ MaxLineLength:DirectoryDao.kt$DirectoryDao$fun
+ MaxLineLength:DirectoryItemBinding.kt$GridDirectoryItemRoundedCornersBinding$class
+ MaxLineLength:EditActivity.kt$EditActivity$(binding.bottomEditorCropRotateActions.root.layoutParams as RelativeLayout.LayoutParams).addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, 1)
+ MaxLineLength:EditActivity.kt$EditActivity$binding.bottomEditorDrawActions.bottomDrawWidth.setColors(getProperTextColor(), getProperPrimaryColor(), getProperBackgroundColor())
+ MaxLineLength:EditActivity.kt$EditActivity$if
+ MaxLineLength:EditActivity.kt$EditActivity$if (intent.extras?.containsKey(REAL_FILE_PATH) == true) intent.getStringExtra(REAL_FILE_PATH)?.getParentPath() else internalStoragePath
+ MaxLineLength:EditActivity.kt$EditActivity$intent.extras?.containsKey(MediaStore.EXTRA_OUTPUT) == true && intent.extras!!.get(MediaStore.EXTRA_OUTPUT) is Uri -> intent.extras!!.get(MediaStore.EXTRA_OUTPUT) as Uri
+ MaxLineLength:EditActivity.kt$EditActivity$newPath = "$internalStoragePath/${getCurrentFormattedDateTime()}.${saveUri.toString().getFilenameExtension()}"
+ MaxLineLength:EditActivity.kt$EditActivity$private fun getFiltersAdapter()
+ MaxLineLength:EditActivity.kt$EditActivity$val layoutManager = binding.bottomEditorFilterActions.bottomActionsFilterList.layoutManager as LinearLayoutManager
+ MaxLineLength:EditActivity.kt$EditActivity$val originalBitmap = Glide.with(applicationContext).asBitmap().load(uri).submit(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL).get()
+ MaxLineLength:EditActivity.kt$EditActivity$}
+ MaxLineLength:EditActivity.kt$EditActivity.<no name provided>$if
+ MaxLineLength:EditActivity.kt$EditActivity.<no name provided>$override
+ MaxLineLength:ExcludeFolderDialog.kt$ExcludeFolderDialog$radioGroup!!.addView(radioButton, RadioGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT))
+ MaxLineLength:ExcludeFolderDialog.kt$ExcludeFolderDialog$val path = if (alternativePaths.isEmpty()) selectedPaths[0] else alternativePaths[radioGroup!!.checkedRadioButtonId]
+ MaxLineLength:ExcludedFoldersActivity.kt$ExcludedFoldersActivity$updateMaterialActivityViews(binding.manageFoldersCoordinator, binding.manageFoldersList, useTransparentNavigation = true, useTopSearchMenu = false)
+ MaxLineLength:FavoritesDao.kt$FavoritesDao$@Query("SELECT favorites.full_path FROM favorites INNER JOIN media ON favorites.full_path = media.full_path WHERE media.deleted_ts = 0")
+ MaxLineLength:FavoritesDao.kt$FavoritesDao$@Query("UPDATE OR REPLACE favorites SET filename = :newFilename, full_path = :newFullPath, parent_path = :newParentPath WHERE full_path = :oldPath COLLATE NOCASE")
+ MaxLineLength:GalleryDatabase.kt$GalleryDatabase.Companion.<no name provided>$database.execSQL("CREATE TABLE IF NOT EXISTS `date_takens` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `full_path` TEXT NOT NULL, `filename` TEXT NOT NULL, `parent_path` TEXT NOT NULL, `date_taken` INTEGER NOT NULL, `last_fixed` INTEGER NOT NULL)")
+ MaxLineLength:GalleryDatabase.kt$GalleryDatabase.Companion.<no name provided>$database.execSQL("CREATE TABLE IF NOT EXISTS `favorites` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `full_path` TEXT NOT NULL, `filename` TEXT NOT NULL, `parent_path` TEXT NOT NULL)")
+ MaxLineLength:GalleryDatabase.kt$GalleryDatabase.Companion.<no name provided>$database.execSQL("CREATE TABLE IF NOT EXISTS `widgets` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `widget_id` INTEGER NOT NULL, `folder_path` TEXT NOT NULL)")
+ MaxLineLength:GetMediaAsynctask.kt$GetMediaAsynctask$mPath
+ MaxLineLength:GetMediaAsynctask.kt$GetMediaAsynctask$val foldersToScan = mediaFetcher.getFoldersToScan().filter { it != RECYCLE_BIN && it != FAVORITES && !context.config.isFolderProtected(it) }
+ MaxLineLength:GrantAllFilesDialog.kt$GrantAllFilesDialog$.
+ MaxLineLength:GridSpacingItemDecoration.kt$GridSpacingItemDecoration$override
+ MaxLineLength:HiddenFoldersActivity.kt$HiddenFoldersActivity$updateMaterialActivityViews(binding.manageFoldersCoordinator, binding.manageFoldersList, useTransparentNavigation = true, useTopSearchMenu = false)
+ MaxLineLength:IncludedFoldersActivity.kt$IncludedFoldersActivity$updateMaterialActivityViews(binding.manageFoldersCoordinator, binding.manageFoldersList, useTransparentNavigation = true, useTopSearchMenu = false)
+ MaxLineLength:InstantItemSwitch.kt$InstantItemSwitch$if
+ MaxLineLength:MainActivity.kt$MainActivity$(binding.directoriesRefreshLayout.layoutParams as RelativeLayout.LayoutParams).addRule(RelativeLayout.BELOW, R.id.directories_switch_searching)
+ MaxLineLength:MainActivity.kt$MainActivity$// exclude probably unwanted folders, for example facebook stickers are split between hundreds of separate folders like
+ MaxLineLength:MainActivity.kt$MainActivity$// recyclerview sometimes becomes empty at init/update, triggering an invisible refresh like this seems to work fine
+ MaxLineLength:MainActivity.kt$MainActivity$// update directories and media files in the local db, delete invalid items. Intentionally creating a new thread
+ MaxLineLength:MainActivity.kt$MainActivity$// we are looping through the already displayed folders looking for changes, do not do anything if nothing changed
+ MaxLineLength:MainActivity.kt$MainActivity$binding.directoriesRefreshLayout.layoutParams = RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
+ MaxLineLength:MainActivity.kt$MainActivity$createDirectoryFromMedia(directory.path, curMedia, albumCovers, hiddenString, includedFolders, getProperFileSize, noMediaFolders)
+ MaxLineLength:MainActivity.kt$MainActivity$dirsToShow
+ MaxLineLength:MainActivity.kt$MainActivity$findItem(R.id.more_apps_from_us).isVisible = !resources.getBoolean(org.fossify.commons.R.bool.hide_google_relations)
+ MaxLineLength:MainActivity.kt$MainActivity$findItem(R.id.stop_showing_hidden).isVisible = (!isRPlus() || isExternalStorageManager()) && config.temporarilyShowHidden
+ MaxLineLength:MainActivity.kt$MainActivity$folders.asSequence().filter { it.isDirectory }.map { FileDirItem(it.absolutePath, it.name, true) }.toMutableList() as ArrayList<FileDirItem>
+ MaxLineLength:MainActivity.kt$MainActivity$folders.filter { !it.absolutePath.isDownloadsFolder() && it.isDirectory && it.toFileDirItem(this).getProperFileCount(this, true) == 0 }
+ MaxLineLength:MainActivity.kt$MainActivity$getStorageDirectories().firstOrNull { it.trimEnd('/') != internalStoragePath && it.trimEnd('/') != sdCardPath }
+ MaxLineLength:MainActivity.kt$MainActivity$if
+ MaxLineLength:MainActivity.kt$MainActivity$if (config.useRecycleBin && !config.tempSkipRecycleBin) org.fossify.commons.R.plurals.moving_items_into_bin else org.fossify.commons.R.plurals.delete_items
+ MaxLineLength:MainActivity.kt$MainActivity$intent.extras?.containsKey(MediaStore.EXTRA_OUTPUT) == true && intent.flags and Intent.FLAG_GRANT_WRITE_URI_PERMISSION != 0
+ MaxLineLength:MainActivity.kt$MainActivity$mIsThirdPartyIntent
+ MaxLineLength:MainActivity.kt$MainActivity$private
+ MaxLineLength:MainActivity.kt$MainActivity$private fun isImageType(intent: Intent)
+ MaxLineLength:MainActivity.kt$MainActivity$private fun isPickImageIntent(intent: Intent)
+ MaxLineLength:MainActivity.kt$MainActivity$private fun isPickVideoIntent(intent: Intent)
+ MaxLineLength:MainActivity.kt$MainActivity$private fun isVideoType(intent: Intent)
+ MaxLineLength:MainActivity.kt$MainActivity$private var mOpenedSubfolders = arrayListOf("") // used at "Group direct subfolders" for navigating Up with the back button
+ MaxLineLength:MainActivity.kt$MainActivity$resultData.extras?.containsKey(PICKED_PATHS) == true -> fillPickedPaths(resultData, resultIntent)
+ MaxLineLength:MainActivity.kt$MainActivity$toast(String.format(getString(org.fossify.commons.R.string.deleting_folder), config.tempFolderPath), Toast.LENGTH_LONG)
+ MaxLineLength:MainActivity.kt$MainActivity$toast(String.format(getString(org.fossify.commons.R.string.deleting_folder), fileDirItems.first().name))
+ MaxLineLength:MainActivity.kt$MainActivity$val android11Files = mLastMediaFetcher?.getAndroid11FolderMedia(getImagesOnly, getVideosOnly, favoritePaths, false, true, dateTakens)
+ MaxLineLength:MainActivity.kt$MainActivity$val filesToDelete = mediaDB.getOldRecycleBinItems(System.currentTimeMillis() - MONTH_MILLISECONDS)
+ MaxLineLength:MainActivity.kt$MainActivity$val newDir = createDirectoryFromMedia(folder, newMedia, albumCovers, hiddenString, includedFolders, getProperFileSize, noMediaFolders)
+ MaxLineLength:ManageFoldersAdapter.kt$ManageFoldersAdapter$activity: BaseSimpleActivity
+ MaxLineLength:MediaActivity.kt$MediaActivity$binding.mediaRefreshLayout.layoutParams = RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
+ MaxLineLength:MediaActivity.kt$MediaActivity$binding.mediaRefreshLayout.layoutParams = RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT)
+ MaxLineLength:MediaActivity.kt$MediaActivity$findItem(R.id.stop_showing_hidden).isVisible = (!isRPlus() || isExternalStorageManager()) && config.temporarilyShowHidden
+ MaxLineLength:MediaActivity.kt$MediaActivity$this
+ MaxLineLength:MediaActivity.kt$MediaActivity$updateMaterialActivityViews(binding.mediaCoordinator, binding.mediaGrid, useTransparentNavigation = !config.scrollHorizontally, useTopSearchMenu = true)
+ MaxLineLength:MediaActivity.kt$MediaActivity$val deletingItems = resources.getQuantityString(org.fossify.commons.R.plurals.deleting_items, filtered.size, filtered.size)
+ MaxLineLength:MediaActivity.kt$MediaActivity$val movingItems = resources.getQuantityString(org.fossify.commons.R.plurals.moving_items_into_bin, filtered.size, filtered.size)
+ MaxLineLength:MediaActivity.kt$MediaActivity$val newGridDecoration = GridSpacingItemDecoration(spanCount, spacing, config.scrollHorizontally, config.fileRoundedCorners, media, useGridPosition)
+ MaxLineLength:MediaAdapter.kt$MediaAdapter$activity: BaseSimpleActivity
+ MaxLineLength:MediaAdapter.kt$MediaAdapter$findItem(R.id.cab_confirm_selection).isVisible = isAGetIntent && allowMultiplePicks && selectedKeys.isNotEmpty()
+ MaxLineLength:MediaAdapter.kt$MediaAdapter$findItem(R.id.cab_restore_recycle_bin_files).isVisible = selectedPaths.all { it.startsWith(activity.recycleBinPath) }
+ MaxLineLength:MediaAdapter.kt$MediaAdapter$if (config.useRecycleBin && !config.tempSkipRecycleBin && !isRecycleBin) org.fossify.commons.R.string.move_to_recycle_bin_confirmation else org.fossify.commons.R.string.deletion_confirmation
+ MaxLineLength:MediaAdapter.kt$MediaAdapter$mediumThumbnail.setImageDrawable(AppCompatResources.getDrawable(activity, R.drawable.ic_vector_warning_colored))
+ MaxLineLength:MediaAdapter.kt$MediaAdapter$menu.findItem(R.id.cab_add_to_favorites).isVisible = selectedItems.none { it.getIsInRecycleBin() } && selectedItems.any { !it.isFavorite }
+ MaxLineLength:MediaAdapter.kt$MediaAdapter$menu.findItem(R.id.cab_hide).isVisible = (!isRPlus() || isExternalStorageManager()) && !isInRecycleBin && selectedItems.any { !it.isHidden() }
+ MaxLineLength:MediaAdapter.kt$MediaAdapter$menu.findItem(R.id.cab_remove_from_favorites).isVisible = selectedItems.none { it.getIsInRecycleBin() } && selectedItems.any { it.isFavorite }
+ MaxLineLength:MediaAdapter.kt$MediaAdapter$menu.findItem(R.id.cab_unhide).isVisible = (!isRPlus() || isExternalStorageManager()) && !isInRecycleBin && selectedItems.any { it.isHidden() }
+ MaxLineLength:MediaAdapter.kt$MediaAdapter$private fun getItemWithKey(key: Int): Medium?
+ MaxLineLength:MediaAdapter.kt$MediaAdapter$val SAFPath = selectedPaths.firstOrNull { activity.needsStupidWritePermissions(it) } ?: getFirstSelectedItemPath() ?: return
+ MaxLineLength:MediaAdapter.kt$MediaAdapter$val deleteItemsString = resources.getQuantityString(org.fossify.commons.R.plurals.delete_items, itemsCnt, itemsCnt)
+ MaxLineLength:MediaAdapter.kt$MediaAdapter$val isSDOrOtgRootFolder = activity.isAStorageRootFolder(firstPath.getParentPath()) && !firstPath.startsWith(activity.internalStoragePath)
+ MaxLineLength:MediaAdapter.kt$MediaAdapter$val sdk30SAFPath = selectedPaths.firstOrNull { activity.isAccessibleWithSAFSdk30(it) } ?: getFirstSelectedItemPath() ?: return@handleSAFDialog
+ MaxLineLength:MediaFetcher.kt$MediaFetcher$AlphanumericComparator().compare(o1.name.normalizeString().lowercase(Locale.getDefault()), o2.name.normalizeString().lowercase(Locale.getDefault()))
+ MaxLineLength:MediaFetcher.kt$MediaFetcher$AlphanumericComparator().compare(o1.path.lowercase(Locale.getDefault()), o2.path.lowercase(Locale.getDefault()))
+ MaxLineLength:MediaFetcher.kt$MediaFetcher$FAVORITES -> favoritePaths.filter { showHidden || !it.contains("/.") }.map { File(it) }.toMutableList() as ArrayList<File>
+ MaxLineLength:MediaFetcher.kt$MediaFetcher$Medium(null, filename, path, path.getParentPath(), lastModified, dateTaken, size, type, videoDuration, isFavorite, 0L, mediaStoreId)
+ MaxLineLength:MediaFetcher.kt$MediaFetcher$curPath
+ MaxLineLength:MediaFetcher.kt$MediaFetcher$curPath: String
+ MaxLineLength:MediaFetcher.kt$MediaFetcher$favoritePaths
+ MaxLineLength:MediaFetcher.kt$MediaFetcher$file.uri.toString().replaceFirst("${context.config.OTGTreeUri}/document/${context.config.OTGPartition}%3A", "${context.config.OTGPath}/")
+ MaxLineLength:MediaFetcher.kt$MediaFetcher$getAndroid11FolderMedia(isPickImage, isPickVideo, favoritePaths, true, getProperDateTaken, dateTakens.clone() as HashMap<String, Long>)
+ MaxLineLength:MediaFetcher.kt$MediaFetcher$grouping and GROUP_BY_LAST_MODIFIED_DAILY != 0 || grouping and GROUP_BY_DATE_TAKEN_DAILY != 0
+ MaxLineLength:MediaFetcher.kt$MediaFetcher$grouping and GROUP_BY_LAST_MODIFIED_MONTHLY != 0 || grouping and GROUP_BY_DATE_TAKEN_MONTHLY != 0 -> formatDate(key, false)
+ MaxLineLength:MediaFetcher.kt$MediaFetcher$it
+ MaxLineLength:MediaFetcher.kt$MediaFetcher$lastModifieds: HashMap<String, Long>
+ MaxLineLength:MediaFetcher.kt$MediaFetcher$o1.name.normalizeString().lowercase(Locale.getDefault()).compareTo(o2.name.normalizeString().lowercase(Locale.getDefault()))
+ MaxLineLength:MediaFetcher.kt$MediaFetcher$val
+ MaxLineLength:MediaFetcher.kt$MediaFetcher$val cover = portraitFiles.firstOrNull { it.name.contains("cover", true) } ?: portraitFiles.firstOrNull()
+ MaxLineLength:MediaFetcher.kt$MediaFetcher$val files = getAndroid11FolderMedia(isPickImage, isPickVideo, favoritePaths, false, getProperDateTaken, dateTakens)
+ MaxLineLength:MediaFetcher.kt$MediaFetcher$val foldersToScan = config.everShownFolders.filter { it == FAVORITES || it == RECYCLE_BIN || context.getDoesFilePathExist(it, OTGPath) }.toHashSet()
+ MaxLineLength:MediaFetcher.kt$MediaFetcher$val medium = Medium(null, filename, path, file.parent, lastModified, dateTaken, size, type, videoDuration, isFavorite, 0L, 0L)
+ MaxLineLength:MediaFetcher.kt$MediaFetcher$val medium = Medium(null, filename, path, folder, dateModified, dateTaken, size, type, videoDuration, isFavorite, 0L, 0L)
+ MaxLineLength:MediaFetcher.kt$MediaFetcher$val newMedia = getMediaOnOTG(curPath, isPickImage, isPickVideo, filterMedia, favoritePaths, getVideoDurations)
+ MaxLineLength:MediaFetcher.kt$MediaFetcher$val videoDuration = Math.round(cursor.getIntValue(MediaStore.MediaColumns.DURATION) / 1000.toDouble()).toInt()
+ MaxLineLength:MediaSideScroll.kt$MediaSideScroll$activity: Activity
+ MaxLineLength:Medium.kt$Medium$fun isHeic()
+ MaxLineLength:MediumDao.kt$MediumDao$@Query("SELECT filename, full_path, parent_path, last_modified, date_taken, size, type, video_duration, is_favorite, deleted_ts, media_store_id FROM media WHERE deleted_ts != 0")
+ MaxLineLength:MediumDao.kt$MediumDao$@Query("SELECT filename, full_path, parent_path, last_modified, date_taken, size, type, video_duration, is_favorite, deleted_ts, media_store_id FROM media WHERE deleted_ts < :timestmap AND deleted_ts != 0")
+ MaxLineLength:MediumDao.kt$MediumDao$@Query("SELECT filename, full_path, parent_path, last_modified, date_taken, size, type, video_duration, is_favorite, deleted_ts, media_store_id FROM media WHERE deleted_ts = 0 AND is_favorite = 1")
+ MaxLineLength:MediumDao.kt$MediumDao$@Query("SELECT filename, full_path, parent_path, last_modified, date_taken, size, type, video_duration, is_favorite, deleted_ts, media_store_id FROM media WHERE deleted_ts = 0 AND parent_path = :path COLLATE NOCASE")
+ MaxLineLength:MediumDao.kt$MediumDao$@Query("UPDATE OR REPLACE media SET filename = :newFilename, full_path = :newFullPath, parent_path = :newParentPath WHERE full_path = :oldPath COLLATE NOCASE")
+ MaxLineLength:MediumDao.kt$MediumDao$@Query("UPDATE OR REPLACE media SET full_path = :newPath, deleted_ts = :deletedTS WHERE full_path = :oldPath COLLATE NOCASE")
+ MaxLineLength:MyPagerAdapter.kt$MyPagerAdapter$class
+ MaxLineLength:MyWidgetProvider.kt$MyWidgetProvider$override
+ MaxLineLength:MyWidgetProvider.kt$MyWidgetProvider$val pendingIntent = PendingIntent.getActivity(context, widget.widgetId, intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
+ MaxLineLength:NewPhotoFetcher.kt$NewPhotoFetcher$if
+ MaxLineLength:PhotoFragment.kt$PhotoFragment$if
+ MaxLineLength:PhotoFragment.kt$PhotoFragment$mIsFullscreen = requireActivity().window.decorView.systemUiVisibility and View.SYSTEM_UI_FLAG_FULLSCREEN == View.SYSTEM_UI_FLAG_FULLSCREEN
+ MaxLineLength:PhotoFragment.kt$PhotoFragment$orient = exif2.getTag(ExifInterface.TAG_ORIENTATION)?.getValueAsInt(defaultOrientation) ?: defaultOrientation
+ MaxLineLength:PhotoFragment.kt$PhotoFragment$resources.getDimension(R.dimen.portrait_photos_stripe_height).toInt()
+ MaxLineLength:PhotoFragment.kt$PhotoFragment$val actionsHeight = if (requireContext().config.bottomActions && !mIsFullscreen) resources.getDimension(R.dimen.bottom_actions_height) else 0f
+ MaxLineLength:PhotoFragment.kt$PhotoFragment$val imageParser = JpegImageParser().getXmpXml(ByteSourceInputStream(it, mMedium.name), HashMap<String, Any>())
+ MaxLineLength:PhotoFragment.kt$PhotoFragment$var bottomMargin = requireContext().navigationBarHeight + resources.getDimension(org.fossify.commons.R.dimen.normal_margin).toInt()
+ MaxLineLength:PhotoFragment.kt$PhotoFragment$var pathToLoad = if (getFilePathToShow().startsWith("content://")) getFilePathToShow() else "file://${getFilePathToShow()}"
+ MaxLineLength:PhotoFragment.kt$PhotoFragment.<no name provided>$binding.gesturesView.controller.settings.isZoomEnabled = mMedium.isRaw() || mCurrentRotationDegrees != 0 || allowZoomingImages == false
+ MaxLineLength:PhotoFragment.kt$PhotoFragment.<no name provided>$override
+ MaxLineLength:PhotoFragment.kt$PhotoFragment.<no name provided>$setTextColor(if (context.config.blackBackground) Color.WHITE else context.getProperTextColor())
+ MaxLineLength:PhotoFragment.kt$PhotoFragment.<no name provided>$val useHeight = if (mImageOrientation == ORIENTATION_ROTATE_90 || mImageOrientation == ORIENTATION_ROTATE_270) sWidth else sHeight
+ MaxLineLength:PhotoFragment.kt$PhotoFragment.<no name provided>$val useWidth = if (mImageOrientation == ORIENTATION_ROTATE_90 || mImageOrientation == ORIENTATION_ROTATE_270) sHeight else sWidth
+ MaxLineLength:PhotoVideoActivity.kt$PhotoVideoActivity$binding.bottomActions.bottomEdit.beVisibleIf(visibleBottomActions and BOTTOM_ACTION_EDIT != 0 && mMedium?.isImage() == true)
+ MaxLineLength:PhotoVideoActivity.kt$PhotoVideoActivity$binding.bottomActions.bottomSetAs.beVisibleIf(visibleBottomActions and BOTTOM_ACTION_SET_AS != 0 && mMedium?.isImage() == true)
+ MaxLineLength:PhotoVideoActivity.kt$PhotoVideoActivity$binding.bottomActions.root.layoutParams.height = resources.getDimension(R.dimen.bottom_actions_height).toInt() + navigationBarHeight
+ MaxLineLength:PhotoVideoActivity.kt$PhotoVideoActivity$binding.fragmentViewerToolbar.title = Html.fromHtml("<font color='${Color.WHITE.toHex()}'>${mMedium!!.name}</font>")
+ MaxLineLength:PhotoVideoActivity.kt$PhotoVideoActivity$findItem(R.id.menu_edit).isVisible = mMedium?.isImage() == true && mUri?.scheme == "file" && visibleBottomActions and BOTTOM_ACTION_EDIT == 0
+ MaxLineLength:PhotoVideoActivity.kt$PhotoVideoActivity$findItem(R.id.menu_properties).isVisible = mUri?.scheme == "file" && visibleBottomActions and BOTTOM_ACTION_PROPERTIES == 0
+ MaxLineLength:PhotoVideoActivity.kt$PhotoVideoActivity$findItem(R.id.menu_set_as).isVisible = mMedium?.isImage() == true && visibleBottomActions and BOTTOM_ACTION_SET_AS == 0
+ MaxLineLength:PhotoVideoActivity.kt$PhotoVideoActivity$if
+ MaxLineLength:PhotoVideoActivity.kt$PhotoVideoActivity$mMedium = Medium(null, filename, mUri.toString(), mUri!!.path!!.getParentPath(), 0, 0, file.length(), type, 0, false, 0L, 0)
+ MaxLineLength:PhotoVideoActivity.kt$PhotoVideoActivity$navigationIcon = resources.getColoredDrawableWithColor(org.fossify.commons.R.drawable.ic_arrow_left_vector, Color.WHITE)
+ MaxLineLength:PhotoVideoActivity.kt$PhotoVideoActivity$overflowIcon = resources.getColoredDrawableWithColor(org.fossify.commons.R.drawable.ic_three_dots_vector, Color.WHITE)
+ MaxLineLength:PhotoVideoActivity.kt$PhotoVideoActivity$val isFileFolderHidden = (File(realPath).isHidden || File(realPath.getParentPath(), NOMEDIA).exists() || realPath.contains("/."))
+ MaxLineLength:PicassoRegionDecoder.kt$PicassoRegionDecoder$if
+ MaxLineLength:PicassoRegionDecoder.kt$PicassoRegionDecoder$return bitmap ?: throw RuntimeException("Region decoder returned null bitmap - image format may not be supported")
+ MaxLineLength:PickDirectoryDialog.kt$PickDirectoryDialog$activity
+ MaxLineLength:PickDirectoryDialog.kt$PickDirectoryDialog$orientation = if (activity.config.scrollHorizontally && isGridViewType) RecyclerView.HORIZONTAL else RecyclerView.VERTICAL
+ MaxLineLength:PickDirectoryDialog.kt$PickDirectoryDialog$val
+ MaxLineLength:PickDirectoryDialog.kt$PickDirectoryDialog$}
+ MaxLineLength:PickMediumDialog.kt$PickMediumDialog$activity
+ MaxLineLength:PickMediumDialog.kt$PickMediumDialog$orientation = if (config.scrollHorizontally && isGridViewType) RecyclerView.HORIZONTAL else RecyclerView.VERTICAL
+ MaxLineLength:PickMediumDialog.kt$PickMediumDialog$val
+ MaxLineLength:PickMediumDialog.kt$PickMediumDialog$val newGridDecoration = GridSpacingItemDecoration(spanCount, spacing, config.scrollHorizontally, config.fileRoundedCorners, media, useGridPosition)
+ MaxLineLength:PlaybackSpeedFragment.kt$PlaybackSpeedFragment$val background = ResourcesCompat.getDrawable(resources, org.fossify.commons.R.drawable.bottom_sheet_bg, requireContext().theme)
+ MaxLineLength:PortraitPhotosAdapter.kt$PortraitPhotosAdapter$class
+ MaxLineLength:ResizeMultipleImagesDialog.kt$ResizeMultipleImagesDialog$toast(resources.getQuantityString(R.plurals.failed_to_resize_images, failureCount, failureCount))
+ MaxLineLength:ResizeWithPathDialog.kt$ResizeWithPathDialog$class
+ MaxLineLength:ResizeWithPathDialog.kt$ResizeWithPathDialog$val title = String.format(activity.getString(org.fossify.commons.R.string.file_already_exists_overwrite), newFilename)
+ MaxLineLength:SaveAsDialog.kt$SaveAsDialog$val activity: BaseSimpleActivity
+ MaxLineLength:SaveAsDialog.kt$SaveAsDialog$val title = String.format(activity.getString(org.fossify.commons.R.string.file_already_exists_overwrite), newFilename)
+ MaxLineLength:SearchActivity.kt$SearchActivity$binding.searchGrid.layoutParams = RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
+ MaxLineLength:SearchActivity.kt$SearchActivity$binding.searchGrid.layoutParams = RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT)
+ MaxLineLength:SearchActivity.kt$SearchActivity$updateMaterialActivityViews(binding.searchCoordinator, binding.searchGrid, useTransparentNavigation = true, useTopSearchMenu = true)
+ MaxLineLength:SearchActivity.kt$SearchActivity$val decoration = GridSpacingItemDecoration(spanCount, spacing, config.scrollHorizontally, config.fileRoundedCorners, media, true)
+ MaxLineLength:SearchActivity.kt$SearchActivity$val deletingItems = resources.getQuantityString(org.fossify.commons.R.plurals.deleting_items, filtered.size, filtered.size)
+ MaxLineLength:SearchActivity.kt$SearchActivity$val movingItems = resources.getQuantityString(org.fossify.commons.R.plurals.moving_items_into_bin, filtered.size, filtered.size)
+ MaxLineLength:SetWallpaperActivity.kt$SetWallpaperActivity$RadioItem(WallpaperManager.FLAG_SYSTEM or WallpaperManager.FLAG_LOCK, getString(R.string.home_and_lock_screen))
+ MaxLineLength:SettingsActivity.kt$SettingsActivity$"${getString(R.string.manage_included_folders)} (${getString(org.fossify.commons.R.string.no_permission)})"
+ MaxLineLength:SettingsActivity.kt$SettingsActivity$"${getString(org.fossify.commons.R.string.show_hidden_items)} (${getString(org.fossify.commons.R.string.no_permission)})"
+ MaxLineLength:SettingsActivity.kt$SettingsActivity$LAST_EDITOR_CROP_OTHER_ASPECT_RATIO_X -> config.lastEditorCropOtherAspectRatioX = value.toString().toFloat()
+ MaxLineLength:SettingsActivity.kt$SettingsActivity$LAST_EDITOR_CROP_OTHER_ASPECT_RATIO_Y -> config.lastEditorCropOtherAspectRatioY = value.toString().toFloat()
+ MaxLineLength:SettingsActivity.kt$SettingsActivity$binding.settingsExcludedItemPasswordProtectionHolder.beGoneIf(binding.settingsHiddenItemPasswordProtectionHolder.isVisible())
+ MaxLineLength:SettingsActivity.kt$SettingsActivity$binding.settingsUseEnglishHolder.beVisibleIf((config.wasUseEnglishToggled || Locale.getDefault().language != "en") && !isTiramisuPlus())
+ MaxLineLength:SettingsActivity.kt$SettingsActivity$if
+ MaxLineLength:SettingsActivity.kt$SettingsActivity$org.fossify.commons.R.string.fingerprint_setup_successfully
+ MaxLineLength:SettingsActivity.kt$SettingsActivity$toast(if (configValues.size > 0) org.fossify.commons.R.string.settings_imported_successfully else org.fossify.commons.R.string.no_entries_for_importing)
+ MaxLineLength:SettingsActivity.kt$SettingsActivity$toast(if (importedItems > 0) org.fossify.commons.R.string.importing_successful else org.fossify.commons.R.string.no_entries_for_importing)
+ MaxLineLength:SettingsActivity.kt$SettingsActivity$updateMaterialActivityViews(binding.settingsCoordinator, binding.settingsHolder, useTransparentNavigation = true, useTopSearchMenu = false)
+ MaxLineLength:SettingsActivity.kt$SettingsActivity$}
+ MaxLineLength:SlideshowDialog.kt$SlideshowDialog$intervalHint.hint = activity.getString(org.fossify.commons.R.string.seconds_raw).replaceFirstChar { it.uppercaseChar() }
+ MaxLineLength:String.kt$folderNoMediaStatuses.getOrElse("$this/$NOMEDIA") { false } || ((!isRPlus() || isExternalStorageManager()) && File(this, NOMEDIA).exists())
+ MaxLineLength:String.kt$fun String.isDownloadsFolder()
+ MaxLineLength:String.kt$val noMediaExists = folderNoMediaStatuses.getOrElse(pathToCheck, { false }) || File(pathToCheck).exists()
+ MaxLineLength:SvgModule.kt$SvgModule$registry.register(SVG::class.java, PictureDrawable::class.java, SvgDrawableTranscoder()).append(InputStream::class.java, SVG::class.java, SvgDecoder())
+ MaxLineLength:SvgSoftwareLayerSetter.kt$SvgSoftwareLayerSetter$override
+ MaxLineLength:VideoFragment.kt$VideoFragment$.
+ MaxLineLength:VideoFragment.kt$VideoFragment$binding.bottomVideoTimeHolder.videoPlaybackSpeed.text = "${DecimalFormat("#.##").format(mConfig.playbackSpeed)}x"
+ MaxLineLength:VideoFragment.kt$VideoFragment$class
+ MaxLineLength:VideoFragment.kt$VideoFragment$if
+ MaxLineLength:VideoFragment.kt$VideoFragment$mConfig = requireContext().config
+ MaxLineLength:VideoFragment.kt$VideoFragment$mIsFullscreen = activity.window.decorView.systemUiVisibility and View.SYSTEM_UI_FLAG_FULLSCREEN == View.SYSTEM_UI_FLAG_FULLSCREEN
+ MaxLineLength:VideoFragment.kt$VideoFragment$val drawableId = if (isSlow) R.drawable.ic_playback_speed_slow_vector else R.drawable.ic_playback_speed_vector
+ MaxLineLength:VideoPlayerActivity.kt$VideoPlayerActivity$.
+ MaxLineLength:VideoPlayerActivity.kt$VideoPlayerActivity$binding.bottomVideoTimeHolder.videoPlaybackSpeed.text = "${DecimalFormat("#.##").format(config.playbackSpeed)}x"
+ MaxLineLength:VideoPlayerActivity.kt$VideoPlayerActivity$binding.bottomVideoTimeHolder.videoTogglePlayPause.setImageResource(org.fossify.commons.R.drawable.ic_pause_outline_vector)
+ MaxLineLength:VideoPlayerActivity.kt$VideoPlayerActivity$binding.bottomVideoTimeHolder.videoTogglePlayPause.setImageResource(org.fossify.commons.R.drawable.ic_play_outline_vector)
+ MaxLineLength:VideoPlayerActivity.kt$VideoPlayerActivity$binding.videoBrightnessController
+ MaxLineLength:VideoPlayerActivity.kt$VideoPlayerActivity$binding.videoVolumeController
+ MaxLineLength:VideoPlayerActivity.kt$VideoPlayerActivity$if
+ MaxLineLength:VideoPlayerActivity.kt$VideoPlayerActivity$navigationIcon = resources.getColoredDrawableWithColor(org.fossify.commons.R.drawable.ic_arrow_left_vector, Color.WHITE)
+ MaxLineLength:VideoPlayerActivity.kt$VideoPlayerActivity$open
+ MaxLineLength:VideoPlayerActivity.kt$VideoPlayerActivity$overflowIcon = resources.getColoredDrawableWithColor(org.fossify.commons.R.drawable.ic_three_dots_vector, Color.WHITE)
+ MaxLineLength:VideoPlayerActivity.kt$VideoPlayerActivity$val drawableId = if (isSlow) R.drawable.ic_playback_speed_slow_vector else R.drawable.ic_playback_speed_vector
+ MaxLineLength:VideoPlayerActivity.kt$VideoPlayerActivity.<no name provided>$override
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$!currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0 && !currentMedium.getIsInRecycleBin()
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$(!isRPlus() || isExternalStorageManager()) && !currentMedium.isHidden() && visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY == 0 && !currentMedium.getIsInRecycleBin()
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$(!isRPlus() || isExternalStorageManager()) && currentMedium.isHidden() && visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY == 0 && !currentMedium.getIsInRecycleBin()
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$// show the selected image asap, while loading the rest in the background to allow swiping between them. Might be needed at third party intents
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$GetMediaAsynctask
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$binding.bottomActions.bottomChangeOrientation.beVisibleIf(visibleBottomActions and BOTTOM_ACTION_CHANGE_ORIENTATION != 0)
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$binding.bottomActions.bottomChangeOrientation.setOnLongClickListener { toast(R.string.change_orientation); true }
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$binding.bottomActions.bottomEdit.beVisibleIf(visibleBottomActions and BOTTOM_ACTION_EDIT != 0 && currentMedium?.isSVG() == false)
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$binding.bottomActions.bottomFavorite.beVisibleIf(visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE != 0 && currentMedium?.getIsInRecycleBin() == false)
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$binding.bottomActions.bottomProperties.setOnLongClickListener { toast(org.fossify.commons.R.string.properties); true }
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$binding.bottomActions.bottomRename.beVisibleIf(visibleBottomActions and BOTTOM_ACTION_RENAME != 0 && currentMedium?.getIsInRecycleBin() == false)
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$binding.bottomActions.bottomResize.beVisibleIf(visibleBottomActions and BOTTOM_ACTION_RESIZE != 0 && currentMedium?.isImage() == true)
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$binding.bottomActions.bottomRotate.beVisibleIf(config.visibleBottomActions and BOTTOM_ACTION_ROTATE != 0 && getCurrentMedium()?.isImage() == true)
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$binding.bottomActions.bottomToggleFileVisibility.beVisibleIf(visibleBottomActions and BOTTOM_ACTION_TOGGLE_VISIBILITY != 0)
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$binding.bottomActions.root.layoutParams.height = resources.getDimension(R.dimen.bottom_actions_height).toInt() + navigationBarHeight
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$currentMedium.isFavorite && visibleBottomActions and BOTTOM_ACTION_TOGGLE_FAVORITE == 0 && !currentMedium.getIsInRecycleBin()
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$findItem(R.id.menu_change_orientation).isVisible = rotationDegrees == 0 && visibleBottomActions and BOTTOM_ACTION_CHANGE_ORIENTATION == 0
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$findItem(R.id.menu_edit).isVisible = visibleBottomActions and BOTTOM_ACTION_EDIT == 0 && !currentMedium.isSVG()
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$findItem(R.id.menu_rename).isVisible = visibleBottomActions and BOTTOM_ACTION_RENAME == 0 && !currentMedium.getIsInRecycleBin()
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$findItem(R.id.menu_resize).isVisible = visibleBottomActions and BOTTOM_ACTION_RESIZE == 0 && currentMedium.isImage()
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$findItem(R.id.menu_rotate).isVisible = currentMedium.isImage() && visibleBottomActions and BOTTOM_ACTION_ROTATE == 0
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$flipSides = orientation == ExifInterface.ORIENTATION_ROTATE_90 || orientation == ExifInterface.ORIENTATION_ROTATE_270
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$if (medium.isFavorite) org.fossify.commons.R.drawable.ic_star_vector else org.fossify.commons.R.drawable.ic_star_outline_vector
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$if (medium.isHidden()) org.fossify.commons.R.drawable.ic_unhide_vector else org.fossify.commons.R.drawable.ic_hide_vector
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$it.isImage() || it.isPortrait() || (config.slideshowIncludeVideos && it.isVideo() || (config.slideshowIncludeGIFs && it.isGIF()))
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$navigationIcon = resources.getColoredDrawableWithColor(org.fossify.commons.R.drawable.ic_arrow_left_vector, Color.WHITE)
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$overflowIcon = resources.getColoredDrawableWithColor(org.fossify.commons.R.drawable.ic_three_dots_vector, Color.WHITE)
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$private
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$private fun getCurrentFragment()
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$private fun getCurrentMedia()
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$toast(if (currentMedium?.isHidden() == true) org.fossify.commons.R.string.unhide else org.fossify.commons.R.string.hide); true
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$val isSDOrOtgRootFolder = isAStorageRootFolder(oldPath.getParentPath()) && !oldPath.startsWith(internalStoragePath)
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity$val medium = Medium(null, filename, mPath, parent, ts, ts, File(mPath).length(), type, duration, isFavorite, 0, 0L)
+ MaxLineLength:ViewPagerActivity.kt$ViewPagerActivity.<no name provided>$override
+ MaxLineLength:ViewPagerFragment.kt$ViewPagerFragment$context!!.getResolution(file.absolutePath)?.formatAsResolution().let { if (it?.isNotEmpty() == true) details.appendLine(it) }
+ MaxLineLength:ViewPagerFragment.kt$ViewPagerFragment$fun getPathToLoad(medium: Medium)
+ MaxLineLength:ViewPagerFragment.kt$ViewPagerFragment$if
+ MaxLineLength:WidgetConfigureActivity.kt$WidgetConfigureActivity$if
+ NestedBlockDepth:Context.kt$fun Context.getDirectParentSubfolders(dirs: ArrayList<Directory>, currentPathPrefix: String): ArrayList<Directory>
+ NestedBlockDepth:Context.kt$fun Context.getNoMediaFoldersSync(): ArrayList<String>
+ NestedBlockDepth:Context.kt$fun Context.parseFileChannel(path: String, fc: FileChannel, level: Int, start: Long, end: Long, callback: () -> Unit)
+ NestedBlockDepth:Context.kt$fun Context.updateSubfolderCounts(children: ArrayList<Directory>, parentDirs: ArrayList<Directory>)
+ NestedBlockDepth:EditActivity.kt$EditActivity$override fun onCropImageComplete(view: CropImageView, result: CropImageView.CropResult)
+ NestedBlockDepth:MainActivity.kt$MainActivity$override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?)
+ NestedBlockDepth:MainActivity.kt$MainActivity$private fun getFoldersWithMedia(path: String): HashSet<String>
+ NestedBlockDepth:MainActivity.kt$MainActivity$private fun gotDirectories(newDirs: ArrayList<Directory>)
+ NestedBlockDepth:MediaFetcher.kt$MediaFetcher$fun getFilesFrom( curPath: String, isPickImage: Boolean, isPickVideo: Boolean, getProperDateTaken: Boolean, getProperLastModified: Boolean, getProperFileSize: Boolean, favoritePaths: ArrayList<String>, getVideoDurations: Boolean, lastModifieds: HashMap<String, Long>, dateTakens: HashMap<String, Long>, android11Files: HashMap<String, ArrayList<Medium>>? ): ArrayList<Medium>
+ NestedBlockDepth:MediaFetcher.kt$MediaFetcher$private fun getLatestFileFolders(): LinkedHashSet<String>
+ NestedBlockDepth:MediaFetcher.kt$MediaFetcher$private fun getMediaInFolder( folder: String, isPickImage: Boolean, isPickVideo: Boolean, filterMedia: Int, getProperDateTaken: Boolean, getProperLastModified: Boolean, getProperFileSize: Boolean, favoritePaths: ArrayList<String>, getVideoDurations: Boolean, lastModifieds: HashMap<String, Long>, dateTakens: HashMap<String, Long> ): ArrayList<Medium>
+ NestedBlockDepth:MediaFetcher.kt$MediaFetcher$private fun parseCursor(cursor: Cursor): LinkedHashSet<String>
+ NestedBlockDepth:MediaSideScroll.kt$MediaSideScroll$override fun onTouchEvent(event: MotionEvent): Boolean
+ NestedBlockDepth:PhotoFragment.kt$PhotoFragment$override fun fullscreenToggled(isFullscreen: Boolean)
+ NestedBlockDepth:PhotoVideoActivity.kt$PhotoVideoActivity$private fun checkIntent(savedInstanceState: Bundle? = null)
+ NestedBlockDepth:SettingsActivity.kt$SettingsActivity$private fun parseFile(inputStream: InputStream?)
+ NestedBlockDepth:String.kt$fun String.shouldFolderBeVisible( excludedPaths: MutableSet<String>, includedPaths: MutableSet<String>, showHidden: Boolean, folderNoMediaStatuses: HashMap<String, Boolean>, callback: (path: String, hasNoMedia: Boolean) -> Unit ): Boolean
+ NestedBlockDepth:VideoPlayerActivity.kt$VideoPlayerActivity$private fun handleEvent(event: MotionEvent)
+ NestedBlockDepth:ViewPagerActivity.kt$ViewPagerActivity$private fun getPositionInList(items: MutableList<Medium>): Int
+ ReturnCount:Context.kt$@Suppress("UNCHECKED_CAST") fun Context.getSortedDirectories(source: ArrayList<Directory>): ArrayList<Directory>
+ ReturnCount:Context.kt$fun Context.getDirectorySortingValue(media: ArrayList<Medium>, path: String, name: String, size: Long): String
+ ReturnCount:ExcludeFolderDialog.kt$ExcludeFolderDialog$private fun getAlternativePathsList(): List<String>
+ ReturnCount:InstantItemSwitch.kt$InstantItemSwitch$override fun onTouchEvent(event: MotionEvent): Boolean
+ ReturnCount:MediaFetcher.kt$MediaFetcher$fun groupMedia(media: ArrayList<Medium>, path: String): ArrayList<ThumbnailItem>
+ ReturnCount:MediaSideScroll.kt$MediaSideScroll$override fun onTouchEvent(event: MotionEvent): Boolean
+ ReturnCount:PhotoFragment.kt$PhotoFragment$override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View
+ ReturnCount:PhotoVideoActivity.kt$PhotoVideoActivity$private fun checkIntent(savedInstanceState: Bundle? = null)
+ ReturnCount:String.kt$fun String.shouldFolderBeVisible( excludedPaths: MutableSet<String>, includedPaths: MutableSet<String>, showHidden: Boolean, folderNoMediaStatuses: HashMap<String, Boolean>, callback: (path: String, hasNoMedia: Boolean) -> Unit ): Boolean
+ ReturnCount:ViewPagerActivity.kt$ViewPagerActivity$private fun getPositionInList(items: MutableList<Medium>): Int
+ ReturnCount:ViewPagerActivity.kt$ViewPagerActivity$private fun initViewPager(savedPath: String)
+ ReturnCount:ViewPagerActivity.kt$ViewPagerActivity$private fun isShowHiddenFlagNeeded(): Boolean
+ ReturnCount:ViewPagerFragment.kt$ViewPagerFragment$fun getMediumExtendedDetails(medium: Medium): String
+ SpreadOperator:Context.kt$(*mediaToDelete.toTypedArray())
+ SpreadOperator:MainActivity.kt$MainActivity$(*mediaToDelete.toTypedArray())
+ SwallowedException:Activity.kt$e: Exception
+ SwallowedException:Activity.kt$e: OutOfMemoryError
+ SwallowedException:Context.kt$e: Exception
+ SwallowedException:EditActivity.kt$EditActivity$e: Exception
+ SwallowedException:EditActivity.kt$EditActivity$e: OutOfMemoryError
+ SwallowedException:IsoTypeReader.kt$IsoTypeReader$e: UnsupportedEncodingException
+ SwallowedException:MainActivity.kt$MainActivity$e: Exception
+ SwallowedException:MediaActivity.kt$MediaActivity$e: Exception
+ SwallowedException:MediaFetcher.kt$MediaFetcher$e: Exception
+ SwallowedException:MediaSideScroll.kt$MediaSideScroll$e: Settings.SettingNotFoundException
+ SwallowedException:MyWidgetProvider.kt$MyWidgetProvider$e: Exception
+ SwallowedException:PhotoFragment.kt$PhotoFragment$e: Exception
+ SwallowedException:PhotoFragment.kt$PhotoFragment$e: OutOfMemoryError
+ SwallowedException:PhotoVideoActivity.kt$PhotoVideoActivity$e: Exception
+ SwallowedException:ResizeMultipleImagesDialog.kt$ResizeMultipleImagesDialog$e: OutOfMemoryError
+ SwallowedException:SetWallpaperActivity.kt$SetWallpaperActivity$e: OutOfMemoryError
+ SwallowedException:SettingsActivity.kt$SettingsActivity$e: ActivityNotFoundException
+ SwallowedException:String.kt$e: IOException
+ SwallowedException:ViewPagerActivity.kt$ViewPagerActivity$e: ActivityNotFoundException
+ SwallowedException:ViewPagerActivity.kt$ViewPagerActivity$e: Exception
+ SwallowedException:ViewPagerActivity.kt$ViewPagerActivity.<no name provided>$e: Exception
+ SwallowedException:ViewPagerFragment.kt$ViewPagerFragment$e: Exception
+ TooGenericExceptionCaught:Activity.kt$e: Exception
+ TooGenericExceptionCaught:Context.kt$e: Exception
+ TooGenericExceptionCaught:DirectoryAdapter.kt$DirectoryAdapter$e: Exception
+ TooGenericExceptionCaught:EditActivity.kt$EditActivity$e: Exception
+ TooGenericExceptionCaught:MainActivity.kt$MainActivity$e: Exception
+ TooGenericExceptionCaught:MediaActivity.kt$MediaActivity$e: Exception
+ TooGenericExceptionCaught:MediaFetcher.kt$MediaFetcher$e: Exception
+ TooGenericExceptionCaught:MyWidgetProvider.kt$MyWidgetProvider$e: Exception
+ TooGenericExceptionCaught:PhotoFragment.kt$PhotoFragment$e: Exception
+ TooGenericExceptionCaught:PhotoVideoActivity.kt$PhotoVideoActivity$e: Exception
+ TooGenericExceptionCaught:ResizeMultipleImagesDialog.kt$ResizeMultipleImagesDialog$e: Exception
+ TooGenericExceptionCaught:SettingsActivity.kt$SettingsActivity$e: Exception
+ TooGenericExceptionCaught:VideoFragment.kt$VideoFragment$e: Exception
+ TooGenericExceptionCaught:VideoPlayerActivity.kt$VideoPlayerActivity$e: Exception
+ TooGenericExceptionCaught:ViewPagerActivity.kt$ViewPagerActivity$e: Exception
+ TooGenericExceptionCaught:ViewPagerActivity.kt$ViewPagerActivity.<no name provided>$e: Exception
+ TooGenericExceptionCaught:ViewPagerFragment.kt$ViewPagerFragment$e: Exception
+ TooGenericExceptionThrown:PicassoRegionDecoder.kt$PicassoRegionDecoder$throw RuntimeException("Region decoder returned null bitmap - image format may not be supported")
+ TooManyFunctions:Activity.kt$org.fossify.gallery.extensions.Activity.kt
+ TooManyFunctions:Config.kt$Config : BaseConfig
+ TooManyFunctions:Context.kt$org.fossify.gallery.extensions.Context.kt
+ TooManyFunctions:DirectoryAdapter.kt$DirectoryAdapter : MyRecyclerViewAdapterItemTouchHelperContractOnPopupTextUpdate
+ TooManyFunctions:EditActivity.kt$EditActivity : SimpleActivityOnCropImageCompleteListener
+ TooManyFunctions:EditorDrawCanvas.kt$EditorDrawCanvas : View
+ TooManyFunctions:MainActivity.kt$MainActivity : SimpleActivityDirectoryOperationsListener
+ TooManyFunctions:ManageFoldersAdapter.kt$ManageFoldersAdapter : MyRecyclerViewAdapter
+ TooManyFunctions:ManageHiddenFoldersAdapter.kt$ManageHiddenFoldersAdapter : MyRecyclerViewAdapter
+ TooManyFunctions:MediaActivity.kt$MediaActivity : SimpleActivityMediaOperationsListener
+ TooManyFunctions:MediaAdapter.kt$MediaAdapter : MyRecyclerViewAdapterOnPopupTextUpdate
+ TooManyFunctions:MediaFetcher.kt$MediaFetcher
+ TooManyFunctions:Medium.kt$Medium : SerializableThumbnailItem
+ TooManyFunctions:MediumDao.kt$MediumDao
+ TooManyFunctions:PhotoFragment.kt$PhotoFragment : ViewPagerFragment
+ TooManyFunctions:PhotoVideoActivity.kt$PhotoVideoActivity : SimpleActivityFragmentListener
+ TooManyFunctions:SearchActivity.kt$SearchActivity : SimpleActivityMediaOperationsListener
+ TooManyFunctions:SettingsActivity.kt$SettingsActivity : SimpleActivity
+ TooManyFunctions:VideoFragment.kt$VideoFragment : ViewPagerFragmentSurfaceTextureListenerOnSeekBarChangeListenerPlaybackSpeedListener
+ TooManyFunctions:VideoPlayerActivity.kt$VideoPlayerActivity : SimpleActivityOnSeekBarChangeListenerSurfaceTextureListenerPlaybackSpeedListener
+ TooManyFunctions:ViewPagerActivity.kt$ViewPagerActivity : SimpleActivityOnPageChangeListenerFragmentListener
+ TooManyFunctions:WidgetConfigureActivity.kt$WidgetConfigureActivity : SimpleActivity
+ UnusedParameter:Activity.kt$toggleActionBarVisibility: Boolean
+ UnusedPrivateMember:PhotoFragment.kt$PhotoFragment$private fun checkIfPanorama()
+ UnusedPrivateMember:VideoFragment.kt$VideoFragment$private fun checkIfPanorama()
+ UnusedPrivateProperty:MyPagerAdapter.kt$MyPagerAdapter$pos
+ UnusedPrivateProperty:PhotoFragment.kt$PhotoFragment$i
+ UnusedPrivateProperty:String.kt$i
+ UtilityClassWithPublicConstructor:ExifInterface.kt$ExifInterfaceAttributes
+ VariableNaming:Activity.kt$val BATCH_SIZE = 50
+ VariableNaming:Activity.kt$val OTGPath = config.OTGPath
+ VariableNaming:Context.kt$val FILE_CHANNEL_CONTAINERS = arrayListOf("moov", "trak", "mdia", "minf", "udta", "stbl")
+ VariableNaming:Context.kt$val OTGPath = config.OTGPath
+ VariableNaming:DirectoryAdapter.kt$DirectoryAdapter$val SAFPath = getFirstSelectedItemPath() ?: return
+ VariableNaming:MainActivity.kt$MainActivity$val OTGPath = config.OTGPath
+ VariableNaming:MediaActivity.kt$MediaActivity$private val LAST_MEDIA_CHECK_PERIOD = 3000L
+ VariableNaming:MediaAdapter.kt$MediaAdapter$private val ITEM_MEDIUM_PHOTO = 2
+ VariableNaming:MediaAdapter.kt$MediaAdapter$private val ITEM_MEDIUM_VIDEO_PORTRAIT = 1
+ VariableNaming:MediaAdapter.kt$MediaAdapter$private val ITEM_SECTION = 0
+ VariableNaming:MediaAdapter.kt$MediaAdapter$val SAFPath = selectedPaths.firstOrNull { activity.needsStupidWritePermissions(it) } ?: getFirstSelectedItemPath() ?: return
+ VariableNaming:MediaFetcher.kt$MediaFetcher$val OTGPath = config.OTGPath
+ VariableNaming:MediaFetcher.kt$MediaFetcher$val OTGPath = context.config.OTGPath
+ VariableNaming:MediaSideScroll.kt$MediaSideScroll$private val SLIDE_INFO_FADE_DELAY = 1000L
+ VariableNaming:PhotoFragment.kt$PhotoFragment$// devices with good displays, but the rest of the hardware not good enough for them private val WEIRD_DEVICES = arrayListOf( "motorola xt1685", "google nexus 5x" )
+ VariableNaming:PhotoFragment.kt$PhotoFragment$private val DEFAULT_DOUBLE_TAP_ZOOM = 2f
+ VariableNaming:PhotoFragment.kt$PhotoFragment$private val SAME_ASPECT_RATIO_THRESHOLD = 0.01
+ VariableNaming:PhotoFragment.kt$PhotoFragment$private val ZOOMABLE_VIEW_LOAD_DELAY = 100L
+ VariableNaming:PlaybackSpeedFragment.kt$PlaybackSpeedFragment$private val HALF_PROGRESS = MAX_PROGRESS / 2
+ VariableNaming:PlaybackSpeedFragment.kt$PlaybackSpeedFragment$private val MAX_PLAYBACK_SPEED = 3f
+ VariableNaming:PlaybackSpeedFragment.kt$PlaybackSpeedFragment$private val MAX_PROGRESS = (MAX_PLAYBACK_SPEED * 100 + MIN_PLAYBACK_SPEED * 100).toInt()
+ VariableNaming:PlaybackSpeedFragment.kt$PlaybackSpeedFragment$private val MIN_PLAYBACK_SPEED = 0.25f
+ VariableNaming:PlaybackSpeedFragment.kt$PlaybackSpeedFragment$private val STEP = 0.05f
+ VariableNaming:SetWallpaperActivity.kt$SetWallpaperActivity$private val PICK_IMAGE = 1
+ VariableNaming:SetWallpaperActivity.kt$SetWallpaperActivity$private val RATIO_LANDSCAPE = 1
+ VariableNaming:SetWallpaperActivity.kt$SetWallpaperActivity$private val RATIO_PORTRAIT = 0
+ VariableNaming:SetWallpaperActivity.kt$SetWallpaperActivity$private val RATIO_SQUARE = 2
+ VariableNaming:VideoFragment.kt$VideoFragment$private val PROGRESS = "progress"
+ VariableNaming:VideoPlayerActivity.kt$VideoPlayerActivity$private val PLAY_WHEN_READY_DRAG_DELAY = 100L
+ WildcardImport:Activity.kt$import java.io.*
+ WildcardImport:Activity.kt$import org.fossify.commons.extensions.*
+ WildcardImport:Activity.kt$import org.fossify.commons.helpers.*
+ WildcardImport:ArrayList.kt$import org.fossify.gallery.helpers.*
+ WildcardImport:ChangeFolderThumbnailStyleDialog.kt$import org.fossify.commons.extensions.*
+ WildcardImport:ChangeFolderThumbnailStyleDialog.kt$import org.fossify.gallery.helpers.*
+ WildcardImport:ChangeGroupingDialog.kt$import org.fossify.gallery.helpers.*
+ WildcardImport:ChangeSortingDialog.kt$import org.fossify.commons.extensions.*
+ WildcardImport:ChangeSortingDialog.kt$import org.fossify.commons.helpers.*
+ WildcardImport:Config.kt$import org.fossify.commons.helpers.*
+ WildcardImport:Constants.kt$import org.fossify.commons.helpers.*
+ WildcardImport:Context.kt$import org.fossify.commons.extensions.*
+ WildcardImport:Context.kt$import org.fossify.commons.helpers.*
+ WildcardImport:Context.kt$import org.fossify.gallery.helpers.*
+ WildcardImport:Context.kt$import org.fossify.gallery.interfaces.*
+ WildcardImport:Context.kt$import org.fossify.gallery.models.*
+ WildcardImport:Directory.kt$import androidx.room.*
+ WildcardImport:Directory.kt$import org.fossify.commons.helpers.*
+ WildcardImport:DirectoryAdapter.kt$import org.fossify.commons.dialogs.*
+ WildcardImport:DirectoryAdapter.kt$import org.fossify.commons.extensions.*
+ WildcardImport:DirectoryAdapter.kt$import org.fossify.commons.helpers.*
+ WildcardImport:DirectoryAdapter.kt$import org.fossify.gallery.extensions.*
+ WildcardImport:DirectoryAdapter.kt$import org.fossify.gallery.helpers.*
+ WildcardImport:EditActivity.kt$import java.io.*
+ WildcardImport:EditActivity.kt$import org.fossify.commons.extensions.*
+ WildcardImport:EditActivity.kt$import org.fossify.gallery.helpers.*
+ WildcardImport:EditorDrawCanvas.kt$import android.graphics.*
+ WildcardImport:ExcludedFoldersActivity.kt$import org.fossify.commons.extensions.*
+ WildcardImport:ExportFavoritesDialog.kt$import org.fossify.commons.extensions.*
+ WildcardImport:FilterMediaDialog.kt$import org.fossify.gallery.helpers.*
+ WildcardImport:GalleryDatabase.kt$import org.fossify.gallery.interfaces.*
+ WildcardImport:GalleryDatabase.kt$import org.fossify.gallery.models.*
+ WildcardImport:GetMediaAsynctask.kt$import org.fossify.gallery.helpers.*
+ WildcardImport:MainActivity.kt$import java.io.*
+ WildcardImport:MainActivity.kt$import org.fossify.commons.extensions.*
+ WildcardImport:MainActivity.kt$import org.fossify.commons.helpers.*
+ WildcardImport:MainActivity.kt$import org.fossify.gallery.extensions.*
+ WildcardImport:MainActivity.kt$import org.fossify.gallery.helpers.*
+ WildcardImport:ManageBottomActionsDialog.kt$import org.fossify.gallery.helpers.*
+ WildcardImport:ManageExtendedDetailsDialog.kt$import org.fossify.gallery.helpers.*
+ WildcardImport:ManageFoldersAdapter.kt$import android.view.*
+ WildcardImport:MediaActivity.kt$import org.fossify.commons.extensions.*
+ WildcardImport:MediaActivity.kt$import org.fossify.commons.helpers.*
+ WildcardImport:MediaActivity.kt$import org.fossify.gallery.dialogs.*
+ WildcardImport:MediaActivity.kt$import org.fossify.gallery.extensions.*
+ WildcardImport:MediaActivity.kt$import org.fossify.gallery.helpers.*
+ WildcardImport:MediaAdapter.kt$import org.fossify.commons.extensions.*
+ WildcardImport:MediaAdapter.kt$import org.fossify.commons.helpers.*
+ WildcardImport:MediaAdapter.kt$import org.fossify.gallery.databinding.*
+ WildcardImport:MediaAdapter.kt$import org.fossify.gallery.extensions.*
+ WildcardImport:MediaAdapter.kt$import org.fossify.gallery.helpers.*
+ WildcardImport:MediaFetcher.kt$import org.fossify.commons.extensions.*
+ WildcardImport:MediaFetcher.kt$import org.fossify.commons.helpers.*
+ WildcardImport:MediaFetcher.kt$import org.fossify.gallery.extensions.*
+ WildcardImport:Medium.kt$import androidx.room.*
+ WildcardImport:Medium.kt$import org.fossify.commons.extensions.*
+ WildcardImport:Medium.kt$import org.fossify.commons.helpers.*
+ WildcardImport:Medium.kt$import org.fossify.gallery.helpers.*
+ WildcardImport:MediumDao.kt$import androidx.room.*
+ WildcardImport:PhotoFragment.kt$import androidx.exifinterface.media.ExifInterface.*
+ WildcardImport:PhotoFragment.kt$import org.fossify.commons.extensions.*
+ WildcardImport:PhotoFragment.kt$import org.fossify.gallery.helpers.*
+ WildcardImport:PhotoVideoActivity.kt$import org.fossify.commons.extensions.*
+ WildcardImport:PhotoVideoActivity.kt$import org.fossify.commons.helpers.*
+ WildcardImport:PhotoVideoActivity.kt$import org.fossify.gallery.extensions.*
+ WildcardImport:PhotoVideoActivity.kt$import org.fossify.gallery.helpers.*
+ WildcardImport:PicassoRegionDecoder.kt$import android.graphics.*
+ WildcardImport:PicassoRoundedCornersTransformation.kt$import android.graphics.*
+ WildcardImport:PickDirectoryDialog.kt$import org.fossify.commons.extensions.*
+ WildcardImport:PickDirectoryDialog.kt$import org.fossify.gallery.extensions.*
+ WildcardImport:PlaybackSpeedFragment.kt$import org.fossify.commons.extensions.*
+ WildcardImport:ResizeDialog.kt$import org.fossify.commons.extensions.*
+ WildcardImport:ResizeMultipleImagesDialog.kt$import org.fossify.commons.extensions.*
+ WildcardImport:ResizeWithPathDialog.kt$import org.fossify.commons.extensions.*
+ WildcardImport:SaveAsDialog.kt$import org.fossify.commons.extensions.*
+ WildcardImport:SearchActivity.kt$import org.fossify.commons.extensions.*
+ WildcardImport:SearchActivity.kt$import org.fossify.gallery.extensions.*
+ WildcardImport:SettingsActivity.kt$import org.fossify.commons.dialogs.*
+ WildcardImport:SettingsActivity.kt$import org.fossify.commons.extensions.*
+ WildcardImport:SettingsActivity.kt$import org.fossify.commons.helpers.*
+ WildcardImport:SettingsActivity.kt$import org.fossify.gallery.dialogs.*
+ WildcardImport:SettingsActivity.kt$import org.fossify.gallery.extensions.*
+ WildcardImport:SettingsActivity.kt$import org.fossify.gallery.helpers.*
+ WildcardImport:SimpleActivity.kt$import org.fossify.commons.extensions.*
+ WildcardImport:VideoFragment.kt$import android.view.*
+ WildcardImport:VideoFragment.kt$import androidx.media3.common.*
+ WildcardImport:VideoFragment.kt$import org.fossify.commons.extensions.*
+ WildcardImport:VideoFragment.kt$import org.fossify.gallery.helpers.*
+ WildcardImport:VideoPlayerActivity.kt$import android.view.*
+ WildcardImport:VideoPlayerActivity.kt$import androidx.media3.common.*
+ WildcardImport:VideoPlayerActivity.kt$import org.fossify.commons.extensions.*
+ WildcardImport:VideoPlayerActivity.kt$import org.fossify.gallery.extensions.*
+ WildcardImport:VideoPlayerActivity.kt$import org.fossify.gallery.helpers.*
+ WildcardImport:ViewPagerActivity.kt$import org.fossify.commons.extensions.*
+ WildcardImport:ViewPagerActivity.kt$import org.fossify.commons.helpers.*
+ WildcardImport:ViewPagerActivity.kt$import org.fossify.gallery.extensions.*
+ WildcardImport:ViewPagerActivity.kt$import org.fossify.gallery.helpers.*
+ WildcardImport:ViewPagerFragment.kt$import org.fossify.commons.extensions.*
+ WildcardImport:ViewPagerFragment.kt$import org.fossify.gallery.helpers.*
+ WildcardImport:WidgetConfigureActivity.kt$import org.fossify.commons.extensions.*
+ WildcardImport:WidgetConfigureActivity.kt$import org.fossify.gallery.extensions.*
+
+
diff --git a/app/lint-baseline.xml b/app/lint-baseline.xml
new file mode 100644
index 000000000..a79fef5c2
--- /dev/null
+++ b/app/lint-baseline.xml
@@ -0,0 +1,5393 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build.gradle.kts b/build.gradle.kts
index 9a736eea0..b7bc0032c 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -2,4 +2,5 @@ plugins {
alias(libs.plugins.android).apply(false)
alias(libs.plugins.kotlinAndroid).apply(false)
alias(libs.plugins.ksp).apply(false)
+ alias(libs.plugins.detekt).apply(false)
}
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index f59fbbe4c..7757e0d24 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -3,6 +3,8 @@
kotlin = "1.9.25"
#KSP
ksp = "1.9.25-1.0.20"
+#Detekt
+detekt = "1.23.3"
#AndroidX
androidx-swiperefreshlayout = "1.1.0"
androidx-constraintlayout = "2.1.4"
@@ -78,3 +80,4 @@ room = [
android = { id = "com.android.application", version.ref = "gradlePlugins-agp" }
kotlinAndroid = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
+detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" }