├── .editorconfig ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── BUG.yml │ └── FEATURE.yml ├── ci-gradle.properties ├── dependabot.yml ├── pull_request_template.md └── workflows │ ├── Build.yml │ ├── NightlyBaselineProfiles.yaml │ └── Release.yml ├── .gitignore ├── .idea ├── androidTestResultsUserPreferences.xml ├── appInsightsSettings.xml ├── compiler.xml ├── copyright │ ├── GNU_General_Public_License_v3_0.xml │ └── profiles_settings.xml ├── deploymentTargetDropDown.xml ├── deploymentTargetSelector.xml ├── dictionaries │ └── User.xml ├── gradle.xml ├── icon.svg ├── inspectionProfiles │ └── Project_Default.xml ├── kotlinc.xml ├── migrations.xml ├── misc.xml ├── render.experimental.xml ├── runConfigurations.xml ├── runConfigurations │ └── Generate_Baseline_Profile_for_app.xml ├── shelf │ ├── Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes] │ │ ├── AppSettingDialogEmpty_foldable.png │ │ ├── AppSettingDialogEmpty_foldable_dark.png │ │ ├── AppSettingDialogErrorTextFields_foldable.png │ │ ├── AppSettingDialogErrorTextFields_foldable_dark.png │ │ ├── AppSettingDialogFilledTextFields_foldable.png │ │ ├── AppSettingDialogFilledTextFields_foldable_dark.png │ │ ├── AppSettingsScreenEmpty_foldable.png │ │ ├── AppSettingsScreenEmpty_phone.png │ │ ├── AppSettingsScreenEmpty_phone_dark.png │ │ ├── AppSettingsScreenEmpty_tablet.png │ │ ├── AppSettingsScreenLoading_foldable.png │ │ ├── AppSettingsScreenLoading_phone.png │ │ ├── AppSettingsScreenLoading_phone_dark.png │ │ ├── AppSettingsScreenLoading_tablet.png │ │ ├── AppSettingsScreenPopulated_foldable.png │ │ ├── AppSettingsScreenPopulated_phone.png │ │ ├── AppSettingsScreenPopulated_phone_dark.png │ │ ├── AppSettingsScreenPopulated_tablet.png │ │ ├── AppSettingsScreenSnackbar_foldable.png │ │ ├── AppSettingsScreenSnackbar_phone.png │ │ ├── AppSettingsScreenSnackbar_tablet.png │ │ ├── AppsScreenPopulated_foldable.png │ │ ├── AppsScreenPopulated_phone.png │ │ ├── AppsScreenPopulated_phone_dark.png │ │ ├── AppsScreenPopulated_tablet.png │ │ ├── CleanDialog_foldable.png │ │ ├── CleanDialog_foldable_dark.png │ │ ├── DarkDialog_foldable.png │ │ ├── DarkDialog_foldable_dark.png │ │ ├── PermissionDialog_foldable.png │ │ ├── PermissionDialog_foldable_dark.png │ │ ├── SettingsScreenPopulated_foldable.png │ │ ├── SettingsScreenPopulated_foldable_dark.png │ │ ├── ShortcutDialogEmpty_foldable.png │ │ ├── ShortcutDialogEmpty_foldable_dark.png │ │ ├── ShortcutDialogErrorTextFields_foldable.png │ │ ├── ShortcutDialogErrorTextFields_foldable_dark.png │ │ ├── ShortcutDialogFilledTextFields_foldable.png │ │ ├── ShortcutDialogFilledTextFields_foldable_dark.png │ │ ├── TemplateDialogLoading_foldable.png │ │ ├── TemplateDialogLoading_foldable_dark.png │ │ ├── TemplateDialogPopulated_foldable.png │ │ ├── TemplateDialogPopulated_foldable_dark.png │ │ ├── ThemeDialog_foldable.png │ │ ├── ThemeDialog_foldable_dark.png │ │ └── shelved.patch │ ├── Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM__Changes_.xml │ ├── Uncommitted_changes_before_Update_at_14_01_2024_2_14_pm_[Changes] │ │ └── shelved.patch │ └── Uncommitted_changes_before_Update_at_14_01_2024_2_14_pm__Changes_.xml └── vcs.xml ├── .run ├── Generate Demo Baseline Profile.run.xml └── spotlessApply.run.xml ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── app ├── .gitignore ├── README.md ├── benchmark-rules.pro ├── build.gradle.kts ├── dependencies │ └── releaseRuntimeClasspath.txt ├── proguard-rules.pro ├── release-badging.txt └── src │ ├── androidTest │ └── kotlin │ │ └── com │ │ └── android │ │ └── geto │ │ └── navigation │ │ └── NavigationTest.kt │ ├── debug │ └── res │ │ └── values │ │ └── strings.xml │ └── main │ ├── AndroidManifest.xml │ ├── ic_launcher-playstore.png │ ├── kotlin │ └── com │ │ └── android │ │ └── geto │ │ ├── GetoApplication.kt │ │ ├── MainActivity.kt │ │ ├── MainActivityUiState.kt │ │ ├── MainActivityViewModel.kt │ │ └── navigation │ │ ├── GetoNavHost.kt │ │ └── TopLevelDestination.kt │ └── res │ ├── drawable │ ├── ic_launcher_foreground.xml │ └── ic_splash.xml │ ├── mipmap-anydpi-v26 │ ├── ic_launcher.xml │ └── ic_launcher_round.xml │ ├── mipmap-hdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-mdpi │ ├── ic_launcher.png │ ├── ic_launcher_foreground.webp │ └── ic_launcher_round.png │ ├── mipmap-xhdpi │ ├── ic_launcher.png │ ├── ic_launcher_foreground.webp │ └── ic_launcher_round.png │ ├── mipmap-xxhdpi │ ├── ic_launcher.png │ ├── ic_launcher_foreground.webp │ └── ic_launcher_round.png │ ├── mipmap-xxxhdpi │ ├── ic_launcher.png │ ├── ic_launcher_foreground.webp │ └── ic_launcher_round.png │ ├── values-night │ └── themes.xml │ ├── values │ ├── colors.xml │ ├── strings.xml │ └── themes.xml │ └── xml │ ├── backup_rules.xml │ └── data_extraction_rules.xml ├── benchmarks ├── .gitignore ├── build.gradle.kts └── src │ └── main │ ├── AndroidManifest.xml │ └── kotlin │ └── com │ └── android │ └── geto │ └── benchmarks │ ├── BaselineProfileMetrics.kt │ ├── GeneralActions.kt │ ├── Utils.kt │ ├── apps │ ├── AppsActions.kt │ └── ScrollAppsBenchmark.kt │ ├── appsettings │ └── AppSettingsAction.kt │ ├── baselineprofile │ ├── AppSettingsBaselineProfile.kt │ ├── AppsBaselineProfile.kt │ ├── ServiceBaselineProfile.kt │ ├── SettingsBaselineProfile.kt │ └── StartupBaselineProfile.kt │ ├── service │ └── ServiceAction.kt │ ├── settings │ └── SettingsAction.kt │ └── startup │ └── StartupBenchmark.kt ├── broadcast-receiver ├── .gitignore ├── README.md ├── build.gradle.kts └── src │ └── main │ ├── AndroidManifest.xml │ └── kotlin │ └── com │ └── android │ └── geto │ └── broadcastreceiver │ ├── RevertSettingsBroadcastReceiver.kt │ └── StopUsageStatsForegroundServiceBroadcastReceiver.kt ├── build-logic ├── .gitignore ├── convention │ ├── build.gradle.kts │ └── src │ │ └── main │ │ └── kotlin │ │ ├── AndroidApplicationComposeConventionPlugin.kt │ │ ├── AndroidApplicationConventionPlugin.kt │ │ ├── AndroidApplicationJacocoConventionPlugin.kt │ │ ├── AndroidFeatureConventionPlugin.kt │ │ ├── AndroidHiltConventionPlugin.kt │ │ ├── AndroidLibraryComposeConventionPlugin.kt │ │ ├── AndroidLibraryConventionPlugin.kt │ │ ├── AndroidLibraryJacocoConventionPlugin.kt │ │ ├── AndroidLintConventionPlugin.kt │ │ ├── AndroidRoomConventionPlugin.kt │ │ ├── AndroidTestConventionPlugin.kt │ │ ├── JvmLibraryConventionPlugin.kt │ │ └── com │ │ └── android │ │ └── geto │ │ ├── AndroidCompose.kt │ │ ├── AndroidInstrumentedTests.kt │ │ ├── Badging.kt │ │ ├── GetoBuildType.kt │ │ ├── GradleManagedDevices.kt │ │ ├── Jacoco.kt │ │ ├── KotlinAndroid.kt │ │ └── ProjectExtensions.kt ├── gradle.properties └── settings.gradle.kts ├── build.gradle.kts ├── common ├── .gitignore ├── README.md ├── build.gradle.kts └── src │ ├── main │ ├── AndroidManifest.xml │ ├── kotlin │ │ └── com │ │ │ └── android │ │ │ └── geto │ │ │ └── common │ │ │ ├── CoroutineScopesModule.kt │ │ │ └── dispatcher │ │ │ └── DispatchersModule.kt │ └── res │ │ └── values │ │ └── strings.xml │ └── testFixtures │ └── kotlin │ └── com │ └── android │ └── geto │ └── common │ ├── GetoTestRunner.kt │ ├── GrantPostNotificationsPermissionRule.kt │ └── MainDispatcherRule.kt ├── compose_compiler_config.conf ├── data ├── datastore │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ ├── consumer-proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── kotlin │ │ │ └── com │ │ │ └── android │ │ │ └── geto │ │ │ └── data │ │ │ └── datastore │ │ │ └── UserPreferencesDataSourceTest.kt │ │ ├── main │ │ ├── kotlin │ │ │ └── com │ │ │ │ └── android │ │ │ │ └── geto │ │ │ │ └── data │ │ │ │ └── datastore │ │ │ │ ├── UserPreferencesDataSource.kt │ │ │ │ ├── UserPreferencesSerializer.kt │ │ │ │ └── di │ │ │ │ └── DataStoreModule.kt │ │ └── proto │ │ │ └── com │ │ │ └── android │ │ │ └── geto │ │ │ └── data │ │ │ └── datastore │ │ │ └── proto │ │ │ ├── dark_theme_config.proto │ │ │ ├── theme_brand.proto │ │ │ └── user_preferences.proto │ │ └── test │ │ └── kotlin │ │ └── com │ │ └── android │ │ └── geto │ │ └── data │ │ └── datastore │ │ └── UserPreferencesSerializerTest.kt ├── repository-test │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ └── kotlin │ │ └── com │ │ └── android │ │ └── geto │ │ └── data │ │ └── repository │ │ └── test │ │ ├── FakeAppSettingsRepository.kt │ │ ├── FakeSecureSettingsRepository.kt │ │ ├── FakeShortcutRepository.kt │ │ ├── FakeUserDataRepository.kt │ │ └── di │ │ └── TestRepositoryModule.kt ├── repository │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ └── kotlin │ │ └── com │ │ └── android │ │ └── geto │ │ └── data │ │ └── repository │ │ ├── DefaultAppSettingsRepository.kt │ │ ├── DefaultSecureSettingsRepository.kt │ │ ├── DefaultShortcutRepository.kt │ │ ├── DefaultUserDataRepository.kt │ │ └── di │ │ └── RepositoryModule.kt └── room │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ ├── schemas │ └── com.android.geto.data.room.AppDatabase │ │ ├── 1.json │ │ ├── 2.json │ │ ├── 3.json │ │ ├── 4.json │ │ ├── 5.json │ │ ├── 6.json │ │ ├── 7.json │ │ └── 8.json │ └── src │ ├── androidTest │ └── kotlin │ │ └── com │ │ └── android │ │ └── geto │ │ └── data │ │ └── room │ │ ├── dao │ │ └── AppSettingsDaoTest.kt │ │ └── migration │ │ └── MigrationTest.kt │ └── main │ ├── AndroidManifest.xml │ └── kotlin │ └── com │ └── android │ └── geto │ └── data │ └── room │ ├── AppDatabase.kt │ ├── dao │ └── AppSettingsDao.kt │ ├── di │ ├── DaoModule.kt │ └── RoomModule.kt │ ├── migration │ ├── AutoMigration.kt │ ├── Migration1To2.kt │ ├── Migration2To3.kt │ ├── Migration3To4.kt │ ├── Migration4To5.kt │ ├── Migration5To6.kt │ ├── Migration6To7.kt │ └── Migration7To8.kt │ └── model │ └── AppSettingEntity.kt ├── design-system ├── .gitignore ├── README.md ├── build.gradle.kts └── src │ ├── main │ ├── AndroidManifest.xml │ ├── kotlin │ │ └── com │ │ │ └── android │ │ │ └── geto │ │ │ └── designsystem │ │ │ ├── component │ │ │ ├── Dialog.kt │ │ │ ├── GetoLoadingWheel.kt │ │ │ ├── ShimmerImage.kt │ │ │ └── WavyCircle.kt │ │ │ ├── icon │ │ │ └── GetoIcons.kt │ │ │ └── theme │ │ │ ├── Color.kt │ │ │ └── Theme.kt │ └── res │ │ └── drawable │ │ └── ic_android_black_24dp.xml │ └── test │ ├── kotlin │ └── com │ │ └── android │ │ └── geto │ │ └── designsystem │ │ ├── LoadingWheelScreenshotTests.kt │ │ ├── ThemeTest.kt │ │ └── WavyCircleScreenshotTests.kt │ └── screenshots │ ├── LoadingWheel │ ├── LoadingWheelDynamicDarkTheme.png │ ├── LoadingWheelDynamicTheme.png │ ├── LoadingWheelGreenDarkTheme.png │ ├── LoadingWheelGreenTheme.png │ ├── LoadingWheelPurpleDarkTheme.png │ ├── LoadingWheelPurpleTheme.png │ ├── LoadingWheel_animation_1000.png │ ├── LoadingWheel_animation_115.png │ ├── LoadingWheel_animation_20.png │ ├── LoadingWheel_animation_724.png │ ├── LoadingWheel_dark_androidTheme_notDynamic.png │ ├── LoadingWheel_dark_defaultTheme_dynamic.png │ ├── LoadingWheel_dark_defaultTheme_notDynamic.png │ ├── LoadingWheel_light_androidTheme_notDynamic.png │ ├── LoadingWheel_light_defaultTheme_dynamic.png │ ├── LoadingWheel_light_defaultTheme_notDynamic.png │ ├── OverlayLoadingWheelDynamicDarkTheme.png │ ├── OverlayLoadingWheelDynamicTheme.png │ ├── OverlayLoadingWheelGreenDarkTheme.png │ ├── OverlayLoadingWheelGreenTheme.png │ ├── OverlayLoadingWheelPurpleDarkTheme.png │ ├── OverlayLoadingWheelPurpleTheme.png │ ├── OverlayLoadingWheel_dark_androidTheme_notDynamic.png │ ├── OverlayLoadingWheel_dark_defaultTheme_dynamic.png │ ├── OverlayLoadingWheel_dark_defaultTheme_notDynamic.png │ ├── OverlayLoadingWheel_light_androidTheme_notDynamic.png │ ├── OverlayLoadingWheel_light_defaultTheme_dynamic.png │ └── OverlayLoadingWheel_light_defaultTheme_notDynamic.png │ └── WavyCircle │ ├── AnimatedWavyCircle_animation_0.png │ ├── AnimatedWavyCircle_animation_250.png │ └── AnimatedWavyCircle_animation_500.png ├── docs └── images │ └── graphs │ ├── dep_graph_app.svg │ ├── dep_graph_broadcast_receiver.svg │ ├── dep_graph_common.svg │ ├── dep_graph_data_datastore.svg │ ├── dep_graph_data_datastore_proto.svg │ ├── dep_graph_data_datastore_test.svg │ ├── dep_graph_data_repository.svg │ ├── dep_graph_data_repository_test.svg │ ├── dep_graph_data_room.svg │ ├── dep_graph_design_system.svg │ ├── dep_graph_domain_broadcast_receiver.svg │ ├── dep_graph_domain_common.svg │ ├── dep_graph_domain_foreground_service.svg │ ├── dep_graph_domain_framework.svg │ ├── dep_graph_domain_model.svg │ ├── dep_graph_domain_repository.svg │ ├── dep_graph_domain_use_case.svg │ ├── dep_graph_feature_app_settings.svg │ ├── dep_graph_feature_apps.svg │ ├── dep_graph_feature_home.svg │ ├── dep_graph_feature_service.svg │ ├── dep_graph_feature_settings.svg │ ├── dep_graph_feature_shizuku.svg │ ├── dep_graph_foreground_service.svg │ ├── dep_graph_framework_asset_manager.svg │ ├── dep_graph_framework_clipboard_manager.svg │ ├── dep_graph_framework_framework_test.svg │ ├── dep_graph_framework_notification_manager.svg │ ├── dep_graph_framework_package_manager.svg │ ├── dep_graph_framework_secure_settings.svg │ ├── dep_graph_framework_shizuku.svg │ ├── dep_graph_framework_shortcut_manager.svg │ ├── dep_graph_framework_usage_stats_manager.svg │ └── dep_graph_roborazzi.svg ├── domain ├── common │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ └── main │ │ └── kotlin │ │ └── com │ │ └── android │ │ └── geto │ │ └── domain │ │ └── common │ │ └── dispatcher │ │ └── GetoDispatcher.kt ├── foreground-service │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ ├── main │ │ └── kotlin │ │ │ └── com │ │ │ └── android │ │ │ └── geto │ │ │ └── domain │ │ │ └── foregroundservice │ │ │ └── UsageStatsForegroundServiceManager.kt │ │ └── testFixtures │ │ └── kotlin │ │ └── com │ │ └── android │ │ └── geto │ │ └── domain │ │ └── foregroundservice │ │ └── FakeUsageStatsForegroundServiceManager.kt ├── framework │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ ├── main │ │ └── kotlin │ │ │ └── com │ │ │ └── android │ │ │ └── geto │ │ │ └── domain │ │ │ └── framework │ │ │ ├── AssetManagerWrapper.kt │ │ │ ├── NotificationManagerWrapper.kt │ │ │ ├── PackageManagerWrapper.kt │ │ │ ├── SecureSettingsWrapper.kt │ │ │ ├── ShizukuWrapper.kt │ │ │ ├── ShortcutManagerCompatWrapper.kt │ │ │ └── UsageStatsManagerWrapper.kt │ │ └── testFixtures │ │ └── kotlin │ │ └── com │ │ └── android │ │ └── geto │ │ └── domain │ │ └── framework │ │ ├── DummyNotificationManagerWrapper.kt │ │ ├── FakeAssetManagerWrapper.kt │ │ ├── FakePackageManagerWrapper.kt │ │ └── FakeUsageStatsManagerWrapper.kt ├── model │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ ├── consumer-proguard-rules.pro │ └── src │ │ └── main │ │ └── kotlin │ │ └── com │ │ └── android │ │ └── geto │ │ └── domain │ │ └── model │ │ ├── AddAppSettingResult.kt │ │ ├── AppSetting.kt │ │ ├── AppSettingTemplate.kt │ │ ├── AppSettingsResult.kt │ │ ├── DarkThemeConfig.kt │ │ ├── ForegroundServiceAppSettingsResult.kt │ │ ├── GetoApplicationInfo.kt │ │ ├── GetoShortcutInfoCompat.kt │ │ ├── GetoUsageEvent.kt │ │ ├── RequestPinShortcutResult.kt │ │ ├── SecureSetting.kt │ │ ├── ShizukuStatus.kt │ │ ├── ThemeBrand.kt │ │ ├── UpdateUsageStatsForegroundServiceResult.kt │ │ └── UserData.kt ├── repository │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ ├── main │ │ └── kotlin │ │ │ └── com │ │ │ └── android │ │ │ └── geto │ │ │ └── domain │ │ │ └── repository │ │ │ ├── AppSettingsRepository.kt │ │ │ ├── SecureSettingsRepository.kt │ │ │ ├── ShortcutRepository.kt │ │ │ └── UserDataRepository.kt │ │ └── testFixtures │ │ └── kotlin │ │ └── com │ │ └── android │ │ └── geto │ │ └── domain │ │ └── repository │ │ ├── TestAppSettingsRepository.kt │ │ ├── TestSecureSettingsRepository.kt │ │ ├── TestShortcutRepository.kt │ │ └── TestUserDataRepository.kt └── use-case │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ └── src │ ├── main │ └── kotlin │ │ └── com │ │ └── android │ │ └── geto │ │ └── domain │ │ └── usecase │ │ ├── AddAppSettingUseCase.kt │ │ ├── ApplyAppSettingsUseCase.kt │ │ ├── ForegroundServiceAppSettingsUseCase.kt │ │ ├── RequestPinShortcutUseCase.kt │ │ ├── RevertAppSettingsUseCase.kt │ │ └── UpdateUsageStatsForegroundServiceUseCase.kt │ └── test │ └── kotlin │ └── com │ └── android │ └── geto │ └── domain │ └── usecase │ ├── AddAppSettingUseCaseTest.kt │ ├── ApplyAppSettingsUseCaseTest.kt │ ├── ForegroundServiceAppSettingsUseCaseTest.kt │ ├── RequestPinShortcutUseCaseTest.kt │ └── RevertAppSettingsUseCaseTest.kt ├── fastlane └── metadata │ └── android │ └── en-US │ ├── changelogs │ ├── 11.txt │ ├── 12.txt │ ├── 13.txt │ ├── 14.txt │ ├── 15.txt │ ├── 151.txt │ ├── 152.txt │ ├── 153.txt │ ├── 154.txt │ ├── 155.txt │ ├── 156.txt │ ├── 157.txt │ ├── 158.txt │ ├── 159.txt │ ├── 160.txt │ ├── 161.txt │ ├── 162.txt │ ├── 163.txt │ ├── 164.txt │ ├── 165.txt │ ├── 166.txt │ ├── 167.txt │ ├── 168.txt │ ├── 169.txt │ ├── 2.txt │ ├── 4.txt │ ├── 5.txt │ ├── 6.txt │ ├── 8.txt │ └── 9.txt │ ├── full_description.txt │ ├── images │ ├── icon.png │ └── phoneScreenshots │ │ ├── 1.jpg │ │ ├── 2.jpg │ │ ├── 3.jpg │ │ ├── 4.jpg │ │ ├── 5.jpg │ │ ├── 6.jpg │ │ ├── 7.jpg │ │ └── 8.jpg │ ├── short_description.txt │ ├── title.txt │ └── video.txt ├── feature ├── app-settings │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ ├── androidTest │ │ └── kotlin │ │ │ └── com │ │ │ └── android │ │ │ └── geto │ │ │ └── feature │ │ │ └── appsettings │ │ │ ├── AppSettingsScreenDialogsTest.kt │ │ │ ├── AppSettingsScreenSnackbarTest.kt │ │ │ ├── AppSettingsScreenTest.kt │ │ │ └── dialog │ │ │ ├── appsetting │ │ │ └── AppSettingDialogTest.kt │ │ │ └── shortcut │ │ │ └── ShortcutDialogTest.kt │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── kotlin │ │ │ └── com │ │ │ │ └── android │ │ │ │ └── geto │ │ │ │ └── feature │ │ │ │ └── appsettings │ │ │ │ ├── AppSettingsScreen.kt │ │ │ │ ├── AppSettingsUiState.kt │ │ │ │ ├── AppSettingsViewModel.kt │ │ │ │ ├── dialog │ │ │ │ ├── appsetting │ │ │ │ │ ├── AppSettingDialog.kt │ │ │ │ │ └── AppSettingDialogState.kt │ │ │ │ ├── shortcut │ │ │ │ │ ├── ShortcutDialog.kt │ │ │ │ │ └── ShortcutDialogState.kt │ │ │ │ └── template │ │ │ │ │ ├── TemplateDialog.kt │ │ │ │ │ ├── TemplateDialogState.kt │ │ │ │ │ └── TemplateDialogUiState.kt │ │ │ │ └── navigation │ │ │ │ ├── AppSettingsNavigation.kt │ │ │ │ └── AppSettingsRouteData.kt │ │ └── res │ │ │ └── values │ │ │ └── strings.xml │ │ └── test │ │ ├── kotlin │ │ └── com │ │ │ └── android │ │ │ └── geto │ │ │ └── feature │ │ │ └── appsettings │ │ │ ├── AppSettingsScreenScreenshotTest.kt │ │ │ ├── AppSettingsScreenSnackbarScreenshotTest.kt │ │ │ ├── AppSettingsViewModelTest.kt │ │ │ └── dialog │ │ │ ├── appsetting │ │ │ ├── AppSettingDialogScreenshotTest.kt │ │ │ └── AppSettingsDialogStateTest.kt │ │ │ ├── shortcut │ │ │ ├── ShortcutDialogScreenshotTest.kt │ │ │ └── ShortcutDialogStateTest.kt │ │ │ └── template │ │ │ └── TemplateDialogScreenshotTest.kt │ │ └── screenshots │ │ ├── AppSettingDialogEmpty_foldable.png │ │ ├── AppSettingDialogEmpty_foldable_dark.png │ │ ├── AppSettingDialogErrorTextFields_foldable.png │ │ ├── AppSettingDialogErrorTextFields_foldable_dark.png │ │ ├── AppSettingDialogFilledTextFields_foldable.png │ │ ├── AppSettingDialogFilledTextFields_foldable_dark.png │ │ ├── AppSettingsScreenEmpty_foldable.png │ │ ├── AppSettingsScreenEmpty_phone.png │ │ ├── AppSettingsScreenEmpty_phone_dark.png │ │ ├── AppSettingsScreenEmpty_tablet.png │ │ ├── AppSettingsScreenLoading_foldable.png │ │ ├── AppSettingsScreenLoading_phone.png │ │ ├── AppSettingsScreenLoading_phone_dark.png │ │ ├── AppSettingsScreenLoading_tablet.png │ │ ├── AppSettingsScreenPopulated_foldable.png │ │ ├── AppSettingsScreenPopulated_phone.png │ │ ├── AppSettingsScreenPopulated_phone_dark.png │ │ ├── AppSettingsScreenPopulated_tablet.png │ │ ├── AppSettingsScreenSnackbar_foldable.png │ │ ├── AppSettingsScreenSnackbar_phone.png │ │ ├── AppSettingsScreenSnackbar_tablet.png │ │ ├── ShortcutDialogEmpty_foldable.png │ │ ├── ShortcutDialogEmpty_foldable_dark.png │ │ ├── ShortcutDialogErrorTextFields_foldable.png │ │ ├── ShortcutDialogErrorTextFields_foldable_dark.png │ │ ├── ShortcutDialogFilledTextFields_foldable.png │ │ ├── ShortcutDialogFilledTextFields_foldable_dark.png │ │ ├── TemplateDialogLoading_foldable.png │ │ ├── TemplateDialogLoading_foldable_dark.png │ │ ├── TemplateDialogPopulated_foldable.png │ │ └── TemplateDialogPopulated_foldable_dark.png ├── apps │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ ├── androidTest │ │ └── kotlin │ │ │ └── com │ │ │ └── android │ │ │ └── geto │ │ │ └── feature │ │ │ └── apps │ │ │ └── AppsScreenTest.kt │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── kotlin │ │ │ └── com │ │ │ │ └── android │ │ │ │ └── geto │ │ │ │ └── feature │ │ │ │ └── apps │ │ │ │ ├── AppsScreen.kt │ │ │ │ ├── AppsUiState.kt │ │ │ │ ├── AppsViewModel.kt │ │ │ │ └── navigation │ │ │ │ ├── AppsNavigation.kt │ │ │ │ └── AppsRouteData.kt │ │ └── res │ │ │ └── values │ │ │ └── strings.xml │ │ └── test │ │ ├── kotlin │ │ └── com │ │ │ └── android │ │ │ └── geto │ │ │ └── feature │ │ │ └── apps │ │ │ ├── AppsScreenScreenshotTest.kt │ │ │ └── AppsViewModelTest.kt │ │ └── screenshots │ │ ├── AppsScreenLoading_foldable.png │ │ ├── AppsScreenLoading_phone.png │ │ ├── AppsScreenLoading_phone_dark.png │ │ ├── AppsScreenLoading_tablet.png │ │ ├── AppsScreenPopulated_foldable.png │ │ ├── AppsScreenPopulated_phone.png │ │ ├── AppsScreenPopulated_phone_dark.png │ │ ├── AppsScreenPopulated_tablet.png │ │ ├── DockedSearchBarPopulated_foldable.png │ │ ├── DockedSearchBarPopulated_phone.png │ │ ├── DockedSearchBarPopulated_phone_dark.png │ │ └── DockedSearchBarPopulated_tablet.png ├── home │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ └── main │ │ └── kotlin │ │ └── com │ │ └── android │ │ └── geto │ │ └── feature │ │ └── home │ │ ├── HomeScreen.kt │ │ └── navigation │ │ ├── HomeDestination.kt │ │ ├── HomeNavigation.kt │ │ └── HomeRouteData.kt ├── service │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ ├── main │ │ └── kotlin │ │ │ └── com │ │ │ └── android │ │ │ └── geto │ │ │ └── feature │ │ │ └── service │ │ │ ├── ServiceScreen.kt │ │ │ ├── ServiceUiState.kt │ │ │ ├── ServiceViewModel.kt │ │ │ └── navigation │ │ │ ├── ServiceNavigation.kt │ │ │ └── ServiceRouteData.kt │ │ └── test │ │ ├── kotlin │ │ └── com │ │ │ └── android │ │ │ └── geto │ │ │ └── feature │ │ │ └── service │ │ │ ├── ServiceScreenScreenshotTest.kt │ │ │ └── ServiceViewModelTest.kt │ │ └── screenshots │ │ ├── ServiceScreenActive_foldable.png │ │ ├── ServiceScreenActive_phone.png │ │ ├── ServiceScreenActive_phone_dark.png │ │ ├── ServiceScreenActive_tablet.png │ │ ├── ServiceScreenInActive_foldable.png │ │ ├── ServiceScreenInActive_phone.png │ │ ├── ServiceScreenInActive_phone_dark.png │ │ └── ServiceScreenInActive_tablet.png ├── settings │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ ├── androidTest │ │ └── kotlin │ │ │ └── com │ │ │ └── android │ │ │ └── geto │ │ │ └── feature │ │ │ └── settings │ │ │ ├── SettingsScreenDialogsTest.kt │ │ │ └── SettingsScreenTest.kt │ │ ├── main │ │ ├── kotlin │ │ │ └── com │ │ │ │ └── android │ │ │ │ └── geto │ │ │ │ └── feature │ │ │ │ └── settings │ │ │ │ ├── SettingsScreen.kt │ │ │ │ ├── SettingsUiState.kt │ │ │ │ ├── SettingsViewModel.kt │ │ │ │ ├── dialog │ │ │ │ ├── dark │ │ │ │ │ └── DarkDialog.kt │ │ │ │ └── theme │ │ │ │ │ └── ThemeDialog.kt │ │ │ │ └── navigation │ │ │ │ ├── SettingsNavigation.kt │ │ │ │ └── SettingsRouteData.kt │ │ └── res │ │ │ └── values │ │ │ └── strings.xml │ │ └── test │ │ ├── kotlin │ │ └── com │ │ │ └── android │ │ │ └── geto │ │ │ └── feature │ │ │ └── settings │ │ │ ├── SettingsScreenScreenshotTest.kt │ │ │ ├── SettingsViewModelTest.kt │ │ │ └── dialog │ │ │ ├── dark │ │ │ └── DarkDialogScreenshotTest.kt │ │ │ └── theme │ │ │ └── ThemeDialogScreenshotTest.kt │ │ └── screenshots │ │ ├── DarkDialog_foldable.png │ │ ├── DarkDialog_foldable_dark.png │ │ ├── SettingsScreenLoading_foldable.png │ │ ├── SettingsScreenLoading_foldable_dark.png │ │ ├── SettingsScreenPopulated_foldable.png │ │ ├── SettingsScreenPopulated_foldable_dark.png │ │ ├── ThemeDialog_foldable.png │ │ └── ThemeDialog_foldable_dark.png └── shizuku │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ └── src │ └── main │ ├── kotlin │ └── com │ │ └── android │ │ └── geto │ │ └── feature │ │ └── shizuku │ │ ├── ShizukuScreen.kt │ │ ├── ShizukuViewModel.kt │ │ └── navigation │ │ ├── ShizukuNavigation.kt │ │ └── ShizukuRouteData.kt │ └── res │ └── values │ └── strings.xml ├── foreground-service ├── .gitignore ├── README.md ├── build.gradle.kts └── src │ └── main │ ├── AndroidManifest.xml │ ├── kotlin │ └── com │ │ └── android │ │ └── geto │ │ └── foregroundservice │ │ ├── AndroidUsageStatsForegroundServiceManager.kt │ │ ├── ForegroundServiceModule.kt │ │ └── UsageStatsService.kt │ └── res │ ├── drawable │ └── baseline_apps_24.xml │ └── values │ └── strings.xml ├── framework ├── asset-manager │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ ├── androidTest │ │ ├── assets │ │ │ └── FakeAppSettingTemplates.json │ │ └── kotlin │ │ │ └── com │ │ │ └── android │ │ │ └── geto │ │ │ └── framework │ │ │ └── assetmanager │ │ │ └── AssetManagerWrapperTest.kt │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── assets │ │ └── AppSettingTemplates.json │ │ └── kotlin │ │ └── com │ │ └── android │ │ └── geto │ │ └── framework │ │ └── assetmanager │ │ ├── AndroidAssetManagerWrapper.kt │ │ └── AssetManagerModule.kt ├── framework-test │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ └── main │ │ └── kotlin │ │ └── com │ │ └── android │ │ └── geto │ │ └── framework │ │ └── test │ │ ├── FakePackageManagerWrapper.kt │ │ └── TestFrameworkModule.kt ├── notification-manager │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ ├── AndroidManifest.xml │ │ └── main │ │ ├── kotlin │ │ └── com │ │ │ └── android │ │ │ └── geto │ │ │ └── framework │ │ │ └── notificationmanager │ │ │ ├── AndroidNotificationManagerWrapper.kt │ │ │ └── NotificationManagerModule.kt │ │ └── res │ │ ├── drawable │ │ └── baseline_settings_24.xml │ │ └── values │ │ └── strings.xml ├── package-manager │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ ├── androidTest │ │ └── kotlin │ │ │ └── com │ │ │ └── android │ │ │ └── geto │ │ │ └── framework │ │ │ └── packagemanager │ │ │ └── PackageManagerWrapperTest.kt │ │ └── main │ │ ├── AndroidManifest.xml │ │ └── kotlin │ │ └── com │ │ └── android │ │ └── geto │ │ └── framework │ │ └── packagemanager │ │ ├── AndroidPackageManagerWrapper.kt │ │ └── PackageManagerModule.kt ├── secure-settings │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ └── kotlin │ │ └── com │ │ └── android │ │ └── geto │ │ └── framework │ │ └── securesettings │ │ ├── AndroidSecureSettingsWrapper.kt │ │ └── SecureSettingsModule.kt ├── shizuku │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ ├── consumer-proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── aidl │ │ ├── android │ │ │ ├── app │ │ │ │ └── IActivityManager.aidl │ │ │ └── content │ │ │ │ └── pm │ │ │ │ └── IPackageManager.aidl │ │ └── com │ │ │ └── android │ │ │ └── geto │ │ │ └── framework │ │ │ └── shizuku │ │ │ └── IUserService.aidl │ │ └── kotlin │ │ └── com │ │ └── android │ │ └── geto │ │ └── framework │ │ └── shizuku │ │ ├── DefaultShizukuWrapper.kt │ │ ├── ShizukuModule.kt │ │ └── UserService.kt ├── shortcut-manager │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ └── kotlin │ │ └── com │ │ └── android │ │ └── geto │ │ └── framework │ │ └── shortcutmanager │ │ ├── AndroidShortcutManagerCompatWrapper.kt │ │ └── ShortcutManagerModule.kt └── usage-stats-manager │ ├── .gitignore │ ├── README.md │ ├── build.gradle.kts │ └── src │ └── main │ ├── AndroidManifest.xml │ └── kotlin │ └── com │ └── android │ └── geto │ └── framework │ └── usagestatsmanager │ ├── AndroidUsageStatsManagerWrapper.kt │ └── UsageStatsManagerModule.kt ├── generateModuleGraphs.sh ├── gradle.properties ├── gradle ├── init.gradle.kts ├── libs.versions.toml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── lint ├── .gitignore ├── build.gradle.kts └── src │ ├── main │ ├── AndroidManifest.xml │ ├── kotlin │ │ └── com │ │ │ └── android │ │ │ └── geto │ │ │ └── lint │ │ │ ├── GetoIssueRegistry.kt │ │ │ └── TestMethodNameDetector.kt │ └── resources │ │ └── META-INF │ │ └── services │ │ └── com.android.tools.lint.client.api.IssueRegistry │ └── test │ └── kotlin │ └── com │ └── android │ └── geto │ └── lint │ └── TestMethodNameDetectorTest.kt ├── roborazzi ├── .gitignore ├── README.md ├── build.gradle.kts └── src │ └── main │ └── kotlin │ └── com │ └── android │ └── geto │ └── roborazzi │ ├── DialogScreenshotHelper.kt │ ├── ScreenshotHelper.kt │ └── SnackbarScreenshotHelper.kt ├── settings.gradle.kts └── spotless ├── copyright.kt ├── copyright.kts └── copyright.xml /.editorconfig: -------------------------------------------------------------------------------- 1 | # https://editorconfig.org/ 2 | # This configuration is used by ktlint when spotless invokes it 3 | 4 | [*.{kt,kts}] 5 | ij_kotlin_allow_trailing_comma = true 6 | ij_kotlin_allow_trailing_comma_on_call_site = true 7 | ktlint_function_naming_ignore_when_annotated_with = Composable, Test 8 | ktlint_standard_backing-property-naming = disabled -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | custom: "https://www.paypal.me/jackeblan" 2 | -------------------------------------------------------------------------------- /.github/ci-gradle.properties: -------------------------------------------------------------------------------- 1 | # 2 | # 3 | # Copyright 2023 Einstein Blanco 4 | # 5 | # Licensed under the GNU General Public License v3.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # https://www.gnu.org/licenses/gpl-3.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | # 18 | org.gradle.daemon=false 19 | org.gradle.parallel=true 20 | org.gradle.workers.max=2 21 | org.gradle.configuration-cache=true 22 | org.gradle.configuration-cache.parallel=true 23 | 24 | kotlin.incremental=false 25 | 26 | # Controls KotlinOptions.allWarningsAsErrors. 27 | # This value used in CI and is currently set to false. 28 | # If you want to treat warnings as errors locally, set this property to true 29 | # in your ~/.gradle/gradle.properties file. 30 | warningsAsErrors=false -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates 2 | version: 2 3 | updates: 4 | - package-ecosystem: "github-actions" 5 | directory: "/" 6 | schedule: 7 | interval: "weekly" 8 | - package-ecosystem: "gradle" 9 | directory: "/" 10 | schedule: 11 | interval: "weekly" 12 | registries: "*" 13 | labels: [ "version update" ] 14 | groups: 15 | kotlin-ksp: 16 | patterns: 17 | - "org.jetbrains.kotlin:*" 18 | - "org.jetbrains.kotlin.jvm" 19 | - "com.google.devtools.ksp" 20 | open-pull-requests-limit: 10 21 | registries: 22 | maven-google: 23 | type: "maven-repository" 24 | url: "https://maven.google.com" 25 | replaces-base: true 26 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | _Thanks for submitting a pull request. Please include the following information._ 2 | 3 | **What I have done and why** 4 | 5 | _Include a summary of what your pull request contains, and why you have made these changes._ 6 | 7 | Fixes # 8 | 9 | **How I'm testing it** 10 | 11 | _Choose at least one:_ 12 | 13 | - Unit tests 14 | - UI tests 15 | - Screenshot tests 16 | - N/A _(provide justification)_ 17 | 18 | **Do tests pass?** 19 | 20 | - [ ] Run local tests on `DemoDebug` variant: `./gradlew testDemoDebug` 21 | - [ ] Check formatting: `./gradlew --init-script gradle/init.gradle.kts spotlessApply` 22 | 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches 5 | /.idea/libraries 6 | /.idea/modules.xml 7 | /.idea/workspace.xml 8 | /.idea/navEditor.xml 9 | /.idea/assetWizardSettings.xml 10 | .DS_Store 11 | /build 12 | /captures 13 | .externalNativeBuild 14 | .cxx 15 | local.properties 16 | *.jks 17 | .kotlin 18 | -------------------------------------------------------------------------------- /.idea/appInsightsSettings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 26 | 27 | -------------------------------------------------------------------------------- /.idea/copyright/GNU_General_Public_License_v3_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /.idea/deploymentTargetDropDown.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /.idea/dictionaries/User.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/kotlinc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 9 | 10 | 12 | -------------------------------------------------------------------------------- /.idea/migrations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | -------------------------------------------------------------------------------- /.idea/render.experimental.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 17 | -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingDialogEmpty_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingDialogEmpty_foldable.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingDialogEmpty_foldable_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingDialogEmpty_foldable_dark.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingDialogErrorTextFields_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingDialogErrorTextFields_foldable.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingDialogErrorTextFields_foldable_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingDialogErrorTextFields_foldable_dark.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingDialogFilledTextFields_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingDialogFilledTextFields_foldable.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingDialogFilledTextFields_foldable_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingDialogFilledTextFields_foldable_dark.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenEmpty_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenEmpty_foldable.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenEmpty_phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenEmpty_phone.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenEmpty_phone_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenEmpty_phone_dark.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenEmpty_tablet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenEmpty_tablet.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenLoading_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenLoading_foldable.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenLoading_phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenLoading_phone.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenLoading_phone_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenLoading_phone_dark.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenLoading_tablet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenLoading_tablet.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenPopulated_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenPopulated_foldable.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenPopulated_phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenPopulated_phone.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenPopulated_phone_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenPopulated_phone_dark.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenPopulated_tablet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenPopulated_tablet.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenSnackbar_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenSnackbar_foldable.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenSnackbar_phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenSnackbar_phone.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenSnackbar_tablet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppSettingsScreenSnackbar_tablet.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppsScreenPopulated_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppsScreenPopulated_foldable.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppsScreenPopulated_phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppsScreenPopulated_phone.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppsScreenPopulated_phone_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppsScreenPopulated_phone_dark.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppsScreenPopulated_tablet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/AppsScreenPopulated_tablet.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/CleanDialog_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/CleanDialog_foldable.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/CleanDialog_foldable_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/CleanDialog_foldable_dark.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/DarkDialog_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/DarkDialog_foldable.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/DarkDialog_foldable_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/DarkDialog_foldable_dark.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/PermissionDialog_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/PermissionDialog_foldable.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/PermissionDialog_foldable_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/PermissionDialog_foldable_dark.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/SettingsScreenPopulated_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/SettingsScreenPopulated_foldable.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/SettingsScreenPopulated_foldable_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/SettingsScreenPopulated_foldable_dark.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/ShortcutDialogEmpty_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/ShortcutDialogEmpty_foldable.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/ShortcutDialogEmpty_foldable_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/ShortcutDialogEmpty_foldable_dark.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/ShortcutDialogErrorTextFields_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/ShortcutDialogErrorTextFields_foldable.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/ShortcutDialogErrorTextFields_foldable_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/ShortcutDialogErrorTextFields_foldable_dark.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/ShortcutDialogFilledTextFields_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/ShortcutDialogFilledTextFields_foldable.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/ShortcutDialogFilledTextFields_foldable_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/ShortcutDialogFilledTextFields_foldable_dark.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/TemplateDialogLoading_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/TemplateDialogLoading_foldable.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/TemplateDialogLoading_foldable_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/TemplateDialogLoading_foldable_dark.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/TemplateDialogPopulated_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/TemplateDialogPopulated_foldable.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/TemplateDialogPopulated_foldable_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/TemplateDialogPopulated_foldable_dark.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/ThemeDialog_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/ThemeDialog_foldable.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/ThemeDialog_foldable_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/ThemeDialog_foldable_dark.png -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/shelved.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/.idea/shelf/Uncommitted_changes_before_Update_at_10_11_2024_1_52_PM_[Changes]/shelved.patch -------------------------------------------------------------------------------- /.idea/shelf/Uncommitted_changes_before_Update_at_14_01_2024_2_14_pm__Changes_.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.run/Generate Demo Baseline Profile.run.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 18 | 20 | true 21 | true 22 | false 23 | false 24 | 25 | 26 | -------------------------------------------------------------------------------- /.run/spotlessApply.run.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 16 | 18 | true 19 | true 20 | false 21 | false 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | 3 | -------------------------------------------------------------------------------- /app/README.md: -------------------------------------------------------------------------------- 1 | # :app module 2 | ## Dependency graph 3 | ![Dependency graph](../docs/images/graphs/dep_graph_app.svg) 4 | -------------------------------------------------------------------------------- /app/benchmark-rules.pro: -------------------------------------------------------------------------------- 1 | # Proguard rules for the `benchmark` build type. 2 | # 3 | # Obsfuscation must be disabled for the build variant that generates Baseline Profile, otherwise 4 | # wrong symbols would be generated. The generated Baseline Profile will be properly applied when generated 5 | # without obfuscation and your app is being obfuscated. 6 | -dontobfuscate 7 | 8 | # Please add these rules to your existing keep rules in order to suppress warnings. 9 | # This is generated automatically by the Android Gradle plugin. 10 | -dontwarn org.bouncycastle.jsse.BCSSLParameters 11 | -dontwarn org.bouncycastle.jsse.BCSSLSocket 12 | -dontwarn org.bouncycastle.jsse.provider.BouncyCastleJsseProvider 13 | -dontwarn org.conscrypt.Conscrypt$Version 14 | -dontwarn org.conscrypt.Conscrypt 15 | -dontwarn org.conscrypt.ConscryptHostnameVerifier 16 | -dontwarn org.openjsse.javax.net.ssl.SSLParameters 17 | -dontwarn org.openjsse.javax.net.ssl.SSLSocket 18 | -dontwarn org.openjsse.net.ssl.OpenJSSE 19 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | -dontwarn org.bouncycastle.jsse.BCSSLParameters 2 | -dontwarn org.bouncycastle.jsse.BCSSLSocket 3 | -dontwarn org.bouncycastle.jsse.provider.BouncyCastleJsseProvider 4 | -dontwarn org.conscrypt.Conscrypt$Version 5 | -dontwarn org.conscrypt.Conscrypt 6 | -dontwarn org.conscrypt.ConscryptHostnameVerifier 7 | -dontwarn org.openjsse.javax.net.ssl.SSLParameters 8 | -dontwarn org.openjsse.javax.net.ssl.SSLSocket 9 | -dontwarn org.openjsse.net.ssl.OpenJSSE 10 | 11 | # With R8 full mode generic signatures are stripped for classes that are not 12 | # kept. Suspend functions are wrapped in continuations where the type argument 13 | # is used. 14 | -keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation 15 | 16 | -keepattributes LineNumberTable,SourceFile 17 | -renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /app/src/debug/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | Geto Debug 20 | -------------------------------------------------------------------------------- /app/src/main/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/app/src/main/ic_launcher-playstore.png -------------------------------------------------------------------------------- /app/src/main/kotlin/com/android/geto/GetoApplication.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto 19 | 20 | import android.app.Application 21 | import dagger.hilt.android.HiltAndroidApp 22 | 23 | @HiltAndroidApp 24 | class GetoApplication : Application() 25 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/android/geto/MainActivityUiState.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto 19 | 20 | import com.android.geto.domain.model.UserData 21 | 22 | sealed interface MainActivityUiState { 23 | data object Loading : MainActivityUiState 24 | 25 | data class Success(val userData: UserData) : MainActivityUiState 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/values-night/themes.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | #FFFFFF 20 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | Geto 20 | Apps 21 | Settings 22 | Please grant notifications permission 23 | Allow 24 | Service 25 | -------------------------------------------------------------------------------- /app/src/main/res/xml/backup_rules.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/xml/data_extraction_rules.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | 24 | 25 | 31 | -------------------------------------------------------------------------------- /benchmarks/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /benchmarks/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 18 | -------------------------------------------------------------------------------- /benchmarks/src/main/kotlin/com/android/geto/benchmarks/Utils.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.benchmarks 19 | 20 | import androidx.test.uiautomator.Direction 21 | import androidx.test.uiautomator.UiDevice 22 | import androidx.test.uiautomator.UiObject2 23 | 24 | const val PACKAGE_NAME = "com.android.geto" 25 | 26 | fun UiDevice.flingElementDownUp(element: UiObject2) { 27 | // Set some margin from the sides to prevent triggering system navigation 28 | element.setGestureMargin(displayWidth / 5) 29 | 30 | element.fling(Direction.DOWN) 31 | waitForIdle() 32 | element.fling(Direction.UP) 33 | } 34 | -------------------------------------------------------------------------------- /benchmarks/src/main/kotlin/com/android/geto/benchmarks/service/ServiceAction.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.benchmarks.service 19 | 20 | import androidx.benchmark.macro.MacrobenchmarkScope 21 | import androidx.test.uiautomator.By 22 | import com.android.geto.benchmarks.waitForLoadingWheelToDisappear 23 | 24 | fun MacrobenchmarkScope.goToServiceScreen() { 25 | waitForLoadingWheelToDisappear() 26 | clickServiceIcon() 27 | device.waitForIdle() 28 | } 29 | 30 | private fun MacrobenchmarkScope.clickServiceIcon() { 31 | val serviceIcon = device.findObject(By.desc("Service icon")) 32 | serviceIcon.click() 33 | } 34 | -------------------------------------------------------------------------------- /benchmarks/src/main/kotlin/com/android/geto/benchmarks/settings/SettingsAction.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.benchmarks.settings 19 | 20 | import androidx.benchmark.macro.MacrobenchmarkScope 21 | import androidx.test.uiautomator.By 22 | import com.android.geto.benchmarks.waitForLoadingWheelToDisappear 23 | 24 | fun MacrobenchmarkScope.goToSettingsScreen() { 25 | waitForLoadingWheelToDisappear() 26 | clickSettingsIcon() 27 | device.waitForIdle() 28 | } 29 | 30 | private fun MacrobenchmarkScope.clickSettingsIcon() { 31 | val settingsIcon = device.findObject(By.desc("Settings icon")) 32 | settingsIcon.click() 33 | } 34 | -------------------------------------------------------------------------------- /broadcast-receiver/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /broadcast-receiver/README.md: -------------------------------------------------------------------------------- 1 | # :broadcast-receiver module 2 | ## Dependency graph 3 | ![Dependency graph](../docs/images/graphs/dep_graph_broadcast_receiver.svg) 4 | -------------------------------------------------------------------------------- /broadcast-receiver/build.gradle.kts: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | 19 | plugins { 20 | alias(libs.plugins.com.android.geto.library) 21 | alias(libs.plugins.com.android.geto.hilt) 22 | } 23 | 24 | android { 25 | namespace = "com.android.geto.broadcastreceiver" 26 | } 27 | 28 | dependencies { 29 | implementation(libs.androidx.core.ktx) 30 | implementation(projects.common) 31 | implementation(projects.domain.common) 32 | implementation(projects.domain.foregroundService) 33 | implementation(projects.domain.framework) 34 | implementation(projects.domain.useCase) 35 | } -------------------------------------------------------------------------------- /build-logic/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | /convention/build/ 3 | -------------------------------------------------------------------------------- /build-logic/convention/src/main/kotlin/JvmLibraryConventionPlugin.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | 19 | import com.android.geto.configureKotlinJvm 20 | import org.gradle.api.Plugin 21 | import org.gradle.api.Project 22 | 23 | class JvmLibraryConventionPlugin : Plugin { 24 | override fun apply(target: Project) { 25 | with(target) { 26 | with(pluginManager) { 27 | apply("org.jetbrains.kotlin.jvm") 28 | apply("com.android.geto.lint") 29 | } 30 | configureKotlinJvm() 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /build-logic/convention/src/main/kotlin/com/android/geto/GetoBuildType.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | 19 | package com.android.geto 20 | 21 | /** 22 | * This is shared between :app and :benchmarks module to provide configurations type safety. 23 | */ 24 | enum class GetoBuildType(val applicationIdSuffix: String? = null) { 25 | DEBUG(".debug"), RELEASE, 26 | } -------------------------------------------------------------------------------- /build-logic/convention/src/main/kotlin/com/android/geto/ProjectExtensions.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | 19 | package com.android.geto 20 | 21 | import org.gradle.api.Project 22 | import org.gradle.api.artifacts.VersionCatalog 23 | import org.gradle.api.artifacts.VersionCatalogsExtension 24 | import org.gradle.kotlin.dsl.getByType 25 | 26 | val Project.libs 27 | get(): VersionCatalog = extensions.getByType().named("libs") 28 | -------------------------------------------------------------------------------- /build-logic/gradle.properties: -------------------------------------------------------------------------------- 1 | # 2 | # 3 | # Copyright 2023 Einstein Blanco 4 | # 5 | # Licensed under the GNU General Public License v3.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # https://www.gnu.org/licenses/gpl-3.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | # 18 | org.gradle.parallel=true 19 | org.gradle.caching=true 20 | org.gradle.configureondemand=true 21 | org.gradle.configuration-cache=true 22 | org.gradle.configuration-cache.parallel=true -------------------------------------------------------------------------------- /build-logic/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | 19 | dependencyResolutionManagement { 20 | repositories { 21 | google() 22 | mavenCentral() 23 | } 24 | versionCatalogs { 25 | create("libs") { 26 | from(files("../gradle/libs.versions.toml")) 27 | } 28 | } 29 | } 30 | 31 | rootProject.name = "build-logic" 32 | include(":convention") -------------------------------------------------------------------------------- /common/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /common/README.md: -------------------------------------------------------------------------------- 1 | # :common module 2 | ## Dependency graph 3 | ![Dependency graph](../docs/images/graphs/dep_graph_common.svg) 4 | -------------------------------------------------------------------------------- /common/build.gradle.kts: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | 19 | plugins { 20 | alias(libs.plugins.com.android.geto.library) 21 | alias(libs.plugins.com.android.geto.libraryJacoco) 22 | alias(libs.plugins.com.android.geto.hilt) 23 | } 24 | 25 | android { 26 | namespace = "com.android.geto.common" 27 | 28 | testFixtures { 29 | enable = true 30 | } 31 | } 32 | 33 | dependencies { 34 | implementation(projects.domain.common) 35 | testFixturesApi(libs.androidx.test.rules) 36 | testFixturesApi(libs.hilt.android.testing) 37 | testFixturesApi(libs.kotlinx.coroutines.test) 38 | } -------------------------------------------------------------------------------- /common/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /common/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | Geto Notification Channel ID 20 | -------------------------------------------------------------------------------- /compose_compiler_config.conf: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /data/datastore/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /data/datastore/README.md: -------------------------------------------------------------------------------- 1 | # :data:datastore module 2 | ## Dependency graph 3 | ![Dependency graph](../../docs/images/graphs/dep_graph_data_datastore.svg) 4 | -------------------------------------------------------------------------------- /data/datastore/consumer-proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Keep DataStore fields 2 | -keepclassmembers class * extends com.google.protobuf.GeneratedMessageLite* { 3 | ; 4 | } -------------------------------------------------------------------------------- /data/datastore/src/main/proto/com/android/geto/data/datastore/proto/dark_theme_config.proto: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | 19 | syntax = "proto3"; 20 | 21 | option java_package = "com.android.geto.data.datastore.proto"; 22 | option java_multiple_files = true; 23 | 24 | enum DarkThemeConfigProto { 25 | DARK_THEME_CONFIG_UNSPECIFIED = 0; 26 | DARK_THEME_CONFIG_FOLLOW_SYSTEM = 1; 27 | DARK_THEME_CONFIG_LIGHT = 2; 28 | DARK_THEME_CONFIG_DARK = 3; 29 | } -------------------------------------------------------------------------------- /data/datastore/src/main/proto/com/android/geto/data/datastore/proto/theme_brand.proto: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | 19 | syntax = "proto3"; 20 | 21 | option java_package = "com.android.geto.data.datastore.proto"; 22 | option java_multiple_files = true; 23 | 24 | enum ThemeBrandProto { 25 | THEME_BRAND_UNSPECIFIED = 0; 26 | THEME_BRAND_GREEN = 1; 27 | THEME_BRAND_PURPLE = 2; 28 | } -------------------------------------------------------------------------------- /data/datastore/src/main/proto/com/android/geto/data/datastore/proto/user_preferences.proto: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | 19 | syntax = "proto3"; 20 | 21 | import "com/android/geto/data/datastore/proto/dark_theme_config.proto"; 22 | import "com/android/geto/data/datastore/proto/theme_brand.proto"; 23 | 24 | option java_package = "com.android.geto.data.datastore.proto"; 25 | option java_multiple_files = true; 26 | 27 | message UserPreferences { 28 | 29 | ThemeBrandProto theme_brand = 16; 30 | DarkThemeConfigProto dark_theme_config = 17; 31 | 32 | bool use_dynamic_color = 19; 33 | } 34 | 35 | -------------------------------------------------------------------------------- /data/repository-test/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /data/repository-test/README.md: -------------------------------------------------------------------------------- 1 | # :data:repository-test module 2 | ## Dependency graph 3 | ![Dependency graph](../../docs/images/graphs/dep_graph_data_repository_test.svg) 4 | -------------------------------------------------------------------------------- /data/repository-test/build.gradle.kts: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | 19 | plugins { 20 | alias(libs.plugins.com.android.geto.library) 21 | alias(libs.plugins.com.android.geto.libraryJacoco) 22 | alias(libs.plugins.com.android.geto.hilt) 23 | } 24 | 25 | android { 26 | namespace = "com.android.geto.data.repository.test" 27 | } 28 | 29 | dependencies { 30 | implementation(projects.data.repository) 31 | implementation(projects.domain.repository) 32 | 33 | implementation(libs.hilt.android.testing) 34 | } -------------------------------------------------------------------------------- /data/repository-test/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /data/repository/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /data/repository/README.md: -------------------------------------------------------------------------------- 1 | # :data:repository module 2 | ## Dependency graph 3 | ![Dependency graph](../../docs/images/graphs/dep_graph_data_repository.svg) 4 | -------------------------------------------------------------------------------- /data/repository/build.gradle.kts: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | 19 | plugins { 20 | alias(libs.plugins.com.android.geto.library) 21 | alias(libs.plugins.com.android.geto.libraryJacoco) 22 | alias(libs.plugins.com.android.geto.hilt) 23 | } 24 | 25 | android { 26 | namespace = "com.android.geto.data.repository" 27 | } 28 | 29 | dependencies { 30 | implementation(projects.data.datastore) 31 | implementation(projects.data.room) 32 | implementation(projects.domain.common) 33 | implementation(projects.domain.framework) 34 | implementation(projects.domain.repository) 35 | } -------------------------------------------------------------------------------- /data/repository/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /data/room/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /data/room/README.md: -------------------------------------------------------------------------------- 1 | # :data:room module 2 | ## Dependency graph 3 | ![Dependency graph](../../docs/images/graphs/dep_graph_data_room.svg) 4 | -------------------------------------------------------------------------------- /data/room/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /data/room/src/main/kotlin/com/android/geto/data/room/model/AppSettingEntity.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.data.room.model 19 | 20 | import androidx.room.Entity 21 | import androidx.room.PrimaryKey 22 | import com.android.geto.domain.model.SettingType 23 | 24 | @Entity 25 | data class AppSettingEntity( 26 | @PrimaryKey(autoGenerate = true) val id: Int = 0, 27 | val enabled: Boolean, 28 | val settingType: SettingType, 29 | val packageName: String, 30 | val label: String, 31 | val key: String, 32 | val valueOnLaunch: String, 33 | val valueOnRevert: String, 34 | ) 35 | -------------------------------------------------------------------------------- /design-system/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /design-system/README.md: -------------------------------------------------------------------------------- 1 | # :design-system module 2 | ## Dependency graph 3 | ![Dependency graph](../docs/images/graphs/dep_graph_design_system.svg) 4 | -------------------------------------------------------------------------------- /design-system/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /design-system/src/test/screenshots/LoadingWheel/LoadingWheelDynamicDarkTheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/LoadingWheel/LoadingWheelDynamicDarkTheme.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/LoadingWheel/LoadingWheelDynamicTheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/LoadingWheel/LoadingWheelDynamicTheme.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/LoadingWheel/LoadingWheelGreenDarkTheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/LoadingWheel/LoadingWheelGreenDarkTheme.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/LoadingWheel/LoadingWheelGreenTheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/LoadingWheel/LoadingWheelGreenTheme.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/LoadingWheel/LoadingWheelPurpleDarkTheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/LoadingWheel/LoadingWheelPurpleDarkTheme.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/LoadingWheel/LoadingWheelPurpleTheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/LoadingWheel/LoadingWheelPurpleTheme.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/LoadingWheel/LoadingWheel_animation_1000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/LoadingWheel/LoadingWheel_animation_1000.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/LoadingWheel/LoadingWheel_animation_115.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/LoadingWheel/LoadingWheel_animation_115.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/LoadingWheel/LoadingWheel_animation_20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/LoadingWheel/LoadingWheel_animation_20.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/LoadingWheel/LoadingWheel_animation_724.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/LoadingWheel/LoadingWheel_animation_724.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/LoadingWheel/LoadingWheel_dark_androidTheme_notDynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/LoadingWheel/LoadingWheel_dark_androidTheme_notDynamic.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/LoadingWheel/LoadingWheel_dark_defaultTheme_dynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/LoadingWheel/LoadingWheel_dark_defaultTheme_dynamic.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/LoadingWheel/LoadingWheel_dark_defaultTheme_notDynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/LoadingWheel/LoadingWheel_dark_defaultTheme_notDynamic.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/LoadingWheel/LoadingWheel_light_androidTheme_notDynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/LoadingWheel/LoadingWheel_light_androidTheme_notDynamic.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/LoadingWheel/LoadingWheel_light_defaultTheme_dynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/LoadingWheel/LoadingWheel_light_defaultTheme_dynamic.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/LoadingWheel/LoadingWheel_light_defaultTheme_notDynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/LoadingWheel/LoadingWheel_light_defaultTheme_notDynamic.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/LoadingWheel/OverlayLoadingWheelDynamicDarkTheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/LoadingWheel/OverlayLoadingWheelDynamicDarkTheme.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/LoadingWheel/OverlayLoadingWheelDynamicTheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/LoadingWheel/OverlayLoadingWheelDynamicTheme.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/LoadingWheel/OverlayLoadingWheelGreenDarkTheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/LoadingWheel/OverlayLoadingWheelGreenDarkTheme.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/LoadingWheel/OverlayLoadingWheelGreenTheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/LoadingWheel/OverlayLoadingWheelGreenTheme.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/LoadingWheel/OverlayLoadingWheelPurpleDarkTheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/LoadingWheel/OverlayLoadingWheelPurpleDarkTheme.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/LoadingWheel/OverlayLoadingWheelPurpleTheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/LoadingWheel/OverlayLoadingWheelPurpleTheme.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_dark_androidTheme_notDynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_dark_androidTheme_notDynamic.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_dark_defaultTheme_dynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_dark_defaultTheme_dynamic.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_dark_defaultTheme_notDynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_dark_defaultTheme_notDynamic.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_light_androidTheme_notDynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_light_androidTheme_notDynamic.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_light_defaultTheme_dynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_light_defaultTheme_dynamic.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_light_defaultTheme_notDynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_light_defaultTheme_notDynamic.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/WavyCircle/AnimatedWavyCircle_animation_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/WavyCircle/AnimatedWavyCircle_animation_0.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/WavyCircle/AnimatedWavyCircle_animation_250.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/WavyCircle/AnimatedWavyCircle_animation_250.png -------------------------------------------------------------------------------- /design-system/src/test/screenshots/WavyCircle/AnimatedWavyCircle_animation_500.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/design-system/src/test/screenshots/WavyCircle/AnimatedWavyCircle_animation_500.png -------------------------------------------------------------------------------- /docs/images/graphs/dep_graph_data_datastore_proto.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | G 11 | 12 | 13 | 14 | :data:datastore-proto 15 | 16 | :data:datastore-proto 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /docs/images/graphs/dep_graph_domain_broadcast_receiver.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | G 11 | 12 | 13 | 14 | :domain:broadcast-receiver 15 | 16 | :domain:broadcast-receiver 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /docs/images/graphs/dep_graph_domain_common.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | G 11 | 12 | 13 | 14 | :domain:common 15 | 16 | :domain:common 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /docs/images/graphs/dep_graph_domain_foreground_service.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | G 11 | 12 | 13 | 14 | :domain:foreground-service 15 | 16 | :domain:foreground-service 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /docs/images/graphs/dep_graph_domain_model.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | G 11 | 12 | 13 | 14 | :domain:model 15 | 16 | :domain:model 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /domain/common/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /domain/common/README.md: -------------------------------------------------------------------------------- 1 | # :domain:common module 2 | ## Dependency graph 3 | ![Dependency graph](../../docs/images/graphs/dep_graph_domain_common.svg) 4 | -------------------------------------------------------------------------------- /domain/common/build.gradle.kts: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | 19 | plugins { 20 | alias(libs.plugins.com.android.geto.library) 21 | alias(libs.plugins.com.android.geto.libraryJacoco) 22 | } 23 | 24 | android { 25 | namespace = "com.android.geto.domain.common" 26 | } 27 | 28 | dependencies { 29 | api(libs.javax.inject) 30 | } -------------------------------------------------------------------------------- /domain/common/src/main/kotlin/com/android/geto/domain/common/dispatcher/GetoDispatcher.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.domain.common.dispatcher 19 | 20 | import javax.inject.Qualifier 21 | import kotlin.annotation.AnnotationRetention.RUNTIME 22 | 23 | @Qualifier 24 | @Retention(RUNTIME) 25 | annotation class Dispatcher(val getoDispatcher: GetoDispatchers) 26 | 27 | enum class GetoDispatchers { 28 | Default, 29 | IO, 30 | } 31 | -------------------------------------------------------------------------------- /domain/foreground-service/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /domain/foreground-service/README.md: -------------------------------------------------------------------------------- 1 | # :domain:foreground-service module 2 | ## Dependency graph 3 | ![Dependency graph](../../docs/images/graphs/dep_graph_domain_foreground_service.svg) 4 | -------------------------------------------------------------------------------- /domain/foreground-service/build.gradle.kts: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | 19 | plugins { 20 | alias(libs.plugins.com.android.geto.library) 21 | alias(libs.plugins.com.android.geto.libraryJacoco) 22 | } 23 | 24 | android { 25 | namespace = "com.android.geto.domain.foregroundservice" 26 | 27 | testFixtures { 28 | enable = true 29 | } 30 | 31 | } 32 | 33 | dependencies { 34 | implementation(libs.kotlinx.coroutines.core) 35 | 36 | testFixturesImplementation(projects.domain.model) 37 | testFixturesImplementation(libs.kotlinx.coroutines.core) 38 | } -------------------------------------------------------------------------------- /domain/foreground-service/src/main/kotlin/com/android/geto/domain/foregroundservice/UsageStatsForegroundServiceManager.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.domain.foregroundservice 19 | 20 | import kotlinx.coroutines.flow.Flow 21 | 22 | interface UsageStatsForegroundServiceManager { 23 | val isActive: Flow 24 | 25 | fun updateForegroundService() 26 | } 27 | -------------------------------------------------------------------------------- /domain/framework/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /domain/framework/README.md: -------------------------------------------------------------------------------- 1 | # :domain:framework module 2 | ## Dependency graph 3 | ![Dependency graph](../../docs/images/graphs/dep_graph_domain_framework.svg) 4 | -------------------------------------------------------------------------------- /domain/framework/build.gradle.kts: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | 19 | plugins { 20 | alias(libs.plugins.com.android.geto.library) 21 | alias(libs.plugins.com.android.geto.libraryJacoco) 22 | } 23 | 24 | android { 25 | namespace = "com.android.geto.domain.framework" 26 | 27 | testFixtures { 28 | enable = true 29 | } 30 | } 31 | 32 | dependencies { 33 | api(projects.domain.model) 34 | implementation(libs.kotlinx.coroutines.core) 35 | 36 | testFixturesImplementation(projects.domain.model) 37 | testFixturesImplementation(libs.kotlinx.coroutines.core) 38 | } -------------------------------------------------------------------------------- /domain/framework/src/main/kotlin/com/android/geto/domain/framework/AssetManagerWrapper.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.domain.framework 19 | 20 | import com.android.geto.domain.model.AppSettingTemplate 21 | 22 | interface AssetManagerWrapper { 23 | suspend fun getAppSettingTemplates(): List 24 | } 25 | -------------------------------------------------------------------------------- /domain/framework/src/main/kotlin/com/android/geto/domain/framework/PackageManagerWrapper.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.domain.framework 19 | 20 | import com.android.geto.domain.model.GetoApplicationInfo 21 | 22 | interface PackageManagerWrapper { 23 | suspend fun queryIntentActivities(): List 24 | 25 | suspend fun getApplicationIcon(packageName: String): ByteArray? 26 | 27 | fun launchIntentForPackage(packageName: String) 28 | 29 | suspend fun queryIntentActivitiesByLabel(label: String): List 30 | } 31 | -------------------------------------------------------------------------------- /domain/framework/src/main/kotlin/com/android/geto/domain/framework/SecureSettingsWrapper.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.domain.framework 19 | 20 | import com.android.geto.domain.model.SecureSetting 21 | import com.android.geto.domain.model.SettingType 22 | 23 | interface SecureSettingsWrapper { 24 | suspend fun canWriteSecureSettings( 25 | settingType: SettingType, 26 | key: String, 27 | value: String, 28 | ): Boolean 29 | 30 | suspend fun getSecureSettings(settingType: SettingType): List 31 | } 32 | -------------------------------------------------------------------------------- /domain/framework/src/main/kotlin/com/android/geto/domain/framework/ShizukuWrapper.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.domain.framework 19 | 20 | import com.android.geto.domain.model.ShizukuStatus 21 | import kotlinx.coroutines.flow.Flow 22 | 23 | interface ShizukuWrapper { 24 | val shizukuStatus: Flow 25 | 26 | fun onCreate() 27 | 28 | fun onDestroy() 29 | 30 | fun checkShizukuPermission() 31 | } 32 | -------------------------------------------------------------------------------- /domain/framework/src/main/kotlin/com/android/geto/domain/framework/UsageStatsManagerWrapper.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.domain.framework 19 | 20 | import com.android.geto.domain.model.GetoUsageEvent 21 | import kotlinx.coroutines.flow.Flow 22 | 23 | interface UsageStatsManagerWrapper { 24 | fun queryEvents(): Flow 25 | 26 | fun isUsageStatsPermissionGranted(): Boolean 27 | 28 | fun requestUsageStatsPermission() 29 | } 30 | -------------------------------------------------------------------------------- /domain/framework/src/testFixtures/kotlin/com/android/geto/domain/framework/FakeAssetManagerWrapper.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.domain.framework 19 | 20 | import com.android.geto.domain.model.AppSettingTemplate 21 | 22 | class FakeAssetManagerWrapper : AssetManagerWrapper { 23 | private var appSettingTemplates = emptyList() 24 | 25 | override suspend fun getAppSettingTemplates(): List { 26 | return appSettingTemplates 27 | } 28 | 29 | fun setAppSettingTemplates(value: List) { 30 | appSettingTemplates = value 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /domain/model/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /domain/model/README.md: -------------------------------------------------------------------------------- 1 | # :domain:model module 2 | ## Dependency graph 3 | ![Dependency graph](../../docs/images/graphs/dep_graph_domain_model.svg) 4 | -------------------------------------------------------------------------------- /domain/model/build.gradle.kts: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | 19 | plugins { 20 | alias(libs.plugins.com.android.geto.library) 21 | alias(libs.plugins.com.android.geto.libraryJacoco) 22 | } 23 | 24 | android { 25 | namespace = "com.android.geto.domain.model" 26 | 27 | defaultConfig { 28 | consumerProguardFiles("consumer-proguard-rules.pro") 29 | } 30 | } -------------------------------------------------------------------------------- /domain/model/consumer-proguard-rules.pro: -------------------------------------------------------------------------------- 1 | -keep class com.android.geto.domain.model.** { *; } -------------------------------------------------------------------------------- /domain/model/src/main/kotlin/com/android/geto/domain/model/AddAppSettingResult.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.domain.model 19 | 20 | enum class AddAppSettingResult { 21 | SUCCESS, 22 | FAILED, 23 | } 24 | -------------------------------------------------------------------------------- /domain/model/src/main/kotlin/com/android/geto/domain/model/AppSetting.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.domain.model 19 | 20 | data class AppSetting( 21 | val id: Int = 0, 22 | val enabled: Boolean, 23 | val settingType: SettingType, 24 | val packageName: String, 25 | val label: String, 26 | val key: String, 27 | val valueOnLaunch: String, 28 | val valueOnRevert: String, 29 | ) 30 | 31 | enum class SettingType(val label: String) { 32 | SYSTEM("System"), 33 | SECURE("Secure"), 34 | GLOBAL("Global"), 35 | } 36 | -------------------------------------------------------------------------------- /domain/model/src/main/kotlin/com/android/geto/domain/model/AppSettingTemplate.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.domain.model 19 | 20 | data class AppSettingTemplate( 21 | val settingType: SettingType, 22 | val label: String, 23 | val key: String, 24 | val valueOnLaunch: String, 25 | val valueOnRevert: String, 26 | ) 27 | -------------------------------------------------------------------------------- /domain/model/src/main/kotlin/com/android/geto/domain/model/AppSettingsResult.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.domain.model 19 | 20 | enum class AppSettingsResult { 21 | Success, 22 | Failure, 23 | NoPermission, 24 | InvalidValues, 25 | EmptyAppSettings, 26 | DisabledAppSettings, 27 | } 28 | -------------------------------------------------------------------------------- /domain/model/src/main/kotlin/com/android/geto/domain/model/DarkThemeConfig.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.domain.model 19 | 20 | enum class DarkThemeConfig(val title: String) { 21 | FOLLOW_SYSTEM("Follow System"), 22 | LIGHT("Light"), 23 | DARK("Dark"), 24 | } 25 | -------------------------------------------------------------------------------- /domain/model/src/main/kotlin/com/android/geto/domain/model/GetoShortcutInfoCompat.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.domain.model 19 | 20 | data class GetoShortcutInfoCompat( 21 | val id: String, 22 | val shortLabel: String, 23 | val longLabel: String, 24 | ) 25 | -------------------------------------------------------------------------------- /domain/model/src/main/kotlin/com/android/geto/domain/model/GetoUsageEvent.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.domain.model 19 | 20 | data class GetoUsageEvent(val packageName: String, val getoLifeCycle: GetoLifeCycle) 21 | 22 | enum class GetoLifeCycle { 23 | ACTIVITY_RESUMED, 24 | ACTIVITY_PAUSED, 25 | } 26 | -------------------------------------------------------------------------------- /domain/model/src/main/kotlin/com/android/geto/domain/model/RequestPinShortcutResult.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.domain.model 19 | 20 | enum class RequestPinShortcutResult { 21 | UnsupportedLauncher, 22 | SupportedLauncher, 23 | UpdateSuccess, 24 | UpdateFailure, 25 | UpdateImmutableShortcuts, 26 | } 27 | -------------------------------------------------------------------------------- /domain/model/src/main/kotlin/com/android/geto/domain/model/SecureSetting.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.domain.model 19 | 20 | data class SecureSetting( 21 | val settingType: SettingType, 22 | val id: Long? = null, 23 | val name: String? = null, 24 | val value: String? = null, 25 | ) 26 | -------------------------------------------------------------------------------- /domain/model/src/main/kotlin/com/android/geto/domain/model/ShizukuStatus.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.domain.model 19 | 20 | enum class ShizukuStatus { 21 | UnBound, 22 | Bound, 23 | Granted, 24 | Denied, 25 | UpgradeShizuku, 26 | CanWriteSecureSettings, 27 | RemoteException, 28 | AliveBinder, 29 | DeadBinder, 30 | Error, 31 | } 32 | -------------------------------------------------------------------------------- /domain/model/src/main/kotlin/com/android/geto/domain/model/ThemeBrand.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.domain.model 19 | 20 | enum class ThemeBrand(val title: String) { 21 | GREEN("Green"), 22 | PURPLE("Purple"), 23 | } 24 | -------------------------------------------------------------------------------- /domain/model/src/main/kotlin/com/android/geto/domain/model/UpdateUsageStatsForegroundServiceResult.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.domain.model 19 | 20 | enum class UpdateUsageStatsForegroundServiceResult { 21 | RequestPermission, 22 | Start, 23 | Stop, 24 | } 25 | -------------------------------------------------------------------------------- /domain/model/src/main/kotlin/com/android/geto/domain/model/UserData.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.domain.model 19 | 20 | data class UserData( 21 | val themeBrand: ThemeBrand, 22 | val darkThemeConfig: DarkThemeConfig, 23 | val useDynamicColor: Boolean, 24 | ) 25 | -------------------------------------------------------------------------------- /domain/repository/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /domain/repository/README.md: -------------------------------------------------------------------------------- 1 | # :domain:repository module 2 | ## Dependency graph 3 | ![Dependency graph](../../docs/images/graphs/dep_graph_domain_repository.svg) 4 | -------------------------------------------------------------------------------- /domain/repository/build.gradle.kts: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | 19 | plugins { 20 | alias(libs.plugins.com.android.geto.library) 21 | alias(libs.plugins.com.android.geto.libraryJacoco) 22 | } 23 | 24 | android { 25 | namespace = "com.android.geto.domain.repository" 26 | 27 | testFixtures { 28 | enable = true 29 | } 30 | } 31 | 32 | dependencies { 33 | api(projects.domain.model) 34 | implementation(libs.kotlinx.coroutines.core) 35 | implementation(projects.domain.framework) 36 | 37 | testFixturesImplementation(projects.domain.model) 38 | testFixturesImplementation(libs.kotlinx.coroutines.core) 39 | } -------------------------------------------------------------------------------- /domain/repository/src/main/kotlin/com/android/geto/domain/repository/AppSettingsRepository.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.domain.repository 19 | 20 | import com.android.geto.domain.model.AppSetting 21 | import kotlinx.coroutines.flow.Flow 22 | 23 | interface AppSettingsRepository { 24 | 25 | val appSettings: Flow> 26 | 27 | suspend fun upsertAppSetting(appSetting: AppSetting) 28 | 29 | suspend fun deleteAppSetting(appSetting: AppSetting) 30 | 31 | fun getAppSettingsByPackageName(packageName: String): Flow> 32 | } 33 | -------------------------------------------------------------------------------- /domain/use-case/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /domain/use-case/README.md: -------------------------------------------------------------------------------- 1 | # :domain:use-case module 2 | ## Dependency graph 3 | ![Dependency graph](../../docs/images/graphs/dep_graph_domain_use_case.svg) 4 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/11.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | - Bug fixed 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/12.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | - Bug fixed -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/13.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | - Bug fixed 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/14.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | - Decrease APK size by 86% 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/15.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | - Set Minimum SDK to 21 3 | - Merge Settings Database feature to AddSettingsDialog 4 | - Verify Settings Key before adding it to AppSettings 5 | - Add Settings key suggestions 6 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/151.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | - App pin shortcuts 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/152.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | - Change theme settings 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/153.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | - Auto-Launch 3 | - Clean app settings from the uninstalled applications 4 | - Improved performance and stability 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/154.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | - Improved performance and stability 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/155.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | - Bug fixed 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/156.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | - Bug fixed 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/157.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | - Fixed a bug where unchecked app settings cannot launch the Application 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/158.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | - Adaptive layouts 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/159.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | - UI/UX improvements 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/160.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | - Updated Icons 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/161.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | - Added Notification Revert Settings 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/162.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | - Added App Setting Templates 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/163.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | - Integrated UsageStatsManager to monitor app usage 3 | - Automatically apply settings when specific apps are opened 4 | - Revert settings when apps are closed -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/164.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | - Improved performance and stability -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/165.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | - Added Shizuku support to grant WRITE_SECURE_SETTINGS so you don't need third party apps anymore -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/166.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | - Improved performance and stability 3 | - Decreased APK size by 30% -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/167.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | - Security updates -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/168.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | - Removed Auto-launch and Clean app settings feature -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/169.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | - Optimized fetching of installed applications 3 | - Fixed a bug where you can't create shortcuts -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/2.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | - Settings will be automatically reverted when going back to Geto 3 | - Removed revert icon button 4 | - Added an App Icon 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/4.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | -Improve Performance 3 | -Added indicator for empty settings list 4 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/5.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | -Improve Performance 3 | -Replaced linear progress bar with swipeable refresh layout 4 | -Use bottom bar 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/6.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | -Faster loading for fetching your apps 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/8.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | - Added new feature called Settings Database to view and copy available Settings key from your device. 3 | - Improved performance 4 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/9.txt: -------------------------------------------------------------------------------- 1 | What's new 2 | - Bug fixed 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/full_description.txt: -------------------------------------------------------------------------------- 1 | The only reason I created this app is to turn off that damn Developer Options when using a banking app. The only annoying thing about it is you have to go to the Settings app. When you turn off that switch button, your Developer Options configurations will be reset to default. The good thing is that when you modify your settings through its Shared Preferences, you won't lose all your settings once the Developer Options are modified. 2 | With Shizuku, you can grant this app with android.permission.WRITE_SECURE_SETTINGS in order for it to modify your Settings values. -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/fastlane/metadata/android/en-US/images/icon.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/fastlane/metadata/android/en-US/images/phoneScreenshots/1.jpg -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/fastlane/metadata/android/en-US/images/phoneScreenshots/2.jpg -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/fastlane/metadata/android/en-US/images/phoneScreenshots/3.jpg -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/fastlane/metadata/android/en-US/images/phoneScreenshots/4.jpg -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/fastlane/metadata/android/en-US/images/phoneScreenshots/5.jpg -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/fastlane/metadata/android/en-US/images/phoneScreenshots/6.jpg -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/fastlane/metadata/android/en-US/images/phoneScreenshots/7.jpg -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/fastlane/metadata/android/en-US/images/phoneScreenshots/8.jpg -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/short_description.txt: -------------------------------------------------------------------------------- 1 | Apply device settings to your apps. -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/title.txt: -------------------------------------------------------------------------------- 1 | Geto -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/video.txt: -------------------------------------------------------------------------------- 1 | https://youtu.be/_bENWbkJZ4c?si=fLQq1bEP5N7ld-8y -------------------------------------------------------------------------------- /feature/app-settings/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /feature/app-settings/README.md: -------------------------------------------------------------------------------- 1 | # :feature:app-settings module 2 | ## Dependency graph 3 | ![Dependency graph](../../docs/images/graphs/dep_graph_feature_app_settings.svg) 4 | -------------------------------------------------------------------------------- /feature/app-settings/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /feature/app-settings/src/main/kotlin/com/android/geto/feature/appsettings/AppSettingsUiState.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.feature.appsettings 19 | 20 | import com.android.geto.domain.model.AppSetting 21 | 22 | sealed interface AppSettingsUiState { 23 | data class Success(val appSettings: List) : AppSettingsUiState 24 | 25 | data object Loading : AppSettingsUiState 26 | } 27 | -------------------------------------------------------------------------------- /feature/app-settings/src/main/kotlin/com/android/geto/feature/appsettings/dialog/template/TemplateDialogUiState.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.feature.appsettings.dialog.template 19 | 20 | import com.android.geto.domain.model.AppSettingTemplate 21 | 22 | sealed interface TemplateDialogUiState { 23 | data class Success(val appSettingTemplates: List) : TemplateDialogUiState 24 | 25 | data object Loading : TemplateDialogUiState 26 | } 27 | -------------------------------------------------------------------------------- /feature/app-settings/src/main/kotlin/com/android/geto/feature/appsettings/navigation/AppSettingsRouteData.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.feature.appsettings.navigation 19 | 20 | import kotlinx.serialization.Serializable 21 | 22 | @Serializable 23 | data class AppSettingsRouteData(val packageName: String, val appName: String) 24 | -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/AppSettingDialogEmpty_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/AppSettingDialogEmpty_foldable.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/AppSettingDialogEmpty_foldable_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/AppSettingDialogEmpty_foldable_dark.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/AppSettingDialogErrorTextFields_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/AppSettingDialogErrorTextFields_foldable.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/AppSettingDialogErrorTextFields_foldable_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/AppSettingDialogErrorTextFields_foldable_dark.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/AppSettingDialogFilledTextFields_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/AppSettingDialogFilledTextFields_foldable.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/AppSettingDialogFilledTextFields_foldable_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/AppSettingDialogFilledTextFields_foldable_dark.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/AppSettingsScreenEmpty_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/AppSettingsScreenEmpty_foldable.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/AppSettingsScreenEmpty_phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/AppSettingsScreenEmpty_phone.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/AppSettingsScreenEmpty_phone_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/AppSettingsScreenEmpty_phone_dark.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/AppSettingsScreenEmpty_tablet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/AppSettingsScreenEmpty_tablet.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/AppSettingsScreenLoading_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/AppSettingsScreenLoading_foldable.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/AppSettingsScreenLoading_phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/AppSettingsScreenLoading_phone.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/AppSettingsScreenLoading_phone_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/AppSettingsScreenLoading_phone_dark.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/AppSettingsScreenLoading_tablet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/AppSettingsScreenLoading_tablet.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/AppSettingsScreenPopulated_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/AppSettingsScreenPopulated_foldable.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/AppSettingsScreenPopulated_phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/AppSettingsScreenPopulated_phone.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/AppSettingsScreenPopulated_phone_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/AppSettingsScreenPopulated_phone_dark.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/AppSettingsScreenPopulated_tablet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/AppSettingsScreenPopulated_tablet.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/AppSettingsScreenSnackbar_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/AppSettingsScreenSnackbar_foldable.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/AppSettingsScreenSnackbar_phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/AppSettingsScreenSnackbar_phone.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/AppSettingsScreenSnackbar_tablet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/AppSettingsScreenSnackbar_tablet.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/ShortcutDialogEmpty_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/ShortcutDialogEmpty_foldable.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/ShortcutDialogEmpty_foldable_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/ShortcutDialogEmpty_foldable_dark.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/ShortcutDialogErrorTextFields_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/ShortcutDialogErrorTextFields_foldable.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/ShortcutDialogErrorTextFields_foldable_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/ShortcutDialogErrorTextFields_foldable_dark.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/ShortcutDialogFilledTextFields_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/ShortcutDialogFilledTextFields_foldable.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/ShortcutDialogFilledTextFields_foldable_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/ShortcutDialogFilledTextFields_foldable_dark.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/TemplateDialogLoading_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/TemplateDialogLoading_foldable.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/TemplateDialogLoading_foldable_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/TemplateDialogLoading_foldable_dark.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/TemplateDialogPopulated_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/TemplateDialogPopulated_foldable.png -------------------------------------------------------------------------------- /feature/app-settings/src/test/screenshots/TemplateDialogPopulated_foldable_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/app-settings/src/test/screenshots/TemplateDialogPopulated_foldable_dark.png -------------------------------------------------------------------------------- /feature/apps/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /feature/apps/README.md: -------------------------------------------------------------------------------- 1 | # :feature:apps module 2 | ## Dependency graph 3 | ![Dependency graph](../../docs/images/graphs/dep_graph_feature_apps.svg) 4 | -------------------------------------------------------------------------------- /feature/apps/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /feature/apps/src/main/kotlin/com/android/geto/feature/apps/AppsUiState.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.feature.apps 19 | 20 | import com.android.geto.domain.model.GetoApplicationInfo 21 | 22 | sealed interface AppsUiState { 23 | data class Success(val getoApplicationInfos: List) : AppsUiState 24 | 25 | data object Loading : AppsUiState 26 | } 27 | -------------------------------------------------------------------------------- /feature/apps/src/main/kotlin/com/android/geto/feature/apps/navigation/AppsRouteData.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.feature.apps.navigation 19 | 20 | import kotlinx.serialization.Serializable 21 | 22 | @Serializable 23 | data object AppsRouteData 24 | -------------------------------------------------------------------------------- /feature/apps/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | Search 20 | -------------------------------------------------------------------------------- /feature/apps/src/test/screenshots/AppsScreenLoading_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/apps/src/test/screenshots/AppsScreenLoading_foldable.png -------------------------------------------------------------------------------- /feature/apps/src/test/screenshots/AppsScreenLoading_phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/apps/src/test/screenshots/AppsScreenLoading_phone.png -------------------------------------------------------------------------------- /feature/apps/src/test/screenshots/AppsScreenLoading_phone_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/apps/src/test/screenshots/AppsScreenLoading_phone_dark.png -------------------------------------------------------------------------------- /feature/apps/src/test/screenshots/AppsScreenLoading_tablet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/apps/src/test/screenshots/AppsScreenLoading_tablet.png -------------------------------------------------------------------------------- /feature/apps/src/test/screenshots/AppsScreenPopulated_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/apps/src/test/screenshots/AppsScreenPopulated_foldable.png -------------------------------------------------------------------------------- /feature/apps/src/test/screenshots/AppsScreenPopulated_phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/apps/src/test/screenshots/AppsScreenPopulated_phone.png -------------------------------------------------------------------------------- /feature/apps/src/test/screenshots/AppsScreenPopulated_phone_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/apps/src/test/screenshots/AppsScreenPopulated_phone_dark.png -------------------------------------------------------------------------------- /feature/apps/src/test/screenshots/AppsScreenPopulated_tablet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/apps/src/test/screenshots/AppsScreenPopulated_tablet.png -------------------------------------------------------------------------------- /feature/apps/src/test/screenshots/DockedSearchBarPopulated_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/apps/src/test/screenshots/DockedSearchBarPopulated_foldable.png -------------------------------------------------------------------------------- /feature/apps/src/test/screenshots/DockedSearchBarPopulated_phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/apps/src/test/screenshots/DockedSearchBarPopulated_phone.png -------------------------------------------------------------------------------- /feature/apps/src/test/screenshots/DockedSearchBarPopulated_phone_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/apps/src/test/screenshots/DockedSearchBarPopulated_phone_dark.png -------------------------------------------------------------------------------- /feature/apps/src/test/screenshots/DockedSearchBarPopulated_tablet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/apps/src/test/screenshots/DockedSearchBarPopulated_tablet.png -------------------------------------------------------------------------------- /feature/home/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /feature/home/README.md: -------------------------------------------------------------------------------- 1 | # :feature:home module 2 | ## Dependency graph 3 | ![Dependency graph](../../docs/images/graphs/dep_graph_feature_home.svg) 4 | -------------------------------------------------------------------------------- /feature/home/build.gradle.kts: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | 19 | plugins { 20 | alias(libs.plugins.com.android.geto.feature) 21 | alias(libs.plugins.com.android.geto.libraryCompose) 22 | alias(libs.plugins.com.android.geto.libraryJacoco) 23 | } 24 | 25 | android { 26 | namespace = "com.android.geto.feature.home" 27 | } 28 | 29 | dependencies { 30 | implementation(libs.androidx.compose.material3.adaptive.navigation.suite) 31 | } 32 | -------------------------------------------------------------------------------- /feature/home/src/main/kotlin/com/android/geto/feature/home/navigation/HomeDestination.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.feature.home.navigation 19 | 20 | import androidx.annotation.StringRes 21 | import androidx.compose.ui.graphics.vector.ImageVector 22 | import kotlin.reflect.KClass 23 | 24 | interface HomeDestination { 25 | @get:StringRes 26 | val label: Int 27 | 28 | val icon: ImageVector 29 | 30 | @get:StringRes 31 | val contentDescription: Int 32 | 33 | val route: KClass<*> 34 | } 35 | -------------------------------------------------------------------------------- /feature/home/src/main/kotlin/com/android/geto/feature/home/navigation/HomeRouteData.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.feature.home.navigation 19 | 20 | import kotlinx.serialization.Serializable 21 | 22 | @Serializable 23 | data object HomeRouteData 24 | -------------------------------------------------------------------------------- /feature/service/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /feature/service/README.md: -------------------------------------------------------------------------------- 1 | # :feature:service module 2 | ## Dependency graph 3 | ![Dependency graph](../../docs/images/graphs/dep_graph_feature_service.svg) 4 | -------------------------------------------------------------------------------- /feature/service/src/main/kotlin/com/android/geto/feature/service/ServiceUiState.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.feature.service 19 | 20 | import com.android.geto.domain.model.UserData 21 | 22 | sealed interface ServiceUiState { 23 | data object Loading : ServiceUiState 24 | 25 | data class Success(val userData: UserData) : ServiceUiState 26 | } 27 | -------------------------------------------------------------------------------- /feature/service/src/main/kotlin/com/android/geto/feature/service/navigation/ServiceRouteData.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.feature.service.navigation 19 | 20 | import kotlinx.serialization.Serializable 21 | 22 | @Serializable 23 | data object ServiceRouteData 24 | -------------------------------------------------------------------------------- /feature/service/src/test/screenshots/ServiceScreenActive_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/service/src/test/screenshots/ServiceScreenActive_foldable.png -------------------------------------------------------------------------------- /feature/service/src/test/screenshots/ServiceScreenActive_phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/service/src/test/screenshots/ServiceScreenActive_phone.png -------------------------------------------------------------------------------- /feature/service/src/test/screenshots/ServiceScreenActive_phone_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/service/src/test/screenshots/ServiceScreenActive_phone_dark.png -------------------------------------------------------------------------------- /feature/service/src/test/screenshots/ServiceScreenActive_tablet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/service/src/test/screenshots/ServiceScreenActive_tablet.png -------------------------------------------------------------------------------- /feature/service/src/test/screenshots/ServiceScreenInActive_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/service/src/test/screenshots/ServiceScreenInActive_foldable.png -------------------------------------------------------------------------------- /feature/service/src/test/screenshots/ServiceScreenInActive_phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/service/src/test/screenshots/ServiceScreenInActive_phone.png -------------------------------------------------------------------------------- /feature/service/src/test/screenshots/ServiceScreenInActive_phone_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/service/src/test/screenshots/ServiceScreenInActive_phone_dark.png -------------------------------------------------------------------------------- /feature/service/src/test/screenshots/ServiceScreenInActive_tablet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/service/src/test/screenshots/ServiceScreenInActive_tablet.png -------------------------------------------------------------------------------- /feature/settings/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /feature/settings/README.md: -------------------------------------------------------------------------------- 1 | # :feature:settings module 2 | ## Dependency graph 3 | ![Dependency graph](../../docs/images/graphs/dep_graph_feature_settings.svg) 4 | -------------------------------------------------------------------------------- /feature/settings/src/main/kotlin/com/android/geto/feature/settings/SettingsUiState.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.feature.settings 19 | 20 | import com.android.geto.domain.model.UserData 21 | 22 | sealed interface SettingsUiState { 23 | data object Loading : SettingsUiState 24 | data class Success(val userData: UserData) : SettingsUiState 25 | } 26 | -------------------------------------------------------------------------------- /feature/settings/src/main/kotlin/com/android/geto/feature/settings/navigation/SettingsRouteData.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.feature.settings.navigation 19 | 20 | import kotlinx.serialization.Serializable 21 | 22 | @Serializable 23 | data object SettingsRouteData 24 | -------------------------------------------------------------------------------- /feature/settings/src/test/screenshots/DarkDialog_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/settings/src/test/screenshots/DarkDialog_foldable.png -------------------------------------------------------------------------------- /feature/settings/src/test/screenshots/DarkDialog_foldable_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/settings/src/test/screenshots/DarkDialog_foldable_dark.png -------------------------------------------------------------------------------- /feature/settings/src/test/screenshots/SettingsScreenLoading_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/settings/src/test/screenshots/SettingsScreenLoading_foldable.png -------------------------------------------------------------------------------- /feature/settings/src/test/screenshots/SettingsScreenLoading_foldable_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/settings/src/test/screenshots/SettingsScreenLoading_foldable_dark.png -------------------------------------------------------------------------------- /feature/settings/src/test/screenshots/SettingsScreenPopulated_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/settings/src/test/screenshots/SettingsScreenPopulated_foldable.png -------------------------------------------------------------------------------- /feature/settings/src/test/screenshots/SettingsScreenPopulated_foldable_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/settings/src/test/screenshots/SettingsScreenPopulated_foldable_dark.png -------------------------------------------------------------------------------- /feature/settings/src/test/screenshots/ThemeDialog_foldable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/settings/src/test/screenshots/ThemeDialog_foldable.png -------------------------------------------------------------------------------- /feature/settings/src/test/screenshots/ThemeDialog_foldable_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/feature/settings/src/test/screenshots/ThemeDialog_foldable_dark.png -------------------------------------------------------------------------------- /feature/shizuku/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /feature/shizuku/README.md: -------------------------------------------------------------------------------- 1 | # :feature:shizuku module 2 | ## Dependency graph 3 | ![Dependency graph](../../docs/images/graphs/dep_graph_feature_shizuku.svg) 4 | -------------------------------------------------------------------------------- /feature/shizuku/src/main/kotlin/com/android/geto/feature/shizuku/navigation/ShizukuRouteData.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.feature.shizuku.navigation 19 | 20 | import kotlinx.serialization.Serializable 21 | 22 | @Serializable 23 | data object ShizukuRouteData 24 | -------------------------------------------------------------------------------- /foreground-service/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /foreground-service/README.md: -------------------------------------------------------------------------------- 1 | # :foreground-service module 2 | ## Dependency graph 3 | ![Dependency graph](../docs/images/graphs/dep_graph_foreground_service.svg) 4 | -------------------------------------------------------------------------------- /foreground-service/build.gradle.kts: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | 19 | plugins { 20 | alias(libs.plugins.com.android.geto.library) 21 | alias(libs.plugins.com.android.geto.hilt) 22 | } 23 | 24 | android { 25 | namespace = "com.android.geto.foregroundservice" 26 | } 27 | 28 | dependencies { 29 | implementation(libs.androidx.core.ktx) 30 | implementation(projects.broadcastReceiver) 31 | implementation(projects.common) 32 | implementation(projects.domain.common) 33 | implementation(projects.domain.foregroundService) 34 | implementation(projects.domain.framework) 35 | implementation(projects.domain.useCase) 36 | } -------------------------------------------------------------------------------- /foreground-service/src/main/res/drawable/baseline_apps_24.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /foreground-service/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | Track Usage Stats 20 | App Settings applied successfully 21 | Usage Stats Service 22 | Automatically apply or revert settings when you open or close a specific application 23 | Stop 24 | -------------------------------------------------------------------------------- /framework/asset-manager/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /framework/asset-manager/README.md: -------------------------------------------------------------------------------- 1 | # :framework:asset-manager module 2 | ## Dependency graph 3 | ![Dependency graph](../../docs/images/graphs/dep_graph_framework_asset_manager.svg) 4 | -------------------------------------------------------------------------------- /framework/asset-manager/src/androidTest/assets/FakeAppSettingTemplates.json: -------------------------------------------------------------------------------- 1 | "Trigger JsonSyntaxException in tests" 2 | -------------------------------------------------------------------------------- /framework/asset-manager/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /framework/asset-manager/src/main/assets/AppSettingTemplates.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "settingType": "GLOBAL", 4 | "label": "Hide Developer Options", 5 | "key": "development_settings_enabled", 6 | "valueOnLaunch": "0", 7 | "valueOnRevert": "1" 8 | }, 9 | { 10 | "settingType": "GLOBAL", 11 | "label": "Hide USB Debugging", 12 | "key": "adb_enabled", 13 | "valueOnLaunch": "0", 14 | "valueOnRevert": "1" 15 | }, 16 | { 17 | "settingType": "GLOBAL", 18 | "label": "Hide Accessibility Services", 19 | "key": "accessibility_enabled", 20 | "valueOnLaunch": "0", 21 | "valueOnRevert": "1" 22 | } 23 | ] 24 | -------------------------------------------------------------------------------- /framework/asset-manager/src/main/kotlin/com/android/geto/framework/assetmanager/AssetManagerModule.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.framework.assetmanager 19 | 20 | import com.android.geto.domain.framework.AssetManagerWrapper 21 | import dagger.Binds 22 | import dagger.Module 23 | import dagger.hilt.InstallIn 24 | import dagger.hilt.components.SingletonComponent 25 | import javax.inject.Singleton 26 | 27 | @Module 28 | @InstallIn(SingletonComponent::class) 29 | internal interface AssetManagerModule { 30 | 31 | @Binds 32 | @Singleton 33 | fun assetManagerWrapper(impl: AndroidAssetManagerWrapper): AssetManagerWrapper 34 | } 35 | -------------------------------------------------------------------------------- /framework/framework-test/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /framework/framework-test/README.md: -------------------------------------------------------------------------------- 1 | # :framework:framework-test module 2 | ## Dependency graph 3 | ![Dependency graph](../../docs/images/graphs/dep_graph_framework_framework_test.svg) 4 | -------------------------------------------------------------------------------- /framework/notification-manager/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /framework/notification-manager/README.md: -------------------------------------------------------------------------------- 1 | # :framework:notification-manager module 2 | ## Dependency graph 3 | ![Dependency graph](../../docs/images/graphs/dep_graph_framework_notification_manager.svg) 4 | -------------------------------------------------------------------------------- /framework/notification-manager/build.gradle.kts: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | 19 | plugins { 20 | alias(libs.plugins.com.android.geto.library) 21 | alias(libs.plugins.com.android.geto.hilt) 22 | } 23 | 24 | android { 25 | namespace = "com.android.geto.framework.notificationmanager" 26 | } 27 | 28 | dependencies { 29 | implementation(libs.androidx.core.ktx) 30 | 31 | implementation(projects.broadcastReceiver) 32 | implementation(projects.common) 33 | implementation(projects.domain.common) 34 | implementation(projects.domain.framework) 35 | } -------------------------------------------------------------------------------- /framework/notification-manager/src/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /framework/notification-manager/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | Geto Notification Channel 20 | Revert 21 | -------------------------------------------------------------------------------- /framework/package-manager/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /framework/package-manager/README.md: -------------------------------------------------------------------------------- 1 | # :framework:package-manager module 2 | ## Dependency graph 3 | ![Dependency graph](../../docs/images/graphs/dep_graph_framework_package_manager.svg) 4 | -------------------------------------------------------------------------------- /framework/package-manager/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /framework/secure-settings/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /framework/secure-settings/README.md: -------------------------------------------------------------------------------- 1 | # :framework:secure-settings module 2 | ## Dependency graph 3 | ![Dependency graph](../../docs/images/graphs/dep_graph_framework_secure_settings.svg) 4 | -------------------------------------------------------------------------------- /framework/secure-settings/build.gradle.kts: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | 19 | plugins { 20 | alias(libs.plugins.com.android.geto.library) 21 | alias(libs.plugins.com.android.geto.libraryJacoco) 22 | alias(libs.plugins.com.android.geto.hilt) 23 | } 24 | 25 | android { 26 | namespace = "com.android.geto.framework.securesettings" 27 | } 28 | 29 | dependencies { 30 | implementation(projects.domain.common) 31 | implementation(projects.domain.framework) 32 | } -------------------------------------------------------------------------------- /framework/secure-settings/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 18 | 20 | 21 | 24 | -------------------------------------------------------------------------------- /framework/shizuku/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /framework/shizuku/README.md: -------------------------------------------------------------------------------- 1 | # :framework:shizuku module 2 | ## Dependency graph 3 | ![Dependency graph](../../docs/images/graphs/dep_graph_framework_shizuku.svg) 4 | -------------------------------------------------------------------------------- /framework/shizuku/consumer-proguard-rules.pro: -------------------------------------------------------------------------------- 1 | -keepclassmembers class com.android.geto.framework.shizuku.UserService { 2 | public (...); 3 | } 4 | 5 | # Keep AIDL files 6 | -keep class android.content.pm.IPackageManager** { *; } 7 | -keep class android.app.IActivityManager** { *; } -------------------------------------------------------------------------------- /framework/shizuku/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | 21 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /framework/shizuku/src/main/aidl/android/app/IActivityManager.aidl: -------------------------------------------------------------------------------- 1 | package android.app; 2 | 3 | interface IActivityManager { 4 | int getCurrentUserId(); 5 | } -------------------------------------------------------------------------------- /framework/shizuku/src/main/aidl/android/content/pm/IPackageManager.aidl: -------------------------------------------------------------------------------- 1 | package android.content.pm; 2 | 3 | interface IPackageManager { 4 | void grantRuntimePermission(String packageName, String permissionName, int userId); 5 | } -------------------------------------------------------------------------------- /framework/shizuku/src/main/aidl/com/android/geto/framework/shizuku/IUserService.aidl: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | 19 | package com.android.geto.framework.shizuku; 20 | 21 | interface IUserService { 22 | void destroy() = 16777114; 23 | 24 | void grantRuntimePermission(String packageName, String permissionName) = 1; //You can specify your own method IDs in the AIDL. Check out the documentation for more details on this. 25 | } -------------------------------------------------------------------------------- /framework/shizuku/src/main/kotlin/com/android/geto/framework/shizuku/ShizukuModule.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | package com.android.geto.framework.shizuku 19 | 20 | import com.android.geto.domain.framework.ShizukuWrapper 21 | import dagger.Binds 22 | import dagger.Module 23 | import dagger.hilt.InstallIn 24 | import dagger.hilt.components.SingletonComponent 25 | import javax.inject.Singleton 26 | 27 | @Module 28 | @InstallIn(SingletonComponent::class) 29 | internal interface ShizukuModule { 30 | 31 | @Binds 32 | @Singleton 33 | fun shizukuWrapper(impl: DefaultShizukuWrapper): ShizukuWrapper 34 | } 35 | -------------------------------------------------------------------------------- /framework/shortcut-manager/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /framework/shortcut-manager/README.md: -------------------------------------------------------------------------------- 1 | # :framework:shortcut-manager module 2 | ## Dependency graph 3 | ![Dependency graph](../../docs/images/graphs/dep_graph_framework_shortcut_manager.svg) 4 | -------------------------------------------------------------------------------- /framework/shortcut-manager/build.gradle.kts: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | 19 | plugins { 20 | alias(libs.plugins.com.android.geto.library) 21 | alias(libs.plugins.com.android.geto.libraryJacoco) 22 | alias(libs.plugins.com.android.geto.hilt) 23 | } 24 | 25 | android { 26 | namespace = "com.android.geto.framework.shortcutmanager" 27 | } 28 | 29 | dependencies { 30 | implementation(projects.domain.common) 31 | implementation(projects.domain.framework) 32 | } -------------------------------------------------------------------------------- /framework/shortcut-manager/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /framework/usage-stats-manager/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /framework/usage-stats-manager/README.md: -------------------------------------------------------------------------------- 1 | # :framework:usage-stats-manager module 2 | ## Dependency graph 3 | ![Dependency graph](../../docs/images/graphs/dep_graph_framework_usage_stats_manager.svg) 4 | -------------------------------------------------------------------------------- /framework/usage-stats-manager/build.gradle.kts: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | 19 | plugins { 20 | alias(libs.plugins.com.android.geto.library) 21 | alias(libs.plugins.com.android.geto.libraryJacoco) 22 | alias(libs.plugins.com.android.geto.hilt) 23 | } 24 | 25 | android { 26 | namespace = "com.android.geto.framework.usagestatsmanager" 27 | } 28 | 29 | dependencies { 30 | implementation(projects.domain.common) 31 | implementation(projects.domain.framework) 32 | } -------------------------------------------------------------------------------- /framework/usage-stats-manager/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 18 | 20 | 21 | 24 | 25 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackEblan/Geto/10e22ec9392a67589fb47a9e96c050553f207459/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | # 2 | # 3 | # Copyright 2023 Einstein Blanco 4 | # 5 | # Licensed under the GNU General Public License v3.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # https://www.gnu.org/licenses/gpl-3.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | # 18 | distributionBase=GRADLE_USER_HOME 19 | distributionPath=wrapper/dists 20 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip 21 | zipStoreBase=GRADLE_USER_HOME 22 | zipStorePath=wrapper/dists 23 | -------------------------------------------------------------------------------- /lint/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /lint/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /lint/src/main/resources/META-INF/services/com.android.tools.lint.client.api.IssueRegistry: -------------------------------------------------------------------------------- 1 | # 2 | # 3 | # Copyright 2023 Einstein Blanco 4 | # 5 | # Licensed under the GNU General Public License v3.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # https://www.gnu.org/licenses/gpl-3.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | # 18 | 19 | com.android.geto.lint.GetoIssueRegistry -------------------------------------------------------------------------------- /roborazzi/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /roborazzi/README.md: -------------------------------------------------------------------------------- 1 | # :roborazzi module 2 | ## Dependency graph 3 | ![Dependency graph](../docs/images/graphs/dep_graph_roborazzi.svg) 4 | -------------------------------------------------------------------------------- /spotless/copyright.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ -------------------------------------------------------------------------------- /spotless/copyright.kts: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright 2023 Einstein Blanco 4 | * 5 | * Licensed under the GNU General Public License v3.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.gnu.org/licenses/gpl-3.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ -------------------------------------------------------------------------------- /spotless/copyright.xml: -------------------------------------------------------------------------------- 1 | --------------------------------------------------------------------------------