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" }