├── .DS_Store ├── .gitattributes ├── .github └── workflows │ └── localization.yml ├── .gitignore ├── .idea ├── .gitignore ├── .name ├── compiler.xml ├── deploymentTargetSelector.xml ├── icon.svg ├── material_theme_project_new.xml ├── migrations.xml ├── navEditor.xml ├── other.xml ├── runConfigurations.xml └── vcs.xml ├── Controls ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ ├── com │ │ └── android │ │ │ ├── internal │ │ │ └── util │ │ │ │ └── IndentingPrintWriter.java │ │ │ ├── settingslib │ │ │ ├── applications │ │ │ │ ├── DefaultAppInfo.java │ │ │ │ └── ServiceListing.java │ │ │ ├── core │ │ │ │ └── lifecycle │ │ │ │ │ ├── Lifecycle.java │ │ │ │ │ ├── LifecycleObserver.java │ │ │ │ │ ├── ObservableActivity.java │ │ │ │ │ ├── ObservableDialogFragment.java │ │ │ │ │ ├── ObservableFragment.java │ │ │ │ │ ├── ObservablePreferenceFragment.java │ │ │ │ │ └── events │ │ │ │ │ ├── OnAttach.java │ │ │ │ │ ├── OnCreate.java │ │ │ │ │ ├── OnCreateOptionsMenu.java │ │ │ │ │ ├── OnDestroy.java │ │ │ │ │ ├── OnOptionsItemSelected.java │ │ │ │ │ ├── OnPause.java │ │ │ │ │ ├── OnPrepareOptionsMenu.java │ │ │ │ │ ├── OnResume.java │ │ │ │ │ ├── OnSaveInstanceState.java │ │ │ │ │ ├── OnStart.java │ │ │ │ │ ├── OnStop.java │ │ │ │ │ └── SetPreferenceScreen.java │ │ │ ├── utils │ │ │ │ └── ThreadUtils.java │ │ │ └── widget │ │ │ │ └── CandidateInfo.java │ │ │ └── systemui │ │ │ ├── Dumpable.java │ │ │ ├── Interpolators.java │ │ │ ├── Prefs.kt │ │ │ ├── backup │ │ │ └── BackupHelper.kt │ │ │ ├── broadcast │ │ │ ├── ActionReceiver.kt │ │ │ ├── BroadcastDispatcher.kt │ │ │ ├── UserBroadcastDispatcher.kt │ │ │ └── logging │ │ │ │ └── BroadcastDispatcherLogger.kt │ │ │ ├── controls │ │ │ ├── ControlStatus.kt │ │ │ ├── ControlsServiceInfo.kt │ │ │ ├── CustomIconCache.kt │ │ │ ├── TooltipManager.kt │ │ │ ├── controller │ │ │ │ ├── AuxiliaryPersistenceWrapper.kt │ │ │ │ ├── ControlInfo.kt │ │ │ │ ├── ControlsBindingController.kt │ │ │ │ ├── ControlsBindingControllerImpl.kt │ │ │ │ ├── ControlsController.kt │ │ │ │ ├── ControlsControllerImpl.kt │ │ │ │ ├── ControlsFavoritePersistenceWrapper.kt │ │ │ │ ├── ControlsProviderLifecycleManager.kt │ │ │ │ ├── ServiceWrapper.kt │ │ │ │ ├── StatefulControlSubscriber.kt │ │ │ │ └── StructureInfo.kt │ │ │ ├── dagger │ │ │ │ ├── ControlsComponent.kt │ │ │ │ └── ControlsFeatureEnabled.kt │ │ │ ├── management │ │ │ │ ├── AllModel.kt │ │ │ │ ├── AppAdapter.kt │ │ │ │ ├── ControlAdapter.kt │ │ │ │ ├── ControlsAnimations.kt │ │ │ │ ├── ControlsEditingActivity.kt │ │ │ │ ├── ControlsFavoritingActivity.kt │ │ │ │ ├── ControlsListingController.kt │ │ │ │ ├── ControlsListingControllerImpl.kt │ │ │ │ ├── ControlsModel.kt │ │ │ │ ├── ControlsProviderSelectorActivity.kt │ │ │ │ ├── ControlsRequestDialog.kt │ │ │ │ ├── ControlsRequestReceiver.kt │ │ │ │ ├── FavoritesModel.kt │ │ │ │ ├── ManagementPageIndicator.kt │ │ │ │ └── StructureAdapter.kt │ │ │ └── ui │ │ │ │ ├── Behavior.kt │ │ │ │ ├── ChallengeDialogs.kt │ │ │ │ ├── ControlActionCoordinator.kt │ │ │ │ ├── ControlActionCoordinatorImpl.kt │ │ │ │ ├── ControlViewHolder.kt │ │ │ │ ├── ControlWithState.kt │ │ │ │ ├── ControlsUiController.kt │ │ │ │ ├── ControlsUiControllerImpl.kt │ │ │ │ ├── CornerDrawable.kt │ │ │ │ ├── DefaultBehavior.kt │ │ │ │ ├── DetailDialog.kt │ │ │ │ ├── RenderInfo.kt │ │ │ │ ├── StatusBehavior.kt │ │ │ │ ├── TemperatureControlBehavior.kt │ │ │ │ ├── ToggleBehavior.kt │ │ │ │ ├── ToggleRangeBehavior.kt │ │ │ │ ├── TouchBehavior.kt │ │ │ │ └── Vibrations.kt │ │ │ ├── dump │ │ │ └── DumpManager.kt │ │ │ ├── globalactions │ │ │ ├── GlobalActionsComponent.kt │ │ │ ├── GlobalActionsDialog.java │ │ │ └── GlobalActionsPopupMenu.java │ │ │ ├── plugins │ │ │ └── ActivityStarter.kt │ │ │ ├── qs │ │ │ └── PageIndicator.java │ │ │ ├── recents │ │ │ └── TriangleShape.java │ │ │ ├── settings │ │ │ └── CurrentUserTracker.java │ │ │ ├── statusbar │ │ │ ├── phone │ │ │ │ ├── ShadeController.java │ │ │ │ └── ShadeControllerImpl.kt │ │ │ └── policy │ │ │ │ ├── CallbackController.java │ │ │ │ ├── KeyguardStateController.java │ │ │ │ └── KeyguardStateControllerImpl.kt │ │ │ └── util │ │ │ ├── LifecycleActivity.kt │ │ │ ├── MonetColorProvider.kt │ │ │ ├── UserAwareController.kt │ │ │ ├── annotations │ │ │ ├── DeviceType.java │ │ │ └── ResponseResult.java │ │ │ ├── concurrency │ │ │ ├── DelayableExecutor.java │ │ │ └── ExecutorImpl.java │ │ │ └── extensions │ │ │ ├── ControlsActivityStarter.kt │ │ │ ├── Extensions+ActivityManager.kt │ │ │ ├── Extensions+AnimatedVectorDrawable.kt │ │ │ ├── Extensions+BroadcastReceiver.kt │ │ │ ├── Extensions+ComponentInfo.kt │ │ │ ├── Extensions+Context.kt │ │ │ ├── Extensions+ControlTemplate.kt │ │ │ ├── Extensions+ControlsProviderService.kt │ │ │ ├── Extensions+Environment.kt │ │ │ ├── Extensions+Executor.kt │ │ │ ├── Extensions+Intent.kt │ │ │ ├── Extensions+Lazy.kt │ │ │ ├── Extensions+ListPopupWindow.kt │ │ │ ├── Extensions+PendingIntent.kt │ │ │ ├── Extensions+UserHandle.kt │ │ │ ├── Extensions+View.kt │ │ │ ├── Extensions.kt │ │ │ └── ServiceRunner.kt │ └── libcore │ │ └── io │ │ └── IoUtils.java │ └── res │ ├── anim │ ├── bottomsheet_in.xml │ ├── bottomsheet_out.xml │ ├── control_state.xml │ ├── major_a_b_dot_01_animation.xml │ ├── major_a_b_dot_animation.xml │ ├── major_b_a_dot_01_animation.xml │ ├── major_b_a_dot_animation.xml │ ├── major_b_c_dot_01_animation.xml │ ├── major_b_c_dot_animation.xml │ ├── major_c_b_dot_01_animation.xml │ ├── major_c_b_dot_animation.xml │ ├── minor_a_b_dot_02_animation.xml │ ├── minor_b_a_dot_02_animation.xml │ ├── minor_b_c_dot_02_animation.xml │ └── minor_c_b_dot_02_animation.xml │ ├── animator │ └── control_state_list_animator.xml │ ├── color │ ├── control_foreground.xml │ ├── light_foreground.xml │ ├── thermo_cool_foreground.xml │ └── thermo_heat_foreground.xml │ ├── drawable │ ├── control_background.xml │ ├── control_background_ripple.xml │ ├── control_layer.xml │ ├── control_no_favorites_background.xml │ ├── control_spinner_background.xml │ ├── controls_list_divider.xml │ ├── controls_list_divider_inset.xml │ ├── ic_close.xml │ ├── ic_close_white.xml │ ├── ic_device_air_freshener.xml │ ├── ic_device_air_freshener_off.xml │ ├── ic_device_air_freshener_on.xml │ ├── ic_device_air_purifier.xml │ ├── ic_device_air_purifier_off.xml │ ├── ic_device_air_purifier_on.xml │ ├── ic_device_blinds.xml │ ├── ic_device_blinds_off.xml │ ├── ic_device_blinds_off_anim.xml │ ├── ic_device_blinds_on.xml │ ├── ic_device_blinds_on_anim.xml │ ├── ic_device_camera.xml │ ├── ic_device_camera_off.xml │ ├── ic_device_camera_off_anim.xml │ ├── ic_device_camera_on.xml │ ├── ic_device_camera_on_anim.xml │ ├── ic_device_cooking.xml │ ├── ic_device_cooking_off.xml │ ├── ic_device_cooking_on.xml │ ├── ic_device_dishwasher.xml │ ├── ic_device_dishwasher_off.xml │ ├── ic_device_dishwasher_on.xml │ ├── ic_device_display.xml │ ├── ic_device_display_off.xml │ ├── ic_device_display_on.xml │ ├── ic_device_door.xml │ ├── ic_device_door_off.xml │ ├── ic_device_door_on.xml │ ├── ic_device_doorbell.xml │ ├── ic_device_doorbell_off.xml │ ├── ic_device_doorbell_on.xml │ ├── ic_device_drawer.xml │ ├── ic_device_drawer_off.xml │ ├── ic_device_drawer_on.xml │ ├── ic_device_fan.xml │ ├── ic_device_fan_off.xml │ ├── ic_device_fan_off_anim.xml │ ├── ic_device_fan_on.xml │ ├── ic_device_fan_on_anim.xml │ ├── ic_device_garage.xml │ ├── ic_device_garage_off.xml │ ├── ic_device_garage_off_anim.xml │ ├── ic_device_garage_on.xml │ ├── ic_device_garage_on_anim.xml │ ├── ic_device_gate.xml │ ├── ic_device_gate_off.xml │ ├── ic_device_gate_on.xml │ ├── ic_device_hood.xml │ ├── ic_device_hood_off.xml │ ├── ic_device_hood_on.xml │ ├── ic_device_kettle.xml │ ├── ic_device_kettle_off.xml │ ├── ic_device_kettle_on.xml │ ├── ic_device_light.xml │ ├── ic_device_light_off.xml │ ├── ic_device_light_off_anim.xml │ ├── ic_device_light_on.xml │ ├── ic_device_light_on_anim.xml │ ├── ic_device_lock.xml │ ├── ic_device_lock_off.xml │ ├── ic_device_lock_off_anim.xml │ ├── ic_device_lock_on.xml │ ├── ic_device_lock_on_anim.xml │ ├── ic_device_microwave.xml │ ├── ic_device_microwave_off.xml │ ├── ic_device_microwave_on.xml │ ├── ic_device_mop.xml │ ├── ic_device_mop_off.xml │ ├── ic_device_mop_on.xml │ ├── ic_device_multicooker.xml │ ├── ic_device_multicooker_off.xml │ ├── ic_device_multicooker_on.xml │ ├── ic_device_outdoor_garden.xml │ ├── ic_device_outdoor_garden_off.xml │ ├── ic_device_outdoor_garden_on.xml │ ├── ic_device_outlet.xml │ ├── ic_device_outlet_off.xml │ ├── ic_device_outlet_off_anim.xml │ ├── ic_device_outlet_on.xml │ ├── ic_device_outlet_on_anim.xml │ ├── ic_device_pergola.xml │ ├── ic_device_pergola_off.xml │ ├── ic_device_pergola_on.xml │ ├── ic_device_refrigerator.xml │ ├── ic_device_refrigerator_off.xml │ ├── ic_device_refrigerator_on.xml │ ├── ic_device_remote_control.xml │ ├── ic_device_remote_control_off.xml │ ├── ic_device_remote_control_on.xml │ ├── ic_device_security_system.xml │ ├── ic_device_security_system_off.xml │ ├── ic_device_security_system_off_anim.xml │ ├── ic_device_security_system_on.xml │ ├── ic_device_security_system_on_anim.xml │ ├── ic_device_set_top.xml │ ├── ic_device_set_top_off.xml │ ├── ic_device_set_top_on.xml │ ├── ic_device_sprinkler.xml │ ├── ic_device_sprinkler_off.xml │ ├── ic_device_sprinkler_on.xml │ ├── ic_device_styler.xml │ ├── ic_device_styler_off.xml │ ├── ic_device_styler_on.xml │ ├── ic_device_switch.xml │ ├── ic_device_switch_off.xml │ ├── ic_device_switch_off_anim.xml │ ├── ic_device_switch_on.xml │ ├── ic_device_switch_on_anim.xml │ ├── ic_device_thermostat.xml │ ├── ic_device_thermostat_24.xml │ ├── ic_device_thermostat_off.xml │ ├── ic_device_thermostat_off_anim.xml │ ├── ic_device_thermostat_on.xml │ ├── ic_device_thermostat_on_anim.xml │ ├── ic_device_tv.xml │ ├── ic_device_tv_off.xml │ ├── ic_device_tv_off_anim.xml │ ├── ic_device_tv_on.xml │ ├── ic_device_tv_on_anim.xml │ ├── ic_device_unknown.xml │ ├── ic_device_unknown_off.xml │ ├── ic_device_unknown_on.xml │ ├── ic_device_vacuum.xml │ ├── ic_device_vacuum_off.xml │ ├── ic_device_vacuum_off_anim.xml │ ├── ic_device_vacuum_on.xml │ ├── ic_device_vacuum_on_anim.xml │ ├── ic_device_valve.xml │ ├── ic_device_valve_off.xml │ ├── ic_device_valve_on.xml │ ├── ic_device_washer.xml │ ├── ic_device_washer_off.xml │ ├── ic_device_washer_on.xml │ ├── ic_device_water.xml │ ├── ic_device_water_heater.xml │ ├── ic_device_water_heater_off.xml │ ├── ic_device_water_heater_on.xml │ ├── ic_device_water_off.xml │ ├── ic_device_water_on.xml │ ├── ic_device_window.xml │ ├── ic_device_window_off.xml │ ├── ic_device_window_on.xml │ ├── ic_error_outline.xml │ ├── ic_ksh_key_down.xml │ ├── ic_more_vert.xml │ ├── ic_open_in_new.xml │ ├── ic_round_keyboard_arrow_down_24.xml │ ├── major_a_b.xml │ ├── major_a_b_animation.xml │ ├── major_b_a.xml │ ├── major_b_a_animation.xml │ ├── major_b_c.xml │ ├── major_b_c_animation.xml │ ├── major_c_b.xml │ ├── major_c_b_animation.xml │ ├── minor_a_b.xml │ ├── minor_a_b_animation.xml │ ├── minor_b_a.xml │ ├── minor_b_a_animation.xml │ ├── minor_b_c.xml │ ├── minor_b_c_animation.xml │ ├── minor_c_b.xml │ ├── minor_c_b_animation.xml │ ├── recents_onboarding_toast_rounded_background.xml │ └── rounded_bg_full.xml │ ├── font │ ├── google_sans_text.xml │ ├── google_sans_text_bold.ttf │ ├── google_sans_text_bold_italic.ttf │ ├── google_sans_text_italic.ttf │ ├── google_sans_text_medium.ttf │ ├── google_sans_text_medium_italic.ttf │ └── google_sans_text_regular.ttf │ ├── layout │ ├── controls_app_item.xml │ ├── controls_base_item.xml │ ├── controls_detail_dialog.xml │ ├── controls_dialog.xml │ ├── controls_dialog_pin.xml │ ├── controls_horizontal_divider_with_empty.xml │ ├── controls_icon.xml │ ├── controls_management.xml │ ├── controls_management_apps.xml │ ├── controls_management_editing.xml │ ├── controls_management_favorites.xml │ ├── controls_more_item.xml │ ├── controls_no_favorites.xml │ ├── controls_onboarding.xml │ ├── controls_row.xml │ ├── controls_spinner_item.xml │ ├── controls_structure_page.xml │ ├── controls_with_favorites.xml │ └── controls_zone_header.xml │ ├── values-ar-rSA │ └── strings.xml │ ├── values-el-rGR │ └── strings.xml │ ├── values-es-rES │ └── strings.xml │ ├── values-fr-rFR │ └── strings.xml │ ├── values-hu-rHU │ └── strings.xml │ ├── values-it │ └── strings.xml │ ├── values-ja │ └── strings.xml │ ├── values-ko-rKR │ └── strings.xml │ ├── values-land │ └── integers.xml │ ├── values-pl-rPL │ └── strings.xml │ ├── values-zh-rCN │ └── strings.xml │ └── values │ ├── attrs.xml │ ├── colors.xml │ ├── dimens.xml │ ├── ids.xml │ ├── integers.xml │ ├── strings.xml │ └── styles.xml ├── LICENSE ├── QuickAccessWallet ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src │ └── main │ ├── .DS_Store │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── android │ │ └── systemui │ │ ├── plugin │ │ └── globalactions │ │ │ └── wallet │ │ │ ├── WalletCardCarousel.java │ │ │ ├── WalletCardView.java │ │ │ ├── WalletCardViewInfo.java │ │ │ ├── WalletPanelViewController.java │ │ │ ├── WalletPopupMenu.java │ │ │ └── WalletView.java │ │ └── plugins │ │ ├── GlobalActionsPanelPlugin.java │ │ ├── activitystarter │ │ └── WalletActivityStarter.kt │ │ ├── cardblur │ │ └── WalletCardBlur.kt │ │ ├── loyaltycards │ │ └── WalletLoyaltyCardCallback.kt │ │ └── monet │ │ └── MonetColorProvider.kt │ └── res │ ├── drawable │ ├── ic_more_vert.xml │ ├── rounded_corners.xml │ ├── wallet_empty_state_bg.xml │ └── wallet_overflow_popup_bg.xml │ ├── layout │ ├── empty_state_view.xml │ ├── quick_access_wallet.xml │ ├── wallet_card_view.xml │ ├── wallet_more_item.xml │ └── wallet_view.xml │ ├── values-af │ └── strings.xml │ ├── values-am │ └── strings.xml │ ├── values-ar │ └── strings.xml │ ├── values-as │ └── strings.xml │ ├── values-az │ └── strings.xml │ ├── values-b+sr+Latn │ └── strings.xml │ ├── values-be │ └── strings.xml │ ├── values-bg │ └── strings.xml │ ├── values-bn │ └── strings.xml │ ├── values-bs │ └── strings.xml │ ├── values-ca │ └── strings.xml │ ├── values-cs │ └── strings.xml │ ├── values-da │ └── strings.xml │ ├── values-de │ └── strings.xml │ ├── values-el │ └── strings.xml │ ├── values-en-rAU │ └── strings.xml │ ├── values-en-rCA │ └── strings.xml │ ├── values-en-rGB │ └── strings.xml │ ├── values-en-rIN │ └── strings.xml │ ├── values-en-rXC │ └── strings.xml │ ├── values-es-rUS │ └── strings.xml │ ├── values-es │ └── strings.xml │ ├── values-et │ └── strings.xml │ ├── values-eu │ └── strings.xml │ ├── values-fa │ └── strings.xml │ ├── values-fi │ └── strings.xml │ ├── values-fr-rCA │ └── strings.xml │ ├── values-fr │ └── strings.xml │ ├── values-gl │ └── strings.xml │ ├── values-gu │ └── strings.xml │ ├── values-hi │ └── strings.xml │ ├── values-hr │ └── strings.xml │ ├── values-hu │ └── strings.xml │ ├── values-hy │ └── strings.xml │ ├── values-in │ └── strings.xml │ ├── values-is │ └── strings.xml │ ├── values-it │ └── strings.xml │ ├── values-iw │ └── strings.xml │ ├── values-ja │ └── strings.xml │ ├── values-ka │ └── strings.xml │ ├── values-kk │ └── strings.xml │ ├── values-km │ └── strings.xml │ ├── values-kn │ └── strings.xml │ ├── values-ko │ └── strings.xml │ ├── values-ky │ └── strings.xml │ ├── values-lo │ └── strings.xml │ ├── values-lt │ └── strings.xml │ ├── values-lv │ └── strings.xml │ ├── values-mk │ └── strings.xml │ ├── values-ml │ └── strings.xml │ ├── values-mn │ └── strings.xml │ ├── values-mr │ └── strings.xml │ ├── values-ms │ └── strings.xml │ ├── values-my │ └── strings.xml │ ├── values-nb │ └── strings.xml │ ├── values-ne │ └── strings.xml │ ├── values-nl │ └── strings.xml │ ├── values-or │ └── strings.xml │ ├── values-pa │ └── strings.xml │ ├── values-pl │ └── strings.xml │ ├── values-pt-rBR │ └── strings.xml │ ├── values-pt-rPT │ └── strings.xml │ ├── values-pt │ └── strings.xml │ ├── values-ro │ └── strings.xml │ ├── values-ru │ └── strings.xml │ ├── values-si │ └── strings.xml │ ├── values-sk │ └── strings.xml │ ├── values-sl │ └── strings.xml │ ├── values-sq │ └── strings.xml │ ├── values-sr │ └── strings.xml │ ├── values-sv │ └── strings.xml │ ├── values-sw │ └── strings.xml │ ├── values-ta │ └── strings.xml │ ├── values-te │ └── strings.xml │ ├── values-th │ └── strings.xml │ ├── values-tl │ └── strings.xml │ ├── values-tr │ └── strings.xml │ ├── values-uk │ └── strings.xml │ ├── values-ur │ └── strings.xml │ ├── values-uz │ └── strings.xml │ ├── values-vi │ └── strings.xml │ ├── values-zh-rCN │ └── strings.xml │ ├── values-zh-rHK │ └── strings.xml │ ├── values-zh-rTW │ └── strings.xml │ ├── values-zu │ └── strings.xml │ └── values │ ├── colors.xml │ ├── dimens.xml │ ├── strings.xml │ └── styles.xml ├── README.md ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro ├── release │ ├── baselineProfiles │ │ ├── 0 │ │ │ └── app-release.dm │ │ └── 1 │ │ │ └── app-release.dm │ └── output-metadata.json └── src │ └── main │ ├── AndroidManifest.xml │ ├── aidl │ └── com │ │ └── kieronquinn │ │ ├── .DS_Store │ │ └── app │ │ ├── .DS_Store │ │ └── classicpowermenu │ │ ├── IClassicPowerMenu.aidl │ │ ├── IGlobalActions.aidl │ │ └── model │ │ └── service │ │ ├── ActivityContainer.aidl │ │ ├── BroadcastContainer.aidl │ │ ├── ServiceBindContainer.aidl │ │ └── ServiceUnbindContainer.aidl │ ├── assets │ ├── faq.md │ ├── faq_cn.md │ ├── faq_ja.md │ └── xposed_init │ ├── java │ ├── android │ │ └── service │ │ │ └── quickaccesswallet │ │ │ ├── CPMQuickAccessWalletClientImpl.java │ │ │ └── CPMQuickAccessWalletServiceInfo.java │ └── com │ │ └── kieronquinn │ │ └── app │ │ └── classicpowermenu │ │ ├── ClassicPowerMenu.kt │ │ ├── components │ │ ├── blur │ │ │ ├── BlurProvider.kt │ │ │ ├── BlurProvider30.kt │ │ │ └── BlurProvider31.kt │ │ ├── controls │ │ │ └── ControlsActivityStarterImpl.kt │ │ ├── github │ │ │ ├── Asset.kt │ │ │ ├── Author.kt │ │ │ ├── GitHubReleaseResponse.kt │ │ │ ├── UpdateChecker.kt │ │ │ └── Uploader.kt │ │ ├── monet │ │ │ └── MonetColorProvider.kt │ │ ├── navigation │ │ │ ├── Navigation.kt │ │ │ └── TransitionedActivityNavigator.kt │ │ ├── quickaccesswallet │ │ │ ├── CPMQuickAccessWalletServiceInfo.kt │ │ │ ├── GooglePayConstants.kt │ │ │ ├── WalletActivityStarterImpl.kt │ │ │ ├── WalletCardBlurProviderImpl.kt │ │ │ ├── autoswitch │ │ │ │ └── AutoSwitchServicesRepository.kt │ │ │ ├── loyaltycards │ │ │ │ ├── DatabaseRepository.kt │ │ │ │ ├── GoogleApiRepository.kt │ │ │ │ └── GoogleWalletRepository.kt │ │ │ └── utils │ │ │ │ ├── CPMContentResolver.kt │ │ │ │ └── CPMContext.kt │ │ ├── settings │ │ │ ├── EncryptedSettings.kt │ │ │ ├── RoomEncryptedSettingsRepository.kt │ │ │ └── Settings.kt │ │ ├── starter │ │ │ └── PowerMenuStarter.kt │ │ └── xposed │ │ │ ├── Xposed.kt │ │ │ └── XposedSelfHook.kt │ │ ├── model │ │ ├── power │ │ │ ├── PowerMenuButton.kt │ │ │ └── PowerMenuContentItem.kt │ │ ├── quickaccesswallet │ │ │ ├── LoyaltyCard.kt │ │ │ ├── WalletLoyaltyCardViewInfo.kt │ │ │ └── database │ │ │ │ ├── WalletDatabase.kt │ │ │ │ ├── WalletValuable.kt │ │ │ │ └── WalletValuableDao.kt │ │ ├── service │ │ │ ├── ActivityContainer.kt │ │ │ ├── BroadcastContainer.kt │ │ │ ├── ServiceBindContainer.kt │ │ │ └── ServiceUnbindContainer.kt │ │ └── settings │ │ │ └── SettingsItem.kt │ │ ├── service │ │ ├── accessibility │ │ │ └── CPMAccessibilityService.kt │ │ ├── container │ │ │ └── CPMServiceContainer.kt │ │ ├── globalactions │ │ │ └── GlobalActionsService.kt │ │ ├── root │ │ │ ├── CPMRootService.kt │ │ │ └── impl │ │ │ │ └── CPMRootServiceImpl.kt │ │ └── runner │ │ │ └── CPMServiceRunner.kt │ │ ├── ui │ │ ├── activities │ │ │ ├── MainActivity.kt │ │ │ ├── MainActivityViewModel.kt │ │ │ ├── PowerMenuActivity.kt │ │ │ └── PowerMenuActivityViewModel.kt │ │ ├── base │ │ │ ├── BaseBottomSheetFragment.kt │ │ │ ├── BaseDialogFragment.kt │ │ │ ├── BaseTopSheetFragment.kt │ │ │ ├── BoundFragment.kt │ │ │ └── FragmentOptions.kt │ │ ├── navigation │ │ │ └── CPMNavHostFragment.kt │ │ ├── screens │ │ │ ├── decision │ │ │ │ ├── DecisionFragment.kt │ │ │ │ └── DecisionViewModel.kt │ │ │ ├── powermenu │ │ │ │ ├── container │ │ │ │ │ └── PowerMenuContainerFragment.kt │ │ │ │ ├── main │ │ │ │ │ ├── PowerMenuButtonsAdapter.kt │ │ │ │ │ ├── PowerMenuContentAdapter.kt │ │ │ │ │ ├── PowerMenuFragment.kt │ │ │ │ │ └── PowerMenuViewModel.kt │ │ │ │ ├── safemode │ │ │ │ │ ├── SafeModeTopSheetFragment.kt │ │ │ │ │ └── SafeModeTopSheetViewModel.kt │ │ │ │ └── walletcode │ │ │ │ │ └── WalletCodeDialogFragment.kt │ │ │ ├── settings │ │ │ │ ├── colorpicker │ │ │ │ │ ├── ColorPickerAdapter.kt │ │ │ │ │ └── ColorPickerBottomSheetFragment.kt │ │ │ │ ├── container │ │ │ │ │ └── SettingsContainerFragment.kt │ │ │ │ ├── developeroptions │ │ │ │ │ ├── SettingsDeveloperOptionsFragment.kt │ │ │ │ │ └── SettingsDeveloperOptionsViewModel.kt │ │ │ │ ├── devicecontrols │ │ │ │ │ ├── SettingsDeviceControlsFragment.kt │ │ │ │ │ └── SettingsDeviceControlsViewModel.kt │ │ │ │ ├── faq │ │ │ │ │ └── SettingsFaqFragment.kt │ │ │ │ ├── generic │ │ │ │ │ ├── SettingsGenericAdapter.kt │ │ │ │ │ └── SettingsGenericFragment.kt │ │ │ │ ├── main │ │ │ │ │ ├── SettingsMainFragment.kt │ │ │ │ │ └── SettingsMainViewModel.kt │ │ │ │ ├── poweroptions │ │ │ │ │ ├── SettingsPowerOptionsFragment.kt │ │ │ │ │ ├── SettingsPowerOptionsViewModel.kt │ │ │ │ │ └── rearrange │ │ │ │ │ │ ├── SettingsPowerOptionsRearrangeFragment.kt │ │ │ │ │ │ └── SettingsPowerOptionsRearrangeViewModel.kt │ │ │ │ ├── quickaccesswallet │ │ │ │ │ ├── SettingsQuickAccessWalletFragment.kt │ │ │ │ │ ├── SettingsQuickAccessWalletViewModel.kt │ │ │ │ │ ├── autoswitchservice │ │ │ │ │ │ ├── SettingsQuickAccessWalletAutoSwitchServiceAdapter.kt │ │ │ │ │ │ ├── SettingsQuickAccessWalletAutoSwitchServiceFragment.kt │ │ │ │ │ │ └── SettingsQuickAccessWalletAutoSwitchServiceViewModel.kt │ │ │ │ │ ├── loyaltycards │ │ │ │ │ │ ├── SiginInWithGoogleViewModel.kt │ │ │ │ │ │ └── SignInWithGoogleFragment.kt │ │ │ │ │ └── manage │ │ │ │ │ │ ├── SettingsQuickAccessWalletManageAdapter.kt │ │ │ │ │ │ ├── SettingsQuickAccessWalletManageFragment.kt │ │ │ │ │ │ └── SettingsQuickAccessWalletManageViewModel.kt │ │ │ │ ├── root │ │ │ │ │ └── SettingsRootFragment.kt │ │ │ │ ├── rootcheck │ │ │ │ │ ├── SettingsRootCheckFragment.kt │ │ │ │ │ ├── SettingsRootCheckViewModel.kt │ │ │ │ │ └── noroot │ │ │ │ │ │ └── SettingsRootCheckNoRootBottomSheetFragment.kt │ │ │ │ ├── switched │ │ │ │ │ └── SettingsSwitchedFragment.kt │ │ │ │ └── update │ │ │ │ │ ├── UpdateAvailableBottomSheetFragment.kt │ │ │ │ │ ├── UpdateAvailableBottomSheetViewModel.kt │ │ │ │ │ ├── UpdateDownloadBottomSheetFragment.kt │ │ │ │ │ └── UpdateDownloadBottomSheetViewModel.kt │ │ │ └── setup │ │ │ │ ├── accessibility │ │ │ │ ├── SetupAccessibilityFragment.kt │ │ │ │ └── SetupAccessibilityViewModel.kt │ │ │ │ ├── complete │ │ │ │ ├── SetupCompleteFragment.kt │ │ │ │ └── SetupCompleteViewModel.kt │ │ │ │ ├── controls │ │ │ │ ├── SetupControlsFragment.kt │ │ │ │ └── SetupControlsViewModel.kt │ │ │ │ ├── landing │ │ │ │ ├── SetupLandingFragment.kt │ │ │ │ └── SetupLandingViewModel.kt │ │ │ │ ├── rootcheck │ │ │ │ ├── SetupRootCheckFragment.kt │ │ │ │ └── SetupRootCheckViewModel.kt │ │ │ │ └── wallet │ │ │ │ ├── SetupWalletFragment.kt │ │ │ │ └── SetupWalletViewModel.kt │ │ ├── utils │ │ │ ├── AutoClearedValue.kt │ │ │ ├── DragDisabledAppBarLayoutBehaviour.kt │ │ │ └── TopSheetUtils.kt │ │ └── views │ │ │ └── MonetSwitch.kt │ │ ├── utils │ │ ├── AccessibilityLifecycleService.kt │ │ ├── EmergencyDialerConstants.java │ │ ├── LifecycleApplication.kt │ │ ├── Links.kt │ │ ├── MultiTapDetector.kt │ │ ├── Result.kt │ │ ├── TransitionUtils.kt │ │ ├── extensions │ │ │ ├── Extensions+AccessibilityService.kt │ │ │ ├── Extensions+Activity.kt │ │ │ ├── Extensions+AppBarLayout.kt │ │ │ ├── Extensions+Bitmap.kt │ │ │ ├── Extensions+BroadcastReceiver.kt │ │ │ ├── Extensions+Build.kt │ │ │ ├── Extensions+Canvas.kt │ │ │ ├── Extensions+Color.kt │ │ │ ├── Extensions+Context.kt │ │ │ ├── Extensions+Coroutines.kt │ │ │ ├── Extensions+Drawable.kt │ │ │ ├── Extensions+EncryptedSharedPreferences.kt │ │ │ ├── Extensions+FlexboxLayoutManager.kt │ │ │ ├── Extensions+Fragment.kt │ │ │ ├── Extensions+IActivityManager.kt │ │ │ ├── Extensions+IClassicPowerMenu.kt │ │ │ ├── Extensions+Insets.kt │ │ │ ├── Extensions+Intent.kt │ │ │ ├── Extensions+Lifecycle.kt │ │ │ ├── Extensions+LockPatternUtils.kt │ │ │ ├── Extensions+MonetCompat.kt │ │ │ ├── Extensions+Navigation.kt │ │ │ ├── Extensions+PackageManager.kt │ │ │ ├── Extensions+Parcel.kt │ │ │ ├── Extensions+RecyclerView.kt │ │ │ ├── Extensions+SharedPreferences.kt │ │ │ ├── Extensions+SystemProperties.kt │ │ │ ├── Extensions+TelecomManager.kt │ │ │ ├── Extensions+View.kt │ │ │ ├── Extensions+WalletCardViewInfo.kt │ │ │ ├── Extentions+Retrofit.kt │ │ │ └── Extentions+WebView.kt │ │ └── room │ │ │ ├── EncryptedValue.kt │ │ │ └── GsonConverter.kt │ │ └── workers │ │ └── UpdateCheckWorker.kt │ ├── proto │ ├── com │ │ ├── google │ │ │ ├── android │ │ │ │ └── libraries │ │ │ │ │ └── commerce │ │ │ │ │ └── hce │ │ │ │ │ └── ndef │ │ │ │ │ └── Format.proto │ │ │ └── internal │ │ │ │ └── tapandpay │ │ │ │ └── v1 │ │ │ │ ├── Common.proto │ │ │ │ ├── ListTokenizedCardsRequest.proto │ │ │ │ ├── notifications │ │ │ │ └── ScheduledNotificationProto.proto │ │ │ │ ├── passes │ │ │ │ └── templates │ │ │ │ │ ├── Card.proto │ │ │ │ │ ├── ColorProfile.proto │ │ │ │ │ ├── Detail.proto │ │ │ │ │ ├── Logo.proto │ │ │ │ │ ├── Pass.proto │ │ │ │ │ ├── Reference.proto │ │ │ │ │ └── TransitMode.proto │ │ │ │ └── valuables │ │ │ │ ├── Common.proto │ │ │ │ ├── EventTicket.proto │ │ │ │ ├── Flight.proto │ │ │ │ ├── GenericCard.proto │ │ │ │ ├── GiftCard.proto │ │ │ │ ├── HealthCard.proto │ │ │ │ ├── LoyaltyCard.proto │ │ │ │ ├── Offer.proto │ │ │ │ ├── SyncValuablesRequest.proto │ │ │ │ ├── SyncValuablesResponse.proto │ │ │ │ ├── Transit.proto │ │ │ │ └── ValuableWrapper.proto │ │ └── kieronquinn │ │ │ └── app │ │ │ └── smartspacer │ │ │ └── plugin │ │ │ └── googlewallet │ │ │ └── model │ │ │ └── extras │ │ │ └── TransitCardExtras.proto │ ├── google │ │ └── type │ │ │ ├── calendar_period.proto │ │ │ ├── color.proto │ │ │ ├── date.proto │ │ │ ├── datetime.proto │ │ │ ├── dayofweek.proto │ │ │ ├── decimal.proto │ │ │ ├── expr.proto │ │ │ ├── fraction.proto │ │ │ ├── interval.proto │ │ │ ├── latlng.proto │ │ │ ├── localized_text.proto │ │ │ ├── money.proto │ │ │ ├── month.proto │ │ │ ├── phone_number.proto │ │ │ ├── postal_address.proto │ │ │ ├── quaternion.proto │ │ │ └── timeofday.proto │ └── loyaltycard.proto │ └── res │ ├── anim │ ├── activity_fade_in.xml │ ├── activity_fade_out.xml │ ├── fast_out_extra_slow_in.xml │ ├── slide_back_to_top.xml │ ├── slide_in_left.xml │ ├── slide_in_right.xml │ ├── slide_out_from_top.xml │ ├── slide_out_left.xml │ ├── slide_out_right.xml │ ├── top_sheet_slide_in.xml │ └── top_sheet_slide_out.xml │ ├── animator │ └── animator_zoom_out.xml │ ├── drawable-v24 │ └── ic_launcher_foreground.xml │ ├── drawable │ ├── avd_accessibility.xml │ ├── avd_logo.xml │ ├── background_logo.xml │ ├── background_menu.xml │ ├── background_power_menu_button.xml │ ├── background_setting_warning.xml │ ├── bottom_sheet_rounded_bg.xml │ ├── bottom_sheet_rounded_bg_dark.xml │ ├── bottom_sheet_rounded_bg_light.xml │ ├── clip_wallet_rearrange_card.xml │ ├── dialog_rounded_bg.xml │ ├── foreground_setting_warning.xml │ ├── foreground_wallet_code_logo_outline.xml │ ├── ic_about.xml │ ├── ic_back.xml │ ├── ic_card_type_barcode.xml │ ├── ic_card_type_qr.xml │ ├── ic_check.xml │ ├── ic_close.xml │ ├── ic_donate.xml │ ├── ic_drag_handle.xml │ ├── ic_emergency.xml │ ├── ic_faq.xml │ ├── ic_github.xml │ ├── ic_google_wallet.xml │ ├── ic_launcher_background.xml │ ├── ic_lockdown.xml │ ├── ic_logo.xml │ ├── ic_open_in_pay.xml │ ├── ic_power_off.xml │ ├── ic_power_options_allow_full_rotation.xml │ ├── ic_power_options_allow_rotation.xml │ ├── ic_power_options_hide_when_locked.xml │ ├── ic_power_options_open_collapsed.xml │ ├── ic_power_options_rearrange.xml │ ├── ic_quick_access_wallet_hide_card_number.xml │ ├── ic_quick_access_wallet_manage.xml │ ├── ic_quick_access_wallet_no_cards.xml │ ├── ic_quick_access_wallet_rearrange.xml │ ├── ic_quick_access_wallet_remove_account.xml │ ├── ic_quick_access_wallet_show_preview.xml │ ├── ic_quick_access_wallet_visibility_invisible.xml │ ├── ic_quick_access_wallet_visibility_visible.xml │ ├── ic_reboot.xml │ ├── ic_reboot_bootloader.xml │ ├── ic_reboot_download.xml │ ├── ic_reboot_fastbootd.xml │ ├── ic_reboot_recovery.xml │ ├── ic_restart_systemui.xml │ ├── ic_screenshot.xml │ ├── ic_search_google.xml │ ├── ic_settings_controls.xml │ ├── ic_settings_developer_options.xml │ ├── ic_settings_monet.xml │ ├── ic_settings_monet_color_picker.xml │ ├── ic_settings_power_options.xml │ ├── ic_settings_quick_access_wallet.xml │ ├── ic_settings_solid_color.xml │ ├── ic_twitter.xml │ ├── ic_warning.xml │ ├── ic_xda.xml │ ├── monet_color_picker_circle_background.xml │ ├── ripple.xml │ ├── rounded_ripple_48.xml │ ├── selectable_item_background_stateful.xml │ ├── switch_background_ripple.xml │ └── top_sheet_rounded_bg.xml │ ├── layout │ ├── activity_main.xml │ ├── activity_power_menu.xml │ ├── fragment_bottom_sheet_color_picker.xml │ ├── fragment_bottom_sheet_root_check_no_root.xml │ ├── fragment_dialog_wallet_code.xml │ ├── fragment_power_menu.xml │ ├── fragment_power_menu_container.xml │ ├── fragment_settings_container.xml │ ├── fragment_settings_faq.xml │ ├── fragment_settings_generic.xml │ ├── fragment_settings_power_options_rearrange.xml │ ├── fragment_settings_quick_access_wallet_auto_switch_service.xml │ ├── fragment_settings_quick_access_wallet_manage.xml │ ├── fragment_settings_root.xml │ ├── fragment_settings_root_check.xml │ ├── fragment_settings_switched.xml │ ├── fragment_setup_accessibility.xml │ ├── fragment_setup_complete.xml │ ├── fragment_setup_controls.xml │ ├── fragment_setup_landing.xml │ ├── fragment_setup_rootcheck.xml │ ├── fragment_setup_wallet.xml │ ├── fragment_sign_in_with_google.xml │ ├── fragment_topsheet_safe_mode.xml │ ├── fragment_update_bottom_sheet.xml │ ├── fragment_update_download_bottom_sheet.xml │ ├── item_color_picker.xml │ ├── item_header.xml │ ├── item_power_menu_button.xml │ ├── item_power_menu_button_emergency.xml │ ├── item_power_menu_button_empty.xml │ ├── item_power_menu_cards.xml │ ├── item_power_menu_controls.xml │ ├── item_setting.xml │ ├── item_setting_about.xml │ ├── item_setting_switch.xml │ ├── item_setting_warning.xml │ ├── item_wallet_rearrange_card.xml │ ├── item_wallet_service.xml │ └── view_monet_switch.xml │ ├── menu │ └── menu_main.xml │ ├── mipmap-anydpi-v26 │ └── ic_launcher.xml │ ├── navigation │ ├── nav_graph_power_menu.xml │ ├── nav_graph_root.xml │ ├── nav_graph_settings.xml │ ├── nav_graph_settings_container.xml │ ├── nav_graph_settings_root.xml │ └── nav_graph_setup.xml │ ├── raw-night │ ├── cards_pass_wallet_lottie.json │ └── device_control_lottie.json │ ├── raw │ ├── cards_pass_wallet_lottie.json │ ├── device_control_lottie.json │ └── setup_complete_lottie.json │ ├── values-ar-rSA │ └── strings.xml │ ├── values-el-rGR │ └── strings.xml │ ├── values-es-rES │ └── strings.xml │ ├── values-fr-rFR │ └── strings.xml │ ├── values-hu-rHU │ └── strings.xml │ ├── values-it │ └── strings.xml │ ├── values-ja │ └── strings.xml │ ├── values-ko-rKR │ └── strings.xml │ ├── values-land │ └── dimens.xml │ ├── values-night-v31 │ └── colors.xml │ ├── values-night │ ├── bools.xml │ └── colors.xml │ ├── values-pl-rPL │ └── strings.xml │ ├── values-ru │ └── strings.xml │ ├── values-v31 │ ├── colors.xml │ └── dimens.xml │ ├── values-zh-rCN │ └── strings.xml │ ├── values │ ├── arrays.xml │ ├── bools.xml │ ├── colors.xml │ ├── dimens.xml │ ├── strings.xml │ └── themes.xml │ └── xml │ ├── accessibility_service.xml │ ├── backup_rules.xml │ ├── data_extraction_rules.xml │ ├── provider_paths.xml │ └── shortcuts.xml ├── build.gradle ├── crowdin.yml ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── systemstubs ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro ├── src └── main │ ├── AndroidManifest.xml │ ├── aidl │ ├── android │ │ ├── app │ │ │ ├── IApplicationThread.aidl │ │ │ ├── IServiceConnection.aidl │ │ │ ├── ProfilerInfo.aidl │ │ │ └── trust │ │ │ │ └── ITrustManager.aidl │ │ ├── content │ │ │ ├── IIntentReceiver.aidl │ │ │ ├── IIntentSender.aidl │ │ │ └── pm │ │ │ │ └── IPackageManager.aidl │ │ ├── hardware │ │ │ └── input │ │ │ │ └── IInputManager.aidl │ │ ├── os │ │ │ ├── IPowerManager.aidl │ │ │ └── IUserManager.aidl │ │ ├── permission │ │ │ └── IPermissionManager.aidl │ │ ├── service │ │ │ ├── controls │ │ │ │ ├── IControlsActionCallback.aidl │ │ │ │ ├── IControlsProvider.aidl │ │ │ │ ├── IControlsSubscriber.aidl │ │ │ │ ├── IControlsSubscription.aidl │ │ │ │ └── actions │ │ │ │ │ └── ControlActionWrapper.aidl │ │ │ └── quickaccesswallet │ │ │ │ ├── GetWalletCardsError.aidl │ │ │ │ ├── GetWalletCardsRequest.aidl │ │ │ │ ├── GetWalletCardsResponse.aidl │ │ │ │ ├── IQuickAccessWalletService.aidl │ │ │ │ ├── IQuickAccessWalletServiceCallbacks.aidl │ │ │ │ ├── SelectWalletCardRequest.aidl │ │ │ │ ├── WalletCard.aidl │ │ │ │ ├── WalletServiceEvent.aidl │ │ │ │ └── WalletServiceEventListenerRequest.aidl │ │ └── view │ │ │ ├── IWindow.aidl │ │ │ ├── IWindowManager.aidl │ │ │ └── MagnificationSpec.aidl │ └── com │ │ └── android │ │ └── internal │ │ └── widget │ │ └── ILockSettings.aidl │ ├── java │ ├── android │ │ ├── annotation │ │ │ ├── CallbackExecutor.java │ │ │ ├── SdkConstant.java │ │ │ └── TestApi.java │ │ ├── app │ │ │ ├── ActivityThread.java │ │ │ ├── ActivityView.java │ │ │ ├── AppGlobals.java │ │ │ ├── IActivityManager.java │ │ │ ├── LoadedApk.java │ │ │ ├── ProfilerInfo.java │ │ │ └── servertransaction │ │ │ │ └── PendingTransactionActions.java │ │ ├── content │ │ │ ├── IContentProvider.java │ │ │ └── res │ │ │ │ └── CompatibilityInfo.java │ │ ├── os │ │ │ └── HandlerExecutor.java │ │ ├── service │ │ │ ├── controls │ │ │ │ └── actions │ │ │ │ │ └── ControlActionWrapper.java │ │ │ └── quickaccesswallet │ │ │ │ ├── GetWalletCardsCallback.java │ │ │ │ ├── GetWalletCardsCallbackImpl.java │ │ │ │ ├── GetWalletCardsError.java │ │ │ │ ├── GetWalletCardsRequest.java │ │ │ │ ├── GetWalletCardsResponse.java │ │ │ │ ├── QuickAccessWalletClient.java │ │ │ │ ├── QuickAccessWalletClientImpl.java │ │ │ │ ├── QuickAccessWalletService.java │ │ │ │ ├── QuickAccessWalletServiceInfo.java │ │ │ │ ├── SelectWalletCardRequest.java │ │ │ │ ├── WalletCard.java │ │ │ │ ├── WalletServiceEvent.java │ │ │ │ └── WalletServiceEventListenerRequest.java │ │ ├── util │ │ │ ├── IconDrawableFactory.java │ │ │ └── MathUtils.java │ │ ├── view │ │ │ └── MagnificationSpec.java │ │ └── window │ │ │ └── TaskEmbedder.java │ └── com │ │ └── android │ │ └── internal │ │ └── content │ │ └── ReferrerIntent.java │ └── res │ └── values │ └── attrs.xml └── systemlibraries └── framework.jar /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KieronQuinn/ClassicPowerMenu/e17f14a85f85d4eefabaf847abfadd1af32291c1/.DS_Store -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | Classic Power Menu -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/deploymentTargetSelector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /.idea/material_theme_project_new.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/migrations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Controls/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /Controls/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KieronQuinn/ClassicPowerMenu/e17f14a85f85d4eefabaf847abfadd1af32291c1/Controls/consumer-rules.pro -------------------------------------------------------------------------------- /Controls/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /Controls/src/main/java/com/android/settingslib/core/lifecycle/events/OnOptionsItemSelected.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.android.settingslib.core.lifecycle.events; 18 | 19 | import android.view.MenuItem; 20 | 21 | public interface OnOptionsItemSelected { 22 | boolean onOptionsItemSelected(MenuItem menuItem); 23 | } 24 | -------------------------------------------------------------------------------- /Controls/src/main/java/com/android/settingslib/core/lifecycle/events/OnPrepareOptionsMenu.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.android.settingslib.core.lifecycle.events; 18 | 19 | import android.view.Menu; 20 | 21 | public interface OnPrepareOptionsMenu { 22 | void onPrepareOptionsMenu(Menu menu); 23 | } 24 | -------------------------------------------------------------------------------- /Controls/src/main/java/com/android/settingslib/core/lifecycle/events/OnSaveInstanceState.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.android.settingslib.core.lifecycle.events; 17 | 18 | import android.os.Bundle; 19 | 20 | 21 | public interface OnSaveInstanceState { 22 | void onSaveInstanceState(Bundle outState); 23 | } 24 | -------------------------------------------------------------------------------- /Controls/src/main/java/com/android/systemui/Prefs.kt: -------------------------------------------------------------------------------- 1 | package com.android.systemui 2 | 3 | import android.content.Context 4 | 5 | class Prefs { 6 | 7 | companion object { 8 | fun getInt(context: Context, key: String, default: Int): Int { 9 | //TODO 10 | return default 11 | } 12 | 13 | fun putInt(context: Context, key: String, value: Int) { 14 | //TODO 15 | } 16 | 17 | const val CONTROLS_STRUCTURE_SWIPE_TOOLTIP_COUNT = "ControlsStructureSwipeTooltipCount" 18 | } 19 | } -------------------------------------------------------------------------------- /Controls/src/main/java/com/android/systemui/backup/BackupHelper.kt: -------------------------------------------------------------------------------- 1 | package com.android.systemui.backup 2 | 3 | class BackupHelper { 4 | 5 | //Bare minimum to maintain basic functionality 6 | 7 | companion object { 8 | val controlsDataLock = Any() 9 | const val ACTION_RESTORE_FINISHED = "com.android.systemui.backup.RESTORE_FINISHED" 10 | } 11 | 12 | } -------------------------------------------------------------------------------- /Controls/src/main/java/com/android/systemui/controls/dagger/ControlsFeatureEnabled.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2020 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.android.systemui.controls.dagger 18 | 19 | @MustBeDocumented 20 | @Retention(AnnotationRetention.RUNTIME) 21 | annotation class ControlsFeatureEnabled -------------------------------------------------------------------------------- /Controls/src/main/java/com/android/systemui/dump/DumpManager.kt: -------------------------------------------------------------------------------- 1 | package com.android.systemui.dump 2 | 3 | import com.android.systemui.Dumpable 4 | 5 | class DumpManager { 6 | 7 | fun registerDumpable(name: String, module: Dumpable) { 8 | //no-op 9 | } 10 | 11 | 12 | } -------------------------------------------------------------------------------- /Controls/src/main/java/com/android/systemui/globalactions/GlobalActionsComponent.kt: -------------------------------------------------------------------------------- 1 | package com.android.systemui.globalactions 2 | 3 | import com.android.systemui.util.extensions.ServiceRunner 4 | 5 | class GlobalActionsComponent(private val serviceRunner: ServiceRunner) { 6 | fun handleShowGlobalActionsMenu() { 7 | serviceRunner.showPowerMenu() 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Controls/src/main/java/com/android/systemui/globalactions/GlobalActionsDialog.java: -------------------------------------------------------------------------------- 1 | package com.android.systemui.globalactions; 2 | 3 | public class GlobalActionsDialog { 4 | public static final String PREFS_CONTROLS_FILE = "controls_prefs"; 5 | public static final String PREFS_CONTROLS_SEEDING_COMPLETED = "SeedingCompleted"; 6 | } 7 | -------------------------------------------------------------------------------- /Controls/src/main/java/com/android/systemui/plugins/ActivityStarter.kt: -------------------------------------------------------------------------------- 1 | package com.android.systemui.plugins 2 | 3 | import com.android.systemui.util.extensions.ControlsActivityStarter 4 | import org.koin.core.component.KoinComponent 5 | import org.koin.core.component.inject 6 | 7 | class ActivityStarter: KoinComponent { 8 | 9 | private val controlsActivityStarter by inject() 10 | 11 | fun dismissKeyguardThenExecute(onDismissAction: () -> Boolean, cancel: (() -> Unit)?, afterKeyguardGone: Boolean, dismissPowerMenu: Boolean = true) { 12 | controlsActivityStarter.runAfterKeyguardDismissed(onDismissAction, cancel, afterKeyguardGone, dismissPowerMenu) 13 | } 14 | 15 | fun dismissPowerMenu(){ 16 | controlsActivityStarter.dismissPowerMenuActivity() 17 | } 18 | 19 | } -------------------------------------------------------------------------------- /Controls/src/main/java/com/android/systemui/statusbar/phone/ShadeControllerImpl.kt: -------------------------------------------------------------------------------- 1 | package com.android.systemui.statusbar.phone 2 | 3 | class ShadeControllerImpl: ShadeController { 4 | 5 | override fun collapsePanel(animate: Boolean) { 6 | //TODO 7 | } 8 | 9 | } -------------------------------------------------------------------------------- /Controls/src/main/java/com/android/systemui/util/annotations/ResponseResult.java: -------------------------------------------------------------------------------- 1 | package com.android.systemui.util.annotations; 2 | 3 | import static android.service.controls.actions.ControlAction.*; 4 | 5 | import androidx.annotation.IntDef; 6 | 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | 10 | @Retention(RetentionPolicy.SOURCE) 11 | @IntDef({ 12 | RESPONSE_UNKNOWN, 13 | RESPONSE_OK, 14 | RESPONSE_FAIL, 15 | RESPONSE_CHALLENGE_ACK, 16 | RESPONSE_CHALLENGE_PIN, 17 | RESPONSE_CHALLENGE_PASSPHRASE 18 | }) 19 | public @interface ResponseResult {}; -------------------------------------------------------------------------------- /Controls/src/main/java/com/android/systemui/util/extensions/ControlsActivityStarter.kt: -------------------------------------------------------------------------------- 1 | package com.android.systemui.util.extensions 2 | 3 | import android.content.Intent 4 | 5 | interface ControlsActivityStarter { 6 | 7 | fun startActivity(intent: Intent, dismissPowerMenu: Boolean = true) 8 | fun dismissPowerMenuActivity() 9 | fun runAfterKeyguardDismissed(onDismissAction: () -> Boolean, onCancel: (() -> Unit)?, afterDismissed: Boolean, dismissPowerMenu: Boolean = true) 10 | 11 | } -------------------------------------------------------------------------------- /Controls/src/main/java/com/android/systemui/util/extensions/Extensions+ActivityManager.kt: -------------------------------------------------------------------------------- 1 | package com.android.systemui.util.extensions 2 | 3 | import android.app.ActivityManager 4 | import org.koin.core.component.KoinComponent 5 | import org.koin.core.component.inject 6 | 7 | private object ActivityManagerServiceWrapper: KoinComponent { 8 | 9 | private val service by inject() 10 | 11 | fun getCurrentUser(): Int { 12 | return service.getCurrentUser() 13 | } 14 | 15 | } 16 | 17 | fun ActivityManager_getCurrentUser(): Int { 18 | return ActivityManagerServiceWrapper.getCurrentUser() 19 | } 20 | 21 | fun ActivityManager.getUidImportance(uid: Int): Int { 22 | return ActivityManager::class.java.getMethod("getUidImportance", Integer.TYPE).invoke(this) as Int 23 | } -------------------------------------------------------------------------------- /Controls/src/main/java/com/android/systemui/util/extensions/Extensions+AnimatedVectorDrawable.kt: -------------------------------------------------------------------------------- 1 | package com.android.systemui.util.extensions 2 | 3 | import android.graphics.drawable.AnimatedVectorDrawable 4 | 5 | fun AnimatedVectorDrawable.forceAnimationOnUI(){ 6 | AnimatedVectorDrawable::class.java.getMethod("forceAnimationOnUI").invoke(this) 7 | } -------------------------------------------------------------------------------- /Controls/src/main/java/com/android/systemui/util/extensions/Extensions+BroadcastReceiver.kt: -------------------------------------------------------------------------------- 1 | package com.android.systemui.util.extensions 2 | 3 | import android.content.BroadcastReceiver 4 | 5 | var BroadcastReceiver.pendingResult: BroadcastReceiver.PendingResult 6 | get() = this::class.java.getMethod("getPendingResult").invoke(this) as BroadcastReceiver.PendingResult 7 | set(value) { 8 | this::class.java.getMethod("setPendingResult").invoke(this, value) 9 | } 10 | 11 | val BroadcastReceiver.sendingUserId: Int 12 | get() = this::class.java.getMethod("getSendingUserId").invoke(this) as Int -------------------------------------------------------------------------------- /Controls/src/main/java/com/android/systemui/util/extensions/Extensions+ComponentInfo.kt: -------------------------------------------------------------------------------- 1 | package com.android.systemui.util.extensions 2 | 3 | import android.content.ComponentName 4 | import android.content.pm.ComponentInfo 5 | 6 | val ComponentInfo.componentName 7 | get() = ComponentInfo::class.java.getMethod("getComponentName").invoke(this) as ComponentName -------------------------------------------------------------------------------- /Controls/src/main/java/com/android/systemui/util/extensions/Extensions+ControlTemplate.kt: -------------------------------------------------------------------------------- 1 | package com.android.systemui.util.extensions 2 | 3 | import android.service.controls.templates.ControlTemplate 4 | 5 | val ControlTemplate_TYPE_NO_TEMPLATE = 0 6 | 7 | val ControlTemplate_NO_TEMPLATE 8 | get() = ControlTemplate::class.java.getField("NO_TEMPLATE").get(null) as ControlTemplate -------------------------------------------------------------------------------- /Controls/src/main/java/com/android/systemui/util/extensions/Extensions+ControlsProviderService.kt: -------------------------------------------------------------------------------- 1 | package com.android.systemui.util.extensions 2 | 3 | import android.service.controls.ControlsProviderService 4 | 5 | val ControlsProviderService_EXTRA_CONTROL = "android.service.controls.extra.CONTROL" 6 | val ControlsProviderService_CALLBACK_TOKEN = "CALLBACK_TOKEN" 7 | val ControlsProviderService_CALLBACK_BUNDLE = "CALLBACK_BUNDLE" 8 | 9 | -------------------------------------------------------------------------------- /Controls/src/main/java/com/android/systemui/util/extensions/Extensions+Environment.kt: -------------------------------------------------------------------------------- 1 | package com.android.systemui.util.extensions 2 | 3 | import android.os.Environment 4 | import java.io.File 5 | 6 | fun Environment_buildPath(file: File, vararg segments: String): File { 7 | return Environment::class.java.getMethod("buildPath", File::class.java, Array::class.java).invoke(null, file, segments) as File 8 | } -------------------------------------------------------------------------------- /Controls/src/main/java/com/android/systemui/util/extensions/Extensions+Executor.kt: -------------------------------------------------------------------------------- 1 | package com.android.systemui.util.extensions 2 | 3 | import android.os.HandlerThread 4 | import android.os.Looper 5 | import com.android.systemui.util.concurrency.DelayableExecutor 6 | import com.android.systemui.util.concurrency.ExecutorImpl 7 | 8 | fun createBackgroundExecutor(): DelayableExecutor { 9 | return ExecutorImpl(HandlerThread("controls-background").apply { 10 | start() 11 | }.looper) 12 | } 13 | 14 | fun createForgroundExecutor(): DelayableExecutor { 15 | return ExecutorImpl(Looper.getMainLooper()) 16 | } -------------------------------------------------------------------------------- /Controls/src/main/java/com/android/systemui/util/extensions/Extensions+Intent.kt: -------------------------------------------------------------------------------- 1 | package com.android.systemui.util.extensions 2 | 3 | val Intent_ACTION_USER_SWITCHED = "android.intent.action.USER_SWITCHED" 4 | val Intent_EXTRA_USER_HANDLE = "android.intent.extra.user_handle" 5 | val Intent_EXTRA_USER_ID = "android.intent.extra.USER_ID" -------------------------------------------------------------------------------- /Controls/src/main/java/com/android/systemui/util/extensions/Extensions+Lazy.kt: -------------------------------------------------------------------------------- 1 | package com.android.systemui.util.extensions 2 | 3 | /** 4 | * Dagger bridge 5 | */ 6 | fun Lazy.get(): T { 7 | return value 8 | } -------------------------------------------------------------------------------- /Controls/src/main/java/com/android/systemui/util/extensions/Extensions+ListPopupWindow.kt: -------------------------------------------------------------------------------- 1 | package com.android.systemui.util.extensions 2 | 3 | import android.widget.ListPopupWindow 4 | 5 | fun ListPopupWindow.dismissImmediate(){ 6 | ListPopupWindow::class.java.getMethod("dismissImmediate").invoke(this) 7 | } -------------------------------------------------------------------------------- /Controls/src/main/java/com/android/systemui/util/extensions/Extensions+PendingIntent.kt: -------------------------------------------------------------------------------- 1 | package com.android.systemui.util.extensions 2 | 3 | import android.app.PendingIntent 4 | import android.content.IIntentSender 5 | import android.content.Intent 6 | 7 | val PendingIntent.mTarget: IIntentSender 8 | get() { 9 | return this::class.java.getDeclaredField("mTarget").apply { 10 | isAccessible = true 11 | }.get(this) as IIntentSender 12 | } -------------------------------------------------------------------------------- /Controls/src/main/java/com/android/systemui/util/extensions/Extensions+UserHandle.kt: -------------------------------------------------------------------------------- 1 | package com.android.systemui.util.extensions 2 | 3 | import android.os.UserHandle 4 | 5 | fun UserHandle_of(userId: Int): UserHandle { 6 | return UserHandle::class.java.getMethod("of", Integer.TYPE).invoke(null, userId) as UserHandle 7 | } 8 | 9 | val UserHandle.identifier: Int 10 | get() { 11 | return this::class.java.getMethod("getIdentifier").invoke(this) as Int 12 | } 13 | 14 | val UserHandle_USER_ALL = -1 15 | val UserHandle_ALL 16 | get() = UserHandle_of(UserHandle_USER_ALL) 17 | 18 | val UserHandle_USER_NULL = -10000 19 | val UserHandle_NULL 20 | get() = UserHandle_of(UserHandle_USER_NULL) 21 | 22 | val UserHandle_USER_CURRENT = -2 23 | val UserHandle_CURRENT 24 | get() = UserHandle_of(UserHandle_USER_CURRENT) 25 | 26 | val UserHandle_USER_SYSTEM = -2 27 | val UserHandle_SYSTEM 28 | get() = UserHandle_of(UserHandle_USER_SYSTEM) -------------------------------------------------------------------------------- /Controls/src/main/java/com/android/systemui/util/extensions/Extensions+View.kt: -------------------------------------------------------------------------------- 1 | package com.android.systemui.util.extensions 2 | 3 | import android.view.View 4 | 5 | val View.isVisibleToUser: Boolean 6 | get() { 7 | return View::class.java.getMethod("isVisibleToUser").invoke(this) as Boolean 8 | } -------------------------------------------------------------------------------- /Controls/src/main/java/com/android/systemui/util/extensions/Extensions.kt: -------------------------------------------------------------------------------- 1 | package com.android.systemui.util.extensions 2 | 3 | import com.android.internal.util.IndentingPrintWriter 4 | import java.io.PrintWriter 5 | 6 | /** 7 | * If `this` is an [IndentingPrintWriter], it will process block inside an indentation level. 8 | * 9 | * If not, this will just process block. 10 | */ 11 | inline fun PrintWriter.indentIfPossible(block: PrintWriter.() -> Unit) { 12 | if (this is IndentingPrintWriter) increaseIndent() 13 | block() 14 | if (this is IndentingPrintWriter) decreaseIndent() 15 | } -------------------------------------------------------------------------------- /Controls/src/main/java/com/android/systemui/util/extensions/ServiceRunner.kt: -------------------------------------------------------------------------------- 1 | package com.android.systemui.util.extensions 2 | 3 | import android.app.PendingIntent 4 | import android.content.Context 5 | import android.content.Intent 6 | import android.content.ServiceConnection 7 | import androidx.annotation.AnimRes 8 | 9 | interface ServiceRunner { 10 | 11 | fun bindService(context: Context, intent: Intent, serviceConnection: ServiceConnection, flags: Int) 12 | fun unbindService(context: Context, serviceConnection: ServiceConnection) 13 | fun startActivity(context: Context, intent: Intent, runAfter: (() -> Unit)? = null) 14 | fun getIntentForPendingIntent(pendingIntent: PendingIntent, callback: (Intent) -> Unit) 15 | fun overridePendingTransition(@AnimRes enterAnim: Int, @AnimRes exitAnim: Int) 16 | fun getCurrentUser(): Int 17 | fun showPowerMenu() 18 | 19 | } -------------------------------------------------------------------------------- /Controls/src/main/java/libcore/io/IoUtils.java: -------------------------------------------------------------------------------- 1 | package libcore.io; 2 | 3 | import androidx.annotation.Nullable; 4 | 5 | public class IoUtils { 6 | 7 | /** 8 | * Closes {@link AutoCloseable} instance, ignoring any checked exceptions. 9 | * 10 | * @param closeable is AutoClosable instance, null value is ignored. 11 | * 12 | */ 13 | public static void closeQuietly(@Nullable AutoCloseable closeable) { 14 | if (closeable != null) { 15 | try { 16 | closeable.close(); 17 | } catch (RuntimeException rethrown) { 18 | throw rethrown; 19 | } catch (Exception ignored) { 20 | } 21 | } 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /Controls/src/main/res/anim/control_state.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | -------------------------------------------------------------------------------- /Controls/src/main/res/color/control_foreground.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /Controls/src/main/res/color/light_foreground.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /Controls/src/main/res/color/thermo_cool_foreground.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /Controls/src/main/res/color/thermo_heat_foreground.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /Controls/src/main/res/drawable/control_layer.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Controls/src/main/res/drawable/ic_round_keyboard_arrow_down_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /Controls/src/main/res/drawable/recents_onboarding_toast_rounded_background.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Controls/src/main/res/drawable/rounded_bg_full.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 11 | -------------------------------------------------------------------------------- /Controls/src/main/res/font/google_sans_text_bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KieronQuinn/ClassicPowerMenu/e17f14a85f85d4eefabaf847abfadd1af32291c1/Controls/src/main/res/font/google_sans_text_bold.ttf -------------------------------------------------------------------------------- /Controls/src/main/res/font/google_sans_text_bold_italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KieronQuinn/ClassicPowerMenu/e17f14a85f85d4eefabaf847abfadd1af32291c1/Controls/src/main/res/font/google_sans_text_bold_italic.ttf -------------------------------------------------------------------------------- /Controls/src/main/res/font/google_sans_text_italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KieronQuinn/ClassicPowerMenu/e17f14a85f85d4eefabaf847abfadd1af32291c1/Controls/src/main/res/font/google_sans_text_italic.ttf -------------------------------------------------------------------------------- /Controls/src/main/res/font/google_sans_text_medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KieronQuinn/ClassicPowerMenu/e17f14a85f85d4eefabaf847abfadd1af32291c1/Controls/src/main/res/font/google_sans_text_medium.ttf -------------------------------------------------------------------------------- /Controls/src/main/res/font/google_sans_text_medium_italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KieronQuinn/ClassicPowerMenu/e17f14a85f85d4eefabaf847abfadd1af32291c1/Controls/src/main/res/font/google_sans_text_medium_italic.ttf -------------------------------------------------------------------------------- /Controls/src/main/res/font/google_sans_text_regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KieronQuinn/ClassicPowerMenu/e17f14a85f85d4eefabaf847abfadd1af32291c1/Controls/src/main/res/font/google_sans_text_regular.ttf -------------------------------------------------------------------------------- /Controls/src/main/res/values-land/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 4 5 | 6 | 7 | 4 8 | -------------------------------------------------------------------------------- /Controls/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Controls/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /QuickAccessWallet/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /QuickAccessWallet/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KieronQuinn/ClassicPowerMenu/e17f14a85f85d4eefabaf847abfadd1af32291c1/QuickAccessWallet/consumer-rules.pro -------------------------------------------------------------------------------- /QuickAccessWallet/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KieronQuinn/ClassicPowerMenu/e17f14a85f85d4eefabaf847abfadd1af32291c1/QuickAccessWallet/src/main/.DS_Store -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/java/com/android/systemui/plugins/activitystarter/WalletActivityStarter.kt: -------------------------------------------------------------------------------- 1 | package com.android.systemui.plugins.activitystarter 2 | 3 | import org.koin.core.component.KoinComponent 4 | import org.koin.core.component.inject 5 | 6 | interface WalletActivityStarter { 7 | 8 | fun runAfterKeyguardDismissed(runnable: Runnable) 9 | 10 | } 11 | 12 | object WalletActivityStarterProvider: KoinComponent { 13 | 14 | private val starter by inject() 15 | 16 | fun getActivityStarter(): WalletActivityStarter { 17 | return starter 18 | } 19 | 20 | } -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/java/com/android/systemui/plugins/cardblur/WalletCardBlur.kt: -------------------------------------------------------------------------------- 1 | package com.android.systemui.plugins.cardblur 2 | 3 | import android.graphics.drawable.Drawable 4 | import org.koin.core.component.KoinComponent 5 | import org.koin.core.component.inject 6 | 7 | interface WalletCardBlurProvider { 8 | 9 | fun applyBlurToCardDrawableIfNeeded(cardDrawable: Drawable, cardType: String): Drawable 10 | 11 | } 12 | 13 | object WalletCardBlur: KoinComponent { 14 | 15 | private val provider by inject() 16 | 17 | fun getWalletCardBlurProvider(): WalletCardBlurProvider { 18 | return provider 19 | } 20 | 21 | } -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/java/com/android/systemui/plugins/loyaltycards/WalletLoyaltyCardCallback.kt: -------------------------------------------------------------------------------- 1 | package com.android.systemui.plugins.loyaltycards 2 | 3 | import com.android.systemui.plugin.globalactions.wallet.WalletCardViewInfo 4 | 5 | data class WalletLoyaltyCardCallback(val method: (list: ArrayList, callback: Runnable) -> Unit) -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/drawable/rounded_corners.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-af/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Ontsluit jou foon om jou betaalinligting te laai" 5 | "Kieslys" 6 | "Kon nie jou kaarte kry nie; probeer later weer" 7 | "Instellings" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-am/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "የክፍያ መረጃዎን ለመጫን ስልክዎን ይክፈቱ" 5 | "ምናሌ" 6 | "የእርስዎን ካርዶች ማግኘት ላይ ችግር ነበር፣ እባክዎ ቆይተው እንደገና ይሞክሩ" 7 | "ቅንብሮች" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-ar/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "يجب فتح قفل هاتفك لتحميل معلومات الدفع." 5 | "قائمة" 6 | "حدثت مشكلة أثناء الحصول على البطاقات، يُرجى إعادة المحاولة لاحقًا." 7 | "الإعدادات" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-as/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "আপোনাৰ পৰিশোধৰ তথ্য ল\'ড কৰিবলৈ আপোনাৰ ফ\'নটো আনলক কৰক" 5 | "মেনু" 6 | "আপোনাৰ কাৰ্ডসমূহ লাভ কৰোঁতে এটা সমস্যাৰ সৃষ্টি হৈছে, অনুগ্ৰহ কৰি পাছত পুনৰ চেষ্টা কৰক" 7 | "ছেটিংসমূহ" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-az/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Ödəniş məlumatınızı yükləmək üçün telefonu kiliddən çıxarın" 5 | "Menyu" 6 | "Kartların əldə edilməsində problem oldu, sonra yenidən cəhd edin" 7 | "Ayarlar" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-b+sr+Latn/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Otključajte telefon da biste učitali podatke o plaćanju" 5 | "Meni" 6 | "Došlo je do problema pri preuzimanju kartica. Probajte ponovo kasnije" 7 | "Podešavanja" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-be/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Каб загрузіць плацежную інфармацыю, разблакіруйце тэлефон" 5 | "Меню" 6 | "Узнікла праблема з загрузкай вашых картак. Паўтарыце спробу пазней" 7 | "Налады" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-bg/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Отключете телефона, за да заредите данните си за плащане" 5 | "Меню" 6 | "При извличането на картите ви възникна проблем. Моля, опитайте отново по-късно." 7 | "Настройки" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-bn/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "আপনার পেমেন্টের তথ্য লোড করতে ফোন আনলক করুন" 5 | "মেনু" 6 | "আপনার কার্ড লোড করতে সমস্যা হয়েছে, পরে আবার চেষ্টা করুন" 7 | "সেটিংস" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-bs/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Otključajte telefon da učitate podatke za plaćanje" 5 | "Meni" 6 | "Došlo je do problema prilikom preuzimanja vaših kartica. Pokušajte ponovo kasnije." 7 | "Postavke" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-ca/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Desbloqueja el telèfon per carregar la teva informació de pagament" 5 | "Menú" 6 | "Hi ha hagut un problema en obtenir les teves targetes; torna-ho a provar més tard" 7 | "Configuració" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-cs/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Odemkněte telefon, aby se načetly vaše platební údaje" 5 | "Nabídka" 6 | "Při načítání karet došlo k problému, zkuste to později" 7 | "Nastavení" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-da/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Lås din telefon op for at indlæse betalingsoplysninger" 5 | "Menu" 6 | "Der opstod et problem med at hente dine kort. Prøv igen senere." 7 | "Indstillinger" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-de/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Smartphone entsperren, um Zahlungsinformationen zu laden" 5 | "Menü" 6 | "Beim Abrufen deiner Karten ist ein Fehler aufgetreten. Bitte versuch es später noch einmal." 7 | "Einstellungen" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-el/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Ξεκλειδώστε το τηλέφωνο για φόρτωση των στοιχείων πληρωμής σας" 5 | "Μενού" 6 | "Παρουσιάστηκε πρόβλημα με τη λήψη των καρτών σας. Δοκιμάστε ξανά αργότερα" 7 | "Ρυθμίσεις" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-en-rAU/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Unlock your phone to load your payment info" 5 | "Menu" 6 | "There was a problem getting your cards. Please try again later." 7 | "Settings" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-en-rCA/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Unlock your phone to load your payment info" 5 | "Menu" 6 | "There was a problem getting your cards. Please try again later." 7 | "Settings" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-en-rGB/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Unlock your phone to load your payment info" 5 | "Menu" 6 | "There was a problem getting your cards. Please try again later." 7 | "Settings" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-en-rIN/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Unlock your phone to load your payment info" 5 | "Menu" 6 | "There was a problem getting your cards. Please try again later." 7 | "Settings" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-es-rUS/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Desbloquea el teléfono para cargar tu información de pago" 5 | "Menú" 6 | "Ocurrió un problema al obtener las tarjetas; vuelve a intentarlo más tarde" 7 | "Configuración" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-es/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Desbloquea el teléfono para cargar tus datos de pago" 5 | "Menú" 6 | "Se ha producido un problema al obtener tus cartas; inténtalo de nuevo más tarde" 7 | "Ajustes" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-et/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Makseteabe laadimiseks avage telefoni ekraanilukk" 5 | "Menüü" 6 | "Teie kaartide hankimisel ilmnes probleem, proovige hiljem uuesti" 7 | "Seaded" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-eu/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Desblokeatu telefonoa ordainketa-informazioa kargatzeko" 5 | "Menua" 6 | "Arazo bat izan da txartelak eskuratzean. Saiatu berriro geroago." 7 | "Ezarpenak" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-fa/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "برای بار کردن اطلاعات پرداخت، قفل تلفنتان را باز کنید" 5 | "منو" 6 | "هنگام دریافت کارت‌ها مشکلی پیش آمد، لطفاً بعداً دوباره امتحان کنید" 7 | "تنظیمات" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-fi/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Avaa puhelimen lukitus ladataksesi maksutiedot" 5 | "Valikko" 6 | "Korttien noutamisessa oli ongelma, yritä myöhemmin uudelleen" 7 | "Asetukset" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-fr-rCA/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Déverrouillez le téléphone pour charger vos données de paiement" 5 | "Menu" 6 | "Un problème est survenu lors de la récupération de vos cartes, veuillez réessayer plus tard" 7 | "Paramètres" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-fr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Déverrouillez le téléphone pour charger vos informations de paiement" 5 | "Menu" 6 | "Un problème est survenu lors de la récupération de vos cartes. Veuillez réessayer plus tard." 7 | "Paramètres" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-gl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Desbloquea o teléfono para cargar a túa información de pago" 5 | "Menú" 6 | "Produciuse un problema ao obter as tarxetas. Téntao de novo máis tarde" 7 | "Configuración" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-gu/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "તમારી ચુકવણીની માહિતી લોડ કરવા તમારા ફોનને અનલૉક કરો" 5 | "મેનૂ" 6 | "તમારા કાર્ડની માહિતી મેળવવામાં સમસ્યા આવી હતી, કૃપા કરીને પછીથી ફરી પ્રયાસ કરો" 7 | "સેટિંગ" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-hi/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "भुगतान की जानकारी की जानकारी लोड करने के लिए, फ़ोन अनलॉक करें" 5 | "मेन्यू" 6 | "आपके कार्ड की जानकारी पाने में कोई समस्या हुई है. कृपया बाद में कोशिश करें" 7 | "सेटिंग" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-hr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Otključajte telefon da biste učitali podatke o plaćanju" 5 | "Izbornik" 6 | "Pojavio se problem prilikom dohvaćanja kartica, pokušajte ponovo kasnije" 7 | "Postavke" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-hu/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "A fizetési adatok betöltéséhez oldja fel a telefonzárat" 5 | "Menü" 6 | "Probléma merült fel a kártyák lekérésekor, próbálja újra később" 7 | "Beállítások" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-hy/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Վճարային տվյալները բեռնելու համար ապակողպեք հեռախոսը" 5 | "Ընտրացանկ" 6 | "Չհաջողվեց բեռնել քարտերը։ Նորից փորձեք։" 7 | "Կարգավորումներ" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-in/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Buka kunci ponsel untuk memuat info pembayaran Anda" 5 | "Menu" 6 | "Terjadi masalah saat mendapatkan kartu Anda, harap coba lagi nanti" 7 | "Setelan" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-is/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Opnaðu símann þinn til að hlaða greiðsluupplýsingunum" 5 | "Valmynd" 6 | "Vandamál kom upp við að sækja kortin þín. Reyndu aftur síðar" 7 | "Stillingar" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-it/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Sblocca il telefono per caricare i dati di pagamento" 5 | "Menu" 6 | "Si è verificato un problema durante il recupero delle tue carte. Riprova più tardi." 7 | "Impostazioni" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-iw/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "עליך לבטל את נעילת הטלפון כדי לטעון את פרטי התשלום" 5 | "תפריט" 6 | "הייתה בעיה בקבלת הכרטיסים שלך. כדאי לנסות שוב מאוחר יותר" 7 | "הגדרות" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-ja/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "お支払い情報を読み込むには、スマートフォンのロックを解除してください" 5 | "メニュー" 6 | "カードのアップロード中に問題が発生しました。しばらくしてからもう一度お試しください" 7 | "設定" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-ka/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "განბლოკეთ ტელეფონი გადახდის ინფორმაციის ჩასატვირთად" 5 | "მენიუ" 6 | "თქვენი ბარათების მიღებისას პრობლემა წარმოიქმნა. გთხოვთ, ხელახლა ცადოთ მოგვიანებით" 7 | "პარამეტრები" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-kk/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Телефон құлпын ашып, төлем туралы ақпаратты жүктеңіз." 5 | "Mәзір" 6 | "Картаңыз алынбады, әрекетті қайталаңыз." 7 | "Параметрлер" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-km/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "ដោះសោទូរសព្ទរបស់អ្នក ដើម្បីផ្ទុកព័ត៌មានបង់ប្រាក់" 5 | "ម៉ឺនុយ" 6 | "មានបញ្ហា​ក្នុងការទាញយក​កាត​របស់អ្នក សូម​ព្យាយាមម្ដងទៀត​នៅពេលក្រោយ" 7 | "ការកំណត់" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-kn/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "ಪಾವತಿ ಮಾಹಿತಿಯನ್ನು ಲೋಡ್ ಮಾಡಲು ನಿಮ್ಮ ಫೋನ್ ಅನ್ನು ಅನ್‌ಲಾಕ್ ಮಾಡಿ" 5 | "ಮೆನು" 6 | "ನಿಮ್ಮ ಕಾರ್ಡ್‌ಗಳನ್ನು ಪಡೆಯುವಾಗ ಸಮಸ್ಯೆ ಉಂಟಾಗಿದೆ, ನಂತರ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ" 7 | "ಸೆಟ್ಟಿಂಗ್‌ಗಳು" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-ko/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "결제 정보를 로드하려면 휴대전화 잠금을 해제하세요." 5 | "메뉴" 6 | "카드를 가져오는 중에 문제가 발생했습니다. 나중에 다시 시도해 보세요." 7 | "설정" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-ky/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Төлөм маалыматыңызды жүктөө үчүн телефонуңуздун кулпусун ачыңыз" 5 | "Меню" 6 | "Кыйытмаларды алууда ката кетти. Бир аздан кийин кайталап көрүңүз." 7 | "Жөндөөлөр" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-lo/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "ປົດລັອກໂທລະສັບຂອງທ່ານເພື່ອໂຫຼດຂໍ້ມູນການຈ່າຍເງິນຂອງທ່ານ" 5 | "ເມນູ" 6 | "ເກີດບັນຫາໃນການໂຫຼດບັດຂອງທ່ານ, ກະລຸນາລອງໃໝ່ໃນພາຍຫຼັງ" 7 | "ການຕັ້ງຄ່າ" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-lt/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Norėdami įkelti mokėjimų informaciją, atrakinkite telefoną" 5 | "Meniu" 6 | "Gaunant korteles kilo problema, bandykite dar kartą vėliau" 7 | "Nustatymai" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-lv/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Atbloķējiet tālruni, lai ielādētu maksājumu informāciju" 5 | "Izvēlne" 6 | "Ienesot jūsu kartes, radās problēma. Lūdzu, vēlāk mēģiniet vēlreiz." 7 | "Iestatījumi" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-mk/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Отклучете го телефонот за да се вчитаат вашите информации за плаќање" 5 | "Мени" 6 | "Имаше проблем при преземањето на картичките. Обидете се повторно подоцна" 7 | "Поставки" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-ml/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "നിങ്ങളുടെ പേയ്‌മെൻ്റ് വിവരങ്ങൾ ലോഡ് ചെയ്യാൻ ഫോൺ അൺലോക്ക് ചെയ്യുക" 5 | "മെനു" 6 | "നിങ്ങളുടെ കാർഡുകൾ ലഭിക്കുന്നതിൽ ഒരു പ്രശ്‌നമുണ്ടായി. പിന്നീട് വീണ്ടും ശ്രമിക്കുക" 7 | "ക്രമീകരണം" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-mn/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Төлбөрийн мэдээллээ ачаалахын тулд утасныхаа түгжээг тайлна уу" 5 | "Цэс" 6 | "Таны картыг авахад асуудал гарлаа, дараа дахин оролдоно уу" 7 | "Тохиргоо" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-mr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "तुमची पेमेंट माहिती लोड करण्यासाठी तुमचा फोन अनलॉक करा" 5 | "मेनू" 6 | "तुमची कार्डे मिळवताना समस्या आली, कृपया नंतर पुन्हा प्रयत्न करा" 7 | "सेटिंग्ज" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-ms/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Buka kunci telefon untuk memuatkan maklumat pembayaran" 5 | "Menu" 6 | "Terdapat masalah sewaktu mendapatkan kad anda. Sila cuba sebentar lagi" 7 | "Tetapan" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-my/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "သင့်ငွေပေးချေမှု အချက်အလက်များတင်ရန် ဖုန်းကို ဖွင့်ပါ" 5 | "မီနူး" 6 | "သင်၏ကတ်များ ရယူရာတွင် ပြဿနာရှိနေသည်၊ နောက်မှ ထပ်စမ်းကြည့်ပါ" 7 | "ဆက်တင်များ" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-nb/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Lås opp telefonen for å laste inn betalingsopplysninger" 5 | "Meny" 6 | "Det oppsto et problem med henting av kortene dine. Prøv igjen senere" 7 | "Innstillinger" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-ne/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "आफ्नो भुक्तानीसम्बन्धी जानकारी लोड गर्न आफ्नो फोन अनलक गर्नुहोस्" 5 | "मेनु" 6 | "तपाईंका कार्डहरू प्राप्त गर्ने क्रममा समस्या भयो, कृपया पछि फेरि प्रयास गर्नुहोस्" 7 | "सेटिङ" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-nl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Ontgrendel je telefoon om je betalingsgegevens te laden" 5 | "Menu" 6 | "Er is een probleem opgetreden bij het ophalen van je kaarten. Probeer het later opnieuw." 7 | "Instellingen" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-or/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "ଆପଣଙ୍କର ପେମେଣ୍ଟ ସୂଚନା ଲୋଡ୍ କରିବା ପାଇଁ ଆପଣଙ୍କର ଫୋନ୍ ଅନ୍‌ଲକ୍ କରନ୍ତୁ" 5 | "ମେନୁ" 6 | "ଆପଣଙ୍କ କାର୍ଡଗୁଡ଼ିକ ପାଇବାରେ କୌଣସି ସମସ୍ୟା ହୋଇଥିଲା, ଦୟାକରି ପରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ" 7 | "ସେଟିଂସ୍" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-pa/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "ਆਪਣੀ ਭੁਗਤਾਨ ਜਾਣਕਾਰੀ ਲੋਡ ਕਰਨ ਲਈ ਆਪਣਾ ਫ਼ੋਨ ਅਣਲਾਕ ਕਰੋ" 5 | "ਮੀਨੂ" 6 | "ਤੁਹਾਡੇ ਕਾਰਡ ਪ੍ਰਾਪਤ ਕਰਨ ਵਿੱਚ ਕੋਈ ਸਮੱਸਿਆ ਆਈ, ਕਿਰਪਾ ਕਰਕੇ ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ" 7 | "ਸੈਟਿੰਗਾਂ" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-pl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Odblokuj telefon, aby wczytać dane karty" 5 | "Menu" 6 | "Podczas pobierania kart wystąpił problem. Spróbuj ponownie później." 7 | "Ustawienia" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-pt-rBR/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Desbloqueie o smartphone para carregar as informações de pagamento" 5 | "Menu" 6 | "Ocorreu um problema ao carregar os cards. Tente novamente mais tarde" 7 | "Configurações" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-pt-rPT/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Desbloqueie o telemóvel para carregar as informações de pagamento." 5 | "Menu" 6 | "Ocorreu um problema ao obter os seus cartões. Tente novamente mais tarde." 7 | "Definições" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-pt/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Desbloqueie o smartphone para carregar as informações de pagamento" 5 | "Menu" 6 | "Ocorreu um problema ao carregar os cards. Tente novamente mais tarde" 7 | "Configurações" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-ro/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Deblocați telefonul și încărcați informațiile de plată" 5 | "Meniu" 6 | "A apărut o problemă la preluarea cardurilor. Încercați din nou mai târziu" 7 | "Setări" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-ru/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Чтобы загрузить платежные данные, разблокируйте экран" 5 | "Меню" 6 | "Произошла ошибка. Повторите попытку позже." 7 | "Настройки" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-si/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "ඔබේ ගෙවීම් තොරතුරු පූරණයට ඔබේ දුරකථනය අඟුලු අරින්න" 5 | "මෙනුව" 6 | "ඔබේ කාඩ්පත ලබා ගැනීමේ ගැටලුවක් විය, කරුණාකර පසුව නැවත උත්සාහ කරන්න" 7 | "සැකසීම්" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-sk/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Odomknite telefón, aby sa načítali vaše platobné údaje" 5 | "Ponuka" 6 | "Pri načítavaní kariet sa vyskytol problém. Skúste to neskôr." 7 | "Nastavenia" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-sl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Odklenite telefon, da naložite podatke za plačilo" 5 | "Meni" 6 | "Pri pridobivanju kartic je prišlo do težave. Poskusite znova pozneje." 7 | "Nastavitve" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-sq/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Shkyçe telefonin për të ngarkuar informacionet e pagesës" 5 | "Menyja" 6 | "Pati një problem me marrjen e kartave të tua, provo sërish më vonë" 7 | "Cilësimet" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-sr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Откључајте телефон да бисте учитали податке о плаћању" 5 | "Мени" 6 | "Дошло је до проблема при преузимању картица. Пробајте поново касније" 7 | "Подешавања" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-sv/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Lås upp mobilen för att läsa in dina betalningsuppgifter" 5 | "Meny" 6 | "Det gick inte att hämta dina kort. Försök igen senare." 7 | "Inställningar" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-sw/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Fungua simu yako ili upakie maelezo yako ya malipo" 5 | "Menyu" 6 | "Hitilafu imetokea wakati wa kuleta kadi zako, tafadhali jaribu tena baadaye" 7 | "Mipangilio" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-ta/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "பேமெண்ட் தகவலைக் காட்ட மொபைலை அன்லாக் செய்யவும்" 5 | "மெனு" 6 | "உங்கள் கார்டுகளைப் பெறுவதில் சிக்கல், பிறகு முயலவும்" 7 | "அமைப்புகள்" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-te/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "మీ చెల్లింపు సమాచారాన్ని లోడ్ చేయడానికి మీ ఫోన్‌ను అన్‌లాక్ చేయండి" 5 | "మెనూ" 6 | "మీ కార్డ్‌లను పొందడంలో సమస్య ఉంది, దయచేసి తర్వాత మళ్లీ ట్రై చేయండి" 7 | "సెట్టింగ్‌లు" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-th/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "ปลดล็อกโทรศัพท์เพื่อโหลดข้อมูลการชำระเงิน" 5 | "เมนู" 6 | "เกิดปัญหาในการดึงข้อมูลบัตรของคุณ โปรดลองอีกครั้งในภายหลัง" 7 | "การตั้งค่า" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-tl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "I-unlock ang iyong telepono para ma-load ang impormasyon ng pagbabayad mo" 5 | "Menu" 6 | "Nagkaproblema sa pagkuha ng iyong mga card, pakisubukan ulit sa ibang pagkakataon" 7 | "Mga Setting" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-tr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Ödeme bilgilerinin yüklenmesi için telefon kilidini açın" 5 | "Menü" 6 | "Kartlarınız alınırken bir sorun oluştu. Lütfen daha sonra tekrar deneyin" 7 | "Ayarlar" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-uk/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Щоб завантажити платіжну інформацію, розблокуйте телефон" 5 | "Меню" 6 | "Не вдалось отримати ваші картки. Повторіть спробу пізніше" 7 | "Налаштування" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-ur/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "اپنی ادائیگی کی معلومات لوڈ کرنے کے لیے اپنا فون غیر مقفل کریں" 5 | "مینو" 6 | "آپ کے کارڈز حاصل کرنے میں ایک مسئلہ درپیش تھا، براہ کرم بعد میں دوبارہ کوشش کریں" 7 | "ترتیبات" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-uz/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Toʻlov axborotini yuklash uchun telefonni qulfdan chiqaring" 5 | "Menyu" 6 | "Bildirgilarni yuklashda xatolik yuz berdi, keyinroq qaytadan urining" 7 | "Sozlamalar" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-vi/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Mở khóa điện thoại để tải thông tin thanh toán" 5 | "Trình đơn" 6 | "Đã xảy ra sự cố khi tải thẻ của bạn. Vui lòng thử lại sau" 7 | "Cài đặt" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-zh-rCN/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "解锁手机以加载您的付款信息" 5 | "菜单" 6 | "获取您的卡片时出现问题,请稍后重试" 7 | "设置" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-zh-rHK/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "解鎖手機以載入付款資料" 5 | "選單" 6 | "擷取資訊卡時發生問題,請稍後再試。" 7 | "設定" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-zh-rTW/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "如要載入付款資訊,請解鎖手機" 5 | "選單" 6 | "取得卡片時發生問題,請稍後再試" 7 | "設定" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values-zu/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | "Vula ifoni yakho ukuze ulayishe ulwazi lwakho lokukhokha" 5 | "Imenyu" 6 | "Kube khona inkinga yokuthola amakhadi akho, sicela uzame futhi ngemuva kwesikhathi" 7 | "Izilungiselelo" 8 | 9 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 18sp 4 | 16dp 5 | 208dp 6 | 12dp 7 | 16sp 8 | 32dp 9 | 48dp 10 | -36dp 11 | 12dp 12 | 48dp 13 | 1dp 14 | 15 | -------------------------------------------------------------------------------- /QuickAccessWallet/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Unlock your phone to load your payment info 5 | 6 | Menu 7 | 8 | There was a problem getting your cards, please try again later 9 | 10 | Settings 11 | 12 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /app/release/baselineProfiles/0/app-release.dm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KieronQuinn/ClassicPowerMenu/e17f14a85f85d4eefabaf847abfadd1af32291c1/app/release/baselineProfiles/0/app-release.dm -------------------------------------------------------------------------------- /app/release/baselineProfiles/1/app-release.dm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KieronQuinn/ClassicPowerMenu/e17f14a85f85d4eefabaf847abfadd1af32291c1/app/release/baselineProfiles/1/app-release.dm -------------------------------------------------------------------------------- /app/release/output-metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "artifactType": { 4 | "type": "APK", 5 | "kind": "Directory" 6 | }, 7 | "applicationId": "com.kieronquinn.app.classicpowermenu", 8 | "variantName": "release", 9 | "elements": [ 10 | { 11 | "type": "SINGLE", 12 | "filters": [], 13 | "attributes": [], 14 | "versionCode": 192, 15 | "versionName": "1.9.2", 16 | "outputFile": "app-release.apk" 17 | } 18 | ], 19 | "elementType": "File", 20 | "baselineProfiles": [ 21 | { 22 | "minApi": 28, 23 | "maxApi": 30, 24 | "baselineProfiles": [ 25 | "baselineProfiles/1/app-release.dm" 26 | ] 27 | }, 28 | { 29 | "minApi": 31, 30 | "maxApi": 2147483647, 31 | "baselineProfiles": [ 32 | "baselineProfiles/0/app-release.dm" 33 | ] 34 | } 35 | ], 36 | "minSdkVersionForDexing": 30 37 | } -------------------------------------------------------------------------------- /app/src/main/aidl/com/kieronquinn/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KieronQuinn/ClassicPowerMenu/e17f14a85f85d4eefabaf847abfadd1af32291c1/app/src/main/aidl/com/kieronquinn/.DS_Store -------------------------------------------------------------------------------- /app/src/main/aidl/com/kieronquinn/app/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KieronQuinn/ClassicPowerMenu/e17f14a85f85d4eefabaf847abfadd1af32291c1/app/src/main/aidl/com/kieronquinn/app/.DS_Store -------------------------------------------------------------------------------- /app/src/main/aidl/com/kieronquinn/app/classicpowermenu/IGlobalActions.aidl: -------------------------------------------------------------------------------- 1 | // IGlobalActions.aidl 2 | package com.kieronquinn.app.classicpowermenu; 3 | 4 | interface IGlobalActions { 5 | 6 | boolean showGlobalActions(); 7 | void hideGlobalActions(); 8 | 9 | } -------------------------------------------------------------------------------- /app/src/main/aidl/com/kieronquinn/app/classicpowermenu/model/service/ActivityContainer.aidl: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.model.service; 2 | 3 | parcelable ActivityContainer; -------------------------------------------------------------------------------- /app/src/main/aidl/com/kieronquinn/app/classicpowermenu/model/service/BroadcastContainer.aidl: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.model.service; 2 | 3 | parcelable BroadcastContainer; -------------------------------------------------------------------------------- /app/src/main/aidl/com/kieronquinn/app/classicpowermenu/model/service/ServiceBindContainer.aidl: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.model.service; 2 | 3 | parcelable ServiceBindContainer; -------------------------------------------------------------------------------- /app/src/main/aidl/com/kieronquinn/app/classicpowermenu/model/service/ServiceUnbindContainer.aidl: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.model.service; 2 | 3 | parcelable ServiceUnbindContainer; -------------------------------------------------------------------------------- /app/src/main/assets/xposed_init: -------------------------------------------------------------------------------- 1 | com.kieronquinn.app.classicpowermenu.components.xposed.Xposed -------------------------------------------------------------------------------- /app/src/main/java/com/kieronquinn/app/classicpowermenu/components/quickaccesswallet/WalletActivityStarterImpl.kt: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.components.quickaccesswallet 2 | 3 | import com.android.systemui.plugins.ActivityStarter 4 | import com.android.systemui.plugins.activitystarter.WalletActivityStarter 5 | import com.kieronquinn.app.classicpowermenu.components.navigation.PowerMenuNavigation 6 | import kotlinx.coroutines.GlobalScope 7 | import kotlinx.coroutines.launch 8 | 9 | class WalletActivityStarterImpl(private val activityStarter: ActivityStarter, private val navigation: PowerMenuNavigation): WalletActivityStarter { 10 | 11 | override fun runAfterKeyguardDismissed(runnable: Runnable) { 12 | activityStarter.dismissKeyguardThenExecute({ 13 | GlobalScope.launch { 14 | navigation.closePowerMenu() 15 | } 16 | runnable.run() 17 | true 18 | }, null, false) 19 | } 20 | 21 | } -------------------------------------------------------------------------------- /app/src/main/java/com/kieronquinn/app/classicpowermenu/components/quickaccesswallet/utils/CPMContentResolver.kt: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.components.quickaccesswallet.utils 2 | 3 | import android.content.ContentResolver 4 | import android.content.Context 5 | 6 | class CPMContentResolver(context: Context): ContentResolver(context) { 7 | 8 | 9 | 10 | } -------------------------------------------------------------------------------- /app/src/main/java/com/kieronquinn/app/classicpowermenu/components/xposed/XposedSelfHook.kt: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.components.xposed 2 | 3 | class XposedSelfHook { 4 | 5 | fun isXposedHooked(): Boolean { 6 | return false 7 | } 8 | 9 | } -------------------------------------------------------------------------------- /app/src/main/java/com/kieronquinn/app/classicpowermenu/model/power/PowerMenuContentItem.kt: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.model.power 2 | 3 | sealed class PowerMenuContentItem(val itemType: PowerMenuContentItemType) { 4 | object Cards : PowerMenuContentItem(PowerMenuContentItemType.CARDS) 5 | object Controls : PowerMenuContentItem(PowerMenuContentItemType.CONTROLS) 6 | } 7 | 8 | enum class PowerMenuContentItemType { 9 | CARDS, CONTROLS 10 | } -------------------------------------------------------------------------------- /app/src/main/java/com/kieronquinn/app/classicpowermenu/model/quickaccesswallet/database/WalletValuable.kt: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.model.quickaccesswallet.database 2 | 3 | import androidx.room.ColumnInfo 4 | import androidx.room.Entity 5 | import androidx.room.PrimaryKey 6 | import com.kieronquinn.app.classicpowermenu.utils.room.EncryptedValue 7 | 8 | @Entity 9 | data class WalletValuable( 10 | @PrimaryKey 11 | @ColumnInfo(name = "id") 12 | val id: String, 13 | @ColumnInfo("hash") 14 | val hash: Long, 15 | @ColumnInfo("proto") 16 | val valuable: EncryptedValue, 17 | @ColumnInfo("image") 18 | val image: EncryptedValue? 19 | ) -------------------------------------------------------------------------------- /app/src/main/java/com/kieronquinn/app/classicpowermenu/model/quickaccesswallet/database/WalletValuableDao.kt: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.model.quickaccesswallet.database 2 | 3 | import androidx.room.Dao 4 | import androidx.room.Insert 5 | import androidx.room.OnConflictStrategy 6 | import androidx.room.Query 7 | import kotlinx.coroutines.flow.Flow 8 | 9 | @Dao 10 | interface WalletValuableDao { 11 | 12 | @Query("select * from `WalletValuable`") 13 | fun getAll(): Flow> 14 | 15 | @Query("select * from `WalletValuable` where id=:id") 16 | fun getValuableById(id: String): Flow 17 | 18 | @Insert(onConflict = OnConflictStrategy.REPLACE) 19 | fun insert(valuable: WalletValuable) 20 | 21 | @Query("delete from `WalletValuable` where id=:id") 22 | fun delete(id: String) 23 | 24 | @Query("delete from `WalletValuable`") 25 | fun clear() 26 | 27 | } -------------------------------------------------------------------------------- /app/src/main/java/com/kieronquinn/app/classicpowermenu/service/root/CPMRootService.kt: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.service.root 2 | 3 | import android.content.Intent 4 | import android.os.IBinder 5 | import com.kieronquinn.app.classicpowermenu.service.root.impl.CPMRootServiceImpl 6 | import com.topjohnwu.superuser.ipc.RootService 7 | 8 | class CPMRootService: RootService() { 9 | 10 | override fun onBind(intent: Intent): IBinder { 11 | return CPMRootServiceImpl() 12 | } 13 | 14 | override fun onUnbind(intent: Intent): Boolean { 15 | return false 16 | } 17 | 18 | } -------------------------------------------------------------------------------- /app/src/main/java/com/kieronquinn/app/classicpowermenu/ui/base/FragmentOptions.kt: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.ui.base 2 | 3 | import android.view.Menu 4 | import android.view.MenuInflater 5 | import android.view.MenuItem 6 | 7 | interface BackAvailable 8 | interface Root 9 | interface AutoExpandOnRotate 10 | 11 | interface StandaloneFragment { 12 | val onBackPressed: () -> Unit 13 | } 14 | 15 | interface ProvidesOverflow { 16 | fun inflateMenu(menuInflater: MenuInflater, menu: Menu) 17 | fun onMenuItemSelected(menuItem: MenuItem): Boolean 18 | } -------------------------------------------------------------------------------- /app/src/main/java/com/kieronquinn/app/classicpowermenu/ui/navigation/CPMNavHostFragment.kt: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.ui.navigation 2 | 3 | import androidx.navigation.NavController 4 | import androidx.navigation.fragment.NavHostFragment 5 | import com.kieronquinn.app.classicpowermenu.components.navigation.TransitionedActivityNavigator 6 | 7 | class CPMNavHostFragment: NavHostFragment() { 8 | 9 | override fun onCreateNavController(navController: NavController) { 10 | super.onCreateNavController(navController) 11 | navController.navigatorProvider.addNavigator(TransitionedActivityNavigator(requireActivity())) 12 | } 13 | 14 | } -------------------------------------------------------------------------------- /app/src/main/java/com/kieronquinn/app/classicpowermenu/ui/screens/settings/developeroptions/SettingsDeveloperOptionsViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.ui.screens.settings.developeroptions 2 | 3 | import androidx.lifecycle.ViewModel 4 | import com.kieronquinn.app.classicpowermenu.components.settings.Settings 5 | 6 | abstract class SettingsDeveloperOptionsViewModel: ViewModel() { 7 | 8 | abstract var contentCreatorMode: Boolean 9 | 10 | } 11 | 12 | class SettingsDeveloperOptionsViewModelImpl(settings: Settings): SettingsDeveloperOptionsViewModel() { 13 | 14 | override var contentCreatorMode by settings::developerContentCreatorMode 15 | 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/kieronquinn/app/classicpowermenu/ui/screens/setup/landing/SetupLandingViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.ui.screens.setup.landing 2 | 3 | import androidx.lifecycle.ViewModel 4 | import androidx.lifecycle.viewModelScope 5 | import com.kieronquinn.app.classicpowermenu.components.navigation.ContainerNavigation 6 | import kotlinx.coroutines.launch 7 | 8 | abstract class SetupLandingViewModel: ViewModel() { 9 | 10 | abstract fun onGetStartedClicked() 11 | 12 | } 13 | 14 | class SetupLandingViewModelImpl(private val containerNavigation: ContainerNavigation): SetupLandingViewModel() { 15 | 16 | override fun onGetStartedClicked() { 17 | viewModelScope.launch { 18 | containerNavigation.navigate(SetupLandingFragmentDirections.actionSetupLandingFragmentToSetupRootCheckFragment()) 19 | } 20 | } 21 | 22 | } -------------------------------------------------------------------------------- /app/src/main/java/com/kieronquinn/app/classicpowermenu/ui/utils/DragDisabledAppBarLayoutBehaviour.kt: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.ui.utils 2 | 3 | import android.content.Context 4 | import android.util.AttributeSet 5 | import com.google.android.material.appbar.AppBarLayout 6 | 7 | class DragDisabledAppBarLayoutBehaviour: AppBarLayout.Behavior { 8 | 9 | constructor(): super() 10 | constructor(context: Context?, attrs: AttributeSet?): super(context, attrs) 11 | 12 | init { 13 | setDragCallback(object: DragCallback() { 14 | override fun canDrag(appBarLayout: AppBarLayout): Boolean { 15 | return false 16 | } 17 | }) 18 | } 19 | 20 | } -------------------------------------------------------------------------------- /app/src/main/java/com/kieronquinn/app/classicpowermenu/utils/Links.kt: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.utils 2 | 3 | import android.content.ActivityNotFoundException 4 | import android.content.Context 5 | import android.content.Intent 6 | import android.net.Uri 7 | 8 | fun Context.openLink(url: String){ 9 | try { 10 | startActivity(Intent(Intent.ACTION_VIEW).apply { 11 | data = Uri.parse(url) 12 | }) 13 | }catch (e: ActivityNotFoundException){ 14 | //No browser 15 | } 16 | } 17 | 18 | object Links { 19 | const val LINK_XDA = "https://kieronquinn.co.uk/redirect/ClassicPowerMenu/xda" 20 | const val LINK_TWITTER = "https://kieronquinn.co.uk/redirect/ClassicPowerMenu/twitter" 21 | const val LINK_DONATE = "https://kieronquinn.co.uk/redirect/ClassicPowerMenu/donate" 22 | const val LINK_GITHUB = "https://kieronquinn.co.uk/redirect/ClassicPowerMenu/github" 23 | } -------------------------------------------------------------------------------- /app/src/main/java/com/kieronquinn/app/classicpowermenu/utils/extensions/Extensions+AppBarLayout.kt: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.utils.extensions 2 | 3 | import com.google.android.material.appbar.AppBarLayout 4 | import kotlinx.coroutines.channels.awaitClose 5 | import kotlinx.coroutines.flow.callbackFlow 6 | import kotlin.math.abs 7 | 8 | val AppBarLayout.scrollPercentage 9 | get() = callbackFlow { 10 | val changeListener = AppBarLayout.OnOffsetChangedListener { appBarLayout, verticalOffset -> 11 | trySend(abs(verticalOffset).toFloat() / appBarLayout.totalScrollRange) 12 | } 13 | addOnOffsetChangedListener(changeListener) 14 | awaitClose { 15 | removeOnOffsetChangedListener(changeListener) 16 | } 17 | } -------------------------------------------------------------------------------- /app/src/main/java/com/kieronquinn/app/classicpowermenu/utils/extensions/Extensions+Build.kt: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.utils.extensions 2 | 3 | import android.os.Build 4 | 5 | fun isAtLeastU(): Boolean { 6 | return Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE 7 | } 8 | 9 | fun isAtLeastT(): Boolean { 10 | return Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU 11 | } -------------------------------------------------------------------------------- /app/src/main/java/com/kieronquinn/app/classicpowermenu/utils/extensions/Extensions+Canvas.kt: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.utils.extensions 2 | 3 | import android.graphics.Canvas 4 | import android.graphics.Paint 5 | import android.graphics.Rect 6 | 7 | fun Canvas.drawCenteredText(rect: Rect, paint: Paint, text: String) { 8 | getClipBounds(rect) 9 | val cHeight: Int = rect.height() 10 | val cWidth: Int = rect.width() 11 | paint.textAlign = Paint.Align.LEFT 12 | paint.getTextBounds(text, 0, text.length, rect) 13 | val x: Float = cWidth / 2f - rect.width() / 2f - rect.left 14 | val y: Float = cHeight / 2f + rect.height() / 2f - rect.bottom 15 | drawText(text, x, y, paint) 16 | } -------------------------------------------------------------------------------- /app/src/main/java/com/kieronquinn/app/classicpowermenu/utils/extensions/Extensions+Color.kt: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.utils.extensions 2 | 3 | import android.graphics.Color 4 | 5 | fun Int.toHexString(): String { 6 | return "#" + Integer.toHexString(this) 7 | } 8 | 9 | 10 | fun com.google.type.Color.toColor(): Int { 11 | return if(hasAlpha()){ 12 | Color.valueOf(red, green, blue, alpha.value) 13 | }else{ 14 | Color.valueOf(red, green, blue) 15 | }.toArgb() 16 | } -------------------------------------------------------------------------------- /app/src/main/java/com/kieronquinn/app/classicpowermenu/utils/extensions/Extensions+Drawable.kt: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.utils.extensions 2 | 3 | import android.animation.ValueAnimator 4 | import android.graphics.drawable.Drawable 5 | 6 | fun Drawable.animateToVisible(duration: Long = 250L): ValueAnimator { 7 | return ValueAnimator.ofInt(alpha, 255).apply { 8 | this.duration = duration 9 | addUpdateListener { 10 | alpha = it.animatedValue as Int 11 | } 12 | start() 13 | } 14 | } 15 | 16 | fun Drawable.animateToInvisible(duration: Long = 250L): ValueAnimator { 17 | return ValueAnimator.ofInt(alpha, 0).apply { 18 | this.duration = duration 19 | addUpdateListener { 20 | alpha = it.animatedValue as Int 21 | } 22 | start() 23 | } 24 | } -------------------------------------------------------------------------------- /app/src/main/java/com/kieronquinn/app/classicpowermenu/utils/extensions/Extensions+FlexboxLayoutManager.kt: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.utils.extensions 2 | 3 | import com.google.android.flexbox.FlexboxLayoutManager 4 | 5 | /** 6 | * Sets the alpha of all visible items that are not on the first row 7 | */ 8 | fun FlexboxLayoutManager.setSecondaryAlpha(alpha: Float){ 9 | with(flexLines){ 10 | if(isEmpty()) return 11 | val firstLineLength = get(0).itemCount 12 | //Check if we've only got one row 13 | if(itemCount == firstLineLength) return 14 | //Set the alpha of all items that are not on the first row 15 | for(i in firstLineLength until itemCount){ 16 | getChildAt(i)?.alpha = alpha 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /app/src/main/java/com/kieronquinn/app/classicpowermenu/utils/extensions/Extensions+Fragment.kt: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.utils.extensions 2 | 3 | import androidx.fragment.app.Fragment 4 | import androidx.lifecycle.LifecycleOwner 5 | import kotlinx.coroutines.CoroutineScope 6 | 7 | /** 8 | * Helper for [LifecycleOwner].[whenResumed] 9 | */ 10 | fun Fragment.whenResumed(block: suspend CoroutineScope.() -> Unit) { 11 | viewLifecycleOwner.whenResumed(block) 12 | } 13 | 14 | /** 15 | * Helper for [LifecycleOwner].[whenCreated] 16 | */ 17 | fun Fragment.whenCreated(block: suspend CoroutineScope.() -> Unit) { 18 | viewLifecycleOwner.whenCreated(block) 19 | } -------------------------------------------------------------------------------- /app/src/main/java/com/kieronquinn/app/classicpowermenu/utils/extensions/Extensions+Insets.kt: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.utils.extensions 2 | 3 | import android.view.View 4 | import androidx.core.view.ViewCompat 5 | import androidx.core.view.WindowInsetsCompat 6 | 7 | fun View.onApplyInsets(block: (view: View, insets: WindowInsetsCompat) -> Unit) { 8 | ViewCompat.setOnApplyWindowInsetsListener(this) { view, insets -> 9 | block(view, insets) 10 | insets 11 | } 12 | } -------------------------------------------------------------------------------- /app/src/main/java/com/kieronquinn/app/classicpowermenu/utils/extensions/Extensions+Intent.kt: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.utils.extensions 2 | 3 | import android.content.Intent 4 | 5 | private const val KEY_FROM_SELF = "from_self" 6 | 7 | const val EXTRA_FRAGMENT_ARG_KEY = ":settings:fragment_args_key"; 8 | const val EXTRA_SHOW_FRAGMENT_ARGUMENTS = ":settings:show_fragment_args"; 9 | 10 | fun Intent.isFromSelf(): Boolean { 11 | return getBooleanExtra(KEY_FROM_SELF, false) 12 | } 13 | 14 | fun Intent.addFromSelf() = apply { 15 | return putExtra(KEY_FROM_SELF, false) 16 | } -------------------------------------------------------------------------------- /app/src/main/java/com/kieronquinn/app/classicpowermenu/utils/extensions/Extensions+LockPatternUtils.kt: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.utils.extensions 2 | 3 | /** 4 | * Strong authentication is not required. 5 | */ 6 | const val LockPatternUtils_STRONG_AUTH_NOT_REQUIRED = 0x0 7 | 8 | /** 9 | * Some authentication is required because the user has temporarily disabled trust. 10 | */ 11 | const val LockPatternUtils_SOME_AUTH_REQUIRED_AFTER_USER_REQUEST = 0x4 -------------------------------------------------------------------------------- /app/src/main/java/com/kieronquinn/app/classicpowermenu/utils/extensions/Extensions+PackageManager.kt: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.utils.extensions 2 | 3 | import android.content.pm.PackageInfo 4 | import android.content.pm.PackageManager 5 | import android.os.Build 6 | 7 | fun PackageManager.isAppInstalled(packageName: String): Boolean { 8 | return try { 9 | getPackageInfo(packageName, 0) 10 | true 11 | }catch (e: PackageManager.NameNotFoundException){ 12 | false 13 | } 14 | } 15 | 16 | @Suppress("DEPRECATION") 17 | fun PackageManager.getPackageInfoCompat(packageName: String, flags: Int = 0): PackageInfo { 18 | return if (Build.VERSION.SDK_INT >= 33) { 19 | getPackageInfo(packageName, PackageManager.PackageInfoFlags.of(flags.toLong())) 20 | } else { 21 | getPackageInfo(packageName, flags) 22 | } 23 | } -------------------------------------------------------------------------------- /app/src/main/java/com/kieronquinn/app/classicpowermenu/utils/extensions/Extensions+Parcel.kt: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.utils.extensions 2 | 3 | import android.os.IBinder 4 | import android.os.Parcel 5 | 6 | fun Parcel.writeNullableString(value: String?){ 7 | if(value != null){ 8 | writeBoolean(false) 9 | writeString(value) 10 | }else{ 11 | writeBoolean(true) 12 | } 13 | } 14 | 15 | fun Parcel.readNullableString(): String? { 16 | val isNull = readBoolean() 17 | return if(!isNull){ 18 | readString() 19 | }else null 20 | } 21 | 22 | fun Parcel.readStrongBinderOptional(): IBinder? { 23 | val isNull = readBoolean() 24 | return if(isNull) null 25 | else readStrongBinder() 26 | } 27 | 28 | fun Parcel.writeStrongBinderOptional(binder: IBinder?){ 29 | writeBoolean(binder == null) 30 | if(binder != null){ 31 | writeStrongBinder(binder) 32 | } 33 | } -------------------------------------------------------------------------------- /app/src/main/java/com/kieronquinn/app/classicpowermenu/utils/extensions/Extensions+SharedPreferences.kt: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.utils.extensions 2 | 3 | import android.content.SharedPreferences 4 | import kotlinx.coroutines.channels.awaitClose 5 | import kotlinx.coroutines.flow.callbackFlow 6 | 7 | fun SharedPreferences.getPreferenceAsFlow(key: String, setting: () -> T) = callbackFlow { 8 | val listener = SharedPreferences.OnSharedPreferenceChangeListener { _, changedKey -> 9 | if(key == changedKey){ 10 | trySend(setting()) 11 | } 12 | } 13 | trySend(setting()) 14 | registerOnSharedPreferenceChangeListener(listener) 15 | awaitClose { 16 | unregisterOnSharedPreferenceChangeListener(listener) 17 | } 18 | } -------------------------------------------------------------------------------- /app/src/main/java/com/kieronquinn/app/classicpowermenu/utils/extensions/Extensions+WalletCardViewInfo.kt: -------------------------------------------------------------------------------- 1 | package com.kieronquinn.app.classicpowermenu.utils.extensions 2 | 3 | import com.android.systemui.plugin.globalactions.wallet.WalletCardViewInfo 4 | import com.kieronquinn.app.classicpowermenu.model.quickaccesswallet.WalletLoyaltyCardViewInfo 5 | 6 | fun WalletCardViewInfo.getLoyaltyIdOrNull(): String? { 7 | return if(this is WalletLoyaltyCardViewInfo) this.id 8 | else null 9 | } -------------------------------------------------------------------------------- /app/src/main/proto/com/google/android/libraries/commerce/hce/ndef/Format.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package com.google.android.libraries.commerce.hce.ndef; 4 | 5 | option java_package = "com.google.android.libraries.commerce.hce.ndef"; 6 | option java_outer_classname = "FormatProto"; 7 | 8 | enum Format { 9 | FORMAT_UNSPECIFIED = 0; 10 | FORMAT_ASCII = 1; 11 | FORMAT_UTF_8 = 2; 12 | FORMAT_UTF_16 = 3; 13 | FORMAT_BINARY = 4; 14 | FORMAT_BCD = 5; 15 | } -------------------------------------------------------------------------------- /app/src/main/proto/com/google/internal/tapandpay/v1/Common.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package com.google.internal.tapandpay.v1; 4 | 5 | import "google/protobuf/duration.proto"; 6 | import "google/type/date.proto"; 7 | import "google/type/timeofday.proto"; 8 | 9 | option java_package = "com.google.internal.tapandpay.v1"; 10 | option java_outer_classname = "CommonProto"; 11 | 12 | message Money { 13 | int64 micros = 1; 14 | string currency_code = 2; 15 | } 16 | 17 | message DateTime { 18 | .google.type.Date local_date = 1; 19 | .google.type.TimeOfDay local_time = 2; 20 | .google.protobuf.Duration offset_from_utc = 3; 21 | } -------------------------------------------------------------------------------- /app/src/main/proto/com/google/internal/tapandpay/v1/ListTokenizedCardsRequest.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package com.google.internal.tapandpay.v1; 4 | 5 | option java_package = "com.google.internal.tapandpay.v1"; 6 | option java_outer_classname = "ListTokenizedCardsRequestProto"; 7 | 8 | message ListTokenizedCardsRequest { 9 | Inner inner = 1; 10 | 11 | message Inner { 12 | int64 header = 1; 13 | PackageVersion wallet_version = 2; 14 | PackageVersion gms_version = 3; 15 | bytes data = 7; 16 | repeated Token tokens = 9; 17 | 18 | message PackageVersion { 19 | string package_name = 1; 20 | string version_code = 2; 21 | string version = 3; 22 | bool caller = 4; 23 | } 24 | 25 | message Token { 26 | string package_name = 1; 27 | string token = 2; 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /app/src/main/proto/com/google/internal/tapandpay/v1/notifications/ScheduledNotificationProto.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package com.google.internal.tapandpay.v1.notifications; 4 | 5 | import "com/google/internal/tapandpay/v1/Common.proto"; 6 | import "google/protobuf/duration.proto"; 7 | 8 | option java_package = "com.google.internal.tapandpay.v1.notifications"; 9 | option java_outer_classname = "ScheduledNotificationProto"; 10 | 11 | message ScheduledNotification { 12 | string title = 2; 13 | string message = 3; 14 | string opt_out_label = 4; 15 | string issuer_logo_url = 5; 16 | DateTime date_time_to_show = 7; 17 | .google.protobuf.Duration timeout_after = 11; 18 | string id = 12; 19 | bool display_after_time_to_show = 13; 20 | int32 priority = 14; 21 | } -------------------------------------------------------------------------------- /app/src/main/proto/com/google/internal/tapandpay/v1/passes/templates/ColorProfile.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package com.google.internal.tapandpay.v1.passes.templates; 4 | 5 | import "google/type/color.proto"; 6 | 7 | option java_package = "com.google.internal.tapandpay.v1.passes.templates"; 8 | option java_outer_classname = "ColorProfileProto"; 9 | 10 | message PassColorProfile { 11 | .google.type.Color backdrop_color = 1; 12 | .google.type.Color card_color = 2; 13 | .google.type.Color card_icon_color = 3; 14 | .google.type.Color card_label_text_color = 4; 15 | .google.type.Color card_content_text_color = 5; 16 | .google.type.Color card_divider_color = 6; 17 | .google.type.Color list_icon_color = 7; 18 | .google.type.Color list_label_text_color = 8; 19 | .google.type.Color list_content_text_color = 9; 20 | .google.type.Color action_primary_color = 11; 21 | } -------------------------------------------------------------------------------- /app/src/main/proto/com/google/internal/tapandpay/v1/passes/templates/Detail.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package com.google.internal.tapandpay.v1.passes.templates; 4 | 5 | import "com/google/internal/tapandpay/v1/Common.proto"; 6 | import "com/google/internal/tapandpay/v1/passes/templates/Card.proto"; 7 | import "com/google/internal/tapandpay/v1/passes/templates/ColorProfile.proto"; 8 | import "com/google/internal/tapandpay/v1/valuables/Common.proto"; 9 | 10 | option java_package = "com.google.internal.tapandpay.v1.passes.templates"; 11 | option java_outer_classname = "DetailProto"; 12 | 13 | message PassDetailCardTemplateInfo { 14 | PassCardHeaderTemplateInfo card_header_info = 1; 15 | repeated PassCardRowTemplateInfo card_row_info = 2; 16 | } -------------------------------------------------------------------------------- /app/src/main/proto/com/google/internal/tapandpay/v1/passes/templates/Logo.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package com.google.internal.tapandpay.v1.passes.templates; 4 | 5 | option java_package = "com.google.internal.tapandpay.v1.passes.templates"; 6 | option java_outer_classname = "LogoProto"; 7 | 8 | message PassLogo { 9 | string url = 1; 10 | string fallback_display_letter = 2; 11 | string image_content_description = 3; 12 | } -------------------------------------------------------------------------------- /app/src/main/proto/com/google/internal/tapandpay/v1/passes/templates/Pass.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package com.google.internal.tapandpay.v1.passes.templates; 4 | 5 | import "com/google/internal/tapandpay/v1/Common.proto"; 6 | import "com/google/internal/tapandpay/v1/passes/templates/ColorProfile.proto"; 7 | import "com/google/internal/tapandpay/v1/passes/templates/Detail.proto"; 8 | import "com/google/internal/tapandpay/v1/valuables/Common.proto"; 9 | 10 | option java_package = "com.google.internal.tapandpay.v1.passes.templates"; 11 | option java_outer_classname = "PassProto"; 12 | 13 | message PassTemplateInfo { 14 | PassColorProfile color_profile = 1; 15 | PassDetailCardTemplateInfo details_card_info = 2; 16 | PassColorProfile dark_color_profile = 4; 17 | } -------------------------------------------------------------------------------- /app/src/main/proto/com/google/internal/tapandpay/v1/passes/templates/Reference.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package com.google.internal.tapandpay.v1.passes.templates; 4 | 5 | import "com/google/internal/tapandpay/v1/Common.proto"; 6 | import "com/google/internal/tapandpay/v1/passes/templates/ColorProfile.proto"; 7 | import "com/google/internal/tapandpay/v1/passes/templates/Logo.proto"; 8 | import "com/google/internal/tapandpay/v1/valuables/Common.proto"; 9 | 10 | option java_package = "com.google.internal.tapandpay.v1.passes.templates"; 11 | option java_outer_classname = "ReferenceProto"; 12 | 13 | message ReferenceValue { 14 | oneof Value { 15 | string html = 1; 16 | string dynamic_formatted_string = 2; 17 | string safe_html = 3; 18 | } 19 | string raw_value = 6; 20 | } -------------------------------------------------------------------------------- /app/src/main/proto/com/google/internal/tapandpay/v1/passes/templates/TransitMode.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package com.google.internal.tapandpay.v1.passes.templates; 4 | 5 | option java_package = "com.google.internal.tapandpay.v1.passes.templates"; 6 | option java_outer_classname = "TransitModeProto"; 7 | 8 | message TransitModeInfo { 9 | TransitMode transit_mode = 1; 10 | string image_content_description = 2; 11 | 12 | enum TransitMode { 13 | UNDEFINED = 0; 14 | BOAT = 1; 15 | BUS = 2; 16 | CAR = 3; 17 | FLIGHT = 4; 18 | SUBWAY = 5; 19 | TAXI = 6; 20 | TRAIN = 7; 21 | TRAM = 8; 22 | FLIGHT_LAND = 9; 23 | FLIGHT_TAKEOFF = 10; 24 | WALK = 11; 25 | TRANSFER = 12; 26 | FORWARD = 13; 27 | BACK = 14; 28 | SWAP = 15; 29 | } 30 | } -------------------------------------------------------------------------------- /app/src/main/proto/com/google/internal/tapandpay/v1/valuables/GenericCard.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package com.google.internal.tapandpay.v1.valuables; 4 | 5 | import "com/google/internal/tapandpay/v1/passes/templates/Pass.proto"; 6 | import "com/google/internal/tapandpay/v1/valuables/Common.proto"; 7 | 8 | option java_package = "com.google.internal.tapandpay.v1.valuables"; 9 | option java_outer_classname = "GenericCardProto"; 10 | 11 | message GenericCard { 12 | string id = 1; 13 | Metadata metadata = 2; 14 | IssuerInfo issuer_info = 3; 15 | RedemptionInfo redemption_info = 4; 16 | GroupingInfo grouping_info = 5; 17 | passes.templates.PassTemplateInfo template_info = 6; 18 | } -------------------------------------------------------------------------------- /app/src/main/proto/com/google/internal/tapandpay/v1/valuables/HealthCard.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package com.google.internal.tapandpay.v1.valuables; 4 | 5 | import "com/google/internal/tapandpay/v1/passes/templates/Pass.proto"; 6 | 7 | option java_package = "com.google.internal.tapandpay.v1.valuables"; 8 | option java_outer_classname = "HealthCardProto"; 9 | 10 | message HealthCard { 11 | //Not currently supported - no examples, no class on API - what is this valuable type? 12 | } -------------------------------------------------------------------------------- /app/src/main/proto/com/google/internal/tapandpay/v1/valuables/SyncValuablesRequest.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package com.google.internal.tapandpay.v1.valuables; 4 | 5 | import "com/google/internal/tapandpay/v1/valuables/ValuableWrapper.proto"; 6 | 7 | option java_package = "com.google.internal.tapandpay.v1.valuables"; 8 | option java_outer_classname = "SyncValuablesRequestProto"; 9 | 10 | message SyncValuablesRequest { 11 | 12 | SyncValuablesRequestInner request = 2; 13 | 14 | message SyncValuablesRequestInner { 15 | 16 | Request request = 2; 17 | 18 | message Request { 19 | bytes header = 1; 20 | string timezone = 2; 21 | repeated CachedValuable cached_valuable = 3; 22 | 23 | message CachedValuable { 24 | string id = 1; 25 | int64 hash = 2; 26 | } 27 | } 28 | 29 | } 30 | } -------------------------------------------------------------------------------- /app/src/main/proto/com/google/internal/tapandpay/v1/valuables/SyncValuablesResponse.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package com.google.internal.tapandpay.v1.valuables; 4 | 5 | import "com/google/internal/tapandpay/v1/valuables/ValuableWrapper.proto"; 6 | 7 | option java_package = "com.google.internal.tapandpay.v1.valuables"; 8 | option java_outer_classname = "SyncValuablesResponseProto"; 9 | 10 | message SyncValuablesResponse { 11 | Inner inner = 2; 12 | 13 | message Inner { 14 | Valuables valuables = 2; 15 | 16 | message Valuables { 17 | repeated Valuable valuable = 1; 18 | 19 | message Valuable { 20 | string id = 2; 21 | int64 hash = 3; 22 | ValuableWrapper valuable = 4; 23 | } 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /app/src/main/res/anim/fast_out_extra_slow_in.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_back_to_top.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_out_from_top.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/anim/top_sheet_slide_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | 10 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/background_logo.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/background_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/background_power_menu_button.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/background_setting_warning.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bottom_sheet_rounded_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bottom_sheet_rounded_bg_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bottom_sheet_rounded_bg_light.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/clip_wallet_rearrange_card.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/dialog_rounded_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/foreground_setting_warning.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/foreground_wallet_code_logo_outline.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_about.xml: -------------------------------------------------------------------------------- 1 | 6 | 11 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_back.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_card_type_barcode.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_check.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_close.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_drag_handle.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_google_wallet.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_lockdown.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_open_in_pay.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_power_off.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_power_options_hide_when_locked.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_power_options_open_collapsed.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_quick_access_wallet_no_cards.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_quick_access_wallet_rearrange.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_quick_access_wallet_remove_account.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_quick_access_wallet_visibility_visible.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_reboot.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_reboot_bootloader.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_reboot_fastbootd.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_screenshot.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_settings_controls.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_settings_developer_options.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_settings_monet.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_settings_power_options.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_settings_quick_access_wallet.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_warning.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/monet_color_picker_circle_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ripple.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rounded_ripple_48.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selectable_item_background_stateful.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/switch_background_ripple.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/top_sheet_rounded_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_power_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_power_menu_container.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_settings_faq.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_settings_generic.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_settings_root.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_sign_in_with_google.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_header.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_power_menu_button_empty.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_power_menu_cards.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_power_menu_controls.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/navigation/nav_graph_root.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/values-land/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 150dp 4 | -------------------------------------------------------------------------------- /app/src/main/res/values-night-v31/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | @android:color/system_accent1_100 4 | @android:color/system_neutral1_800 5 | @android:color/system_neutral1_900 6 | -------------------------------------------------------------------------------- /app/src/main/res/values-night/bools.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | -------------------------------------------------------------------------------- /app/src/main/res/values-night/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #32302C 4 | #D32F2F 5 | #40ffffff 6 | @color/black 7 | #616161 8 | @color/black 9 | -------------------------------------------------------------------------------- /app/src/main/res/values-v31/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | @android:color/system_neutral2_700 4 | @android:color/system_accent1_100 5 | @android:color/system_accent2_100 6 | @color/white 7 | @android:color/system_neutral1_50 8 | -------------------------------------------------------------------------------- /app/src/main/res/values-v31/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 1px 4 | 32px 5 | -------------------------------------------------------------------------------- /app/src/main/res/values/arrays.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | com.android.systemui 5 | com.kieronquinn.app.classicpowermenu 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/bools.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | -------------------------------------------------------------------------------- /app/src/main/res/xml/accessibility_service.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/src/main/res/xml/backup_rules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/xml/data_extraction_rules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/xml/provider_paths.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/xml/shortcuts.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | buildscript { 3 | ext.nav_version = "2.8.3" 4 | ext.koin_version = "3.5.6" 5 | ext.protobuf_version = '0.9.1' 6 | ext.room_version = "2.6.1" 7 | dependencies { 8 | classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" 9 | classpath "com.google.android.gms:oss-licenses-plugin:0.10.6" 10 | classpath "com.google.protobuf:protobuf-gradle-plugin:$protobuf_version" 11 | } 12 | } 13 | 14 | plugins { 15 | id 'com.android.application' version '8.7.1' apply false 16 | id 'com.android.library' version '8.7.1' apply false 17 | id 'org.jetbrains.kotlin.android' version '2.0.20' apply false 18 | id 'com.google.devtools.ksp' version '2.0.20-1.0.25' apply false 19 | } 20 | 21 | task clean(type: Delete) { 22 | delete rootProject.buildDir 23 | } -------------------------------------------------------------------------------- /crowdin.yml: -------------------------------------------------------------------------------- 1 | "project_id_env": "CROWDIN_PROJECT_ID" 2 | "api_token_env": "CROWDIN_PERSONAL_TOKEN" 3 | "base_path": "." 4 | 5 | "preserve_hierarchy": true 6 | 7 | "files": [ 8 | { 9 | "source": "app/src/main/res/values/strings.xml", 10 | "translation": "app/src/main/res/values-%android_code%/strings.xml", 11 | "languages_mapping": { 12 | "android_code": { 13 | "it": "it", 14 | "ja": "ja" 15 | } 16 | } 17 | }, 18 | { 19 | "source": "Controls/src/main/res/values/strings.xml", 20 | "translation": "Controls/src/main/res/values-%android_code%/strings.xml", 21 | "languages_mapping": { 22 | "android_code": { 23 | "it": "it", 24 | "ja": "ja" 25 | } 26 | } 27 | } 28 | ] 29 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KieronQuinn/ClassicPowerMenu/e17f14a85f85d4eefabaf847abfadd1af32291c1/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Tue Oct 15 22:59:53 BST 2024 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip 5 | zipStoreBase=GRADLE_USER_HOME 6 | zipStorePath=wrapper/dists 7 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | google() 5 | mavenCentral() 6 | maven { url 'https://jitpack.io' } 7 | jcenter() 8 | } 9 | } 10 | dependencyResolutionManagement { 11 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) 12 | repositories { 13 | google() 14 | mavenCentral() 15 | maven { url 'https://jitpack.io' } 16 | jcenter() 17 | maven { url 'https://api.xposed.info/' } 18 | } 19 | } 20 | rootProject.name = "Classic Power Menu" 21 | include ':app' 22 | include ':systemstubs' 23 | include ':QuickAccessWallet' 24 | include ':Controls' 25 | -------------------------------------------------------------------------------- /systemstubs/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /systemstubs/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'com.android.library' 3 | } 4 | 5 | android { 6 | compileSdk 34 7 | 8 | defaultConfig { 9 | minSdk 30 10 | targetSdk 35 11 | 12 | consumerProguardFiles "consumer-rules.pro" 13 | } 14 | 15 | buildTypes { 16 | release { 17 | minifyEnabled false 18 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 19 | } 20 | } 21 | compileOptions { 22 | sourceCompatibility JavaVersion.VERSION_1_8 23 | targetCompatibility JavaVersion.VERSION_1_8 24 | } 25 | namespace 'com.android.internal' 26 | buildFeatures { 27 | aidl true 28 | } 29 | } 30 | 31 | dependencies { 32 | implementation 'androidx.annotation:annotation:1.9.0' 33 | } -------------------------------------------------------------------------------- /systemstubs/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KieronQuinn/ClassicPowerMenu/e17f14a85f85d4eefabaf847abfadd1af32291c1/systemstubs/consumer-rules.pro -------------------------------------------------------------------------------- /systemstubs/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /systemstubs/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /systemstubs/src/main/aidl/android/app/IApplicationThread.aidl: -------------------------------------------------------------------------------- 1 | package android.app; 2 | 3 | interface IApplicationThread { 4 | 5 | } -------------------------------------------------------------------------------- /systemstubs/src/main/aidl/android/app/ProfilerInfo.aidl: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package android.app; 18 | 19 | parcelable ProfilerInfo; -------------------------------------------------------------------------------- /systemstubs/src/main/aidl/android/app/trust/ITrustManager.aidl: -------------------------------------------------------------------------------- 1 | /* 2 | ** 3 | ** Copyright 2014, The Android Open Source Project 4 | ** 5 | ** Licensed under the Apache License, Version 2.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 | ** http://www.apache.org/licenses/LICENSE-2.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 | package android.app.trust; 18 | 19 | /** 20 | * System private API to comunicate with trust service. 21 | */ 22 | interface ITrustManager { 23 | void setDeviceLockedForUser(int userId, boolean locked); 24 | } -------------------------------------------------------------------------------- /systemstubs/src/main/aidl/android/content/IIntentReceiver.aidl: -------------------------------------------------------------------------------- 1 | package android.content; 2 | 3 | interface IIntentReceiver { 4 | //Stub! 5 | } -------------------------------------------------------------------------------- /systemstubs/src/main/aidl/android/content/IIntentSender.aidl: -------------------------------------------------------------------------------- 1 | package android.content; 2 | 3 | interface IIntentSender { 4 | //Stub 5 | } -------------------------------------------------------------------------------- /systemstubs/src/main/aidl/android/content/pm/IPackageManager.aidl: -------------------------------------------------------------------------------- 1 | package android.content.pm; 2 | 3 | import android.content.pm.ServiceInfo; 4 | import android.content.pm.ActivityInfo; 5 | 6 | interface IPackageManager { 7 | ActivityInfo getActivityInfo(in ComponentName className, int flags, int userId); 8 | ServiceInfo getServiceInfo(in ComponentName className, int flags, int userId); 9 | } -------------------------------------------------------------------------------- /systemstubs/src/main/aidl/android/hardware/input/IInputManager.aidl: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2012 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package android.hardware.input; 18 | 19 | import android.view.InputEvent; 20 | 21 | interface IInputManager { 22 | boolean injectInputEvent(in InputEvent ev, int mode); 23 | } -------------------------------------------------------------------------------- /systemstubs/src/main/aidl/android/os/IUserManager.aidl: -------------------------------------------------------------------------------- 1 | /* 2 | ** 3 | ** Copyright 2012, The Android Open Source Project 4 | ** 5 | ** Licensed under the Apache License, Version 2.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 | ** http://www.apache.org/licenses/LICENSE-2.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 | package android.os; 18 | 19 | interface IUserManager { 20 | 21 | int[] getProfileIds(int userId, boolean enabledOnly); 22 | 23 | } -------------------------------------------------------------------------------- /systemstubs/src/main/aidl/android/permission/IPermissionManager.aidl: -------------------------------------------------------------------------------- 1 | package android.permission; 2 | 3 | interface IPermissionManager { 4 | //Stub! 5 | } -------------------------------------------------------------------------------- /systemstubs/src/main/aidl/android/service/controls/IControlsActionCallback.aidl: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020, The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package android.service.controls; 17 | 18 | interface IControlsActionCallback { 19 | void accept(in IBinder token, in String controlId, int response); 20 | } -------------------------------------------------------------------------------- /systemstubs/src/main/aidl/android/service/controls/IControlsSubscription.aidl: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020, The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package android.service.controls; 17 | 18 | interface IControlsSubscription { 19 | void request(long n); 20 | void cancel(); 21 | } -------------------------------------------------------------------------------- /systemstubs/src/main/aidl/android/service/controls/actions/ControlActionWrapper.aidl: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2020 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package android.service.controls.actions; 17 | 18 | parcelable ControlActionWrapper; -------------------------------------------------------------------------------- /systemstubs/src/main/aidl/android/service/quickaccesswallet/GetWalletCardsError.aidl: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package android.service.quickaccesswallet; 18 | 19 | parcelable GetWalletCardsError; -------------------------------------------------------------------------------- /systemstubs/src/main/aidl/android/service/quickaccesswallet/GetWalletCardsRequest.aidl: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package android.service.quickaccesswallet; 18 | 19 | parcelable GetWalletCardsRequest; -------------------------------------------------------------------------------- /systemstubs/src/main/aidl/android/service/quickaccesswallet/GetWalletCardsResponse.aidl: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package android.service.quickaccesswallet; 18 | 19 | parcelable GetWalletCardsResponse; -------------------------------------------------------------------------------- /systemstubs/src/main/aidl/android/service/quickaccesswallet/SelectWalletCardRequest.aidl: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package android.service.quickaccesswallet; 18 | 19 | parcelable SelectWalletCardRequest; -------------------------------------------------------------------------------- /systemstubs/src/main/aidl/android/service/quickaccesswallet/WalletCard.aidl: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package android.service.quickaccesswallet; 18 | 19 | parcelable WalletCard; -------------------------------------------------------------------------------- /systemstubs/src/main/aidl/android/service/quickaccesswallet/WalletServiceEvent.aidl: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package android.service.quickaccesswallet; 18 | 19 | parcelable WalletServiceEvent; -------------------------------------------------------------------------------- /systemstubs/src/main/aidl/android/service/quickaccesswallet/WalletServiceEventListenerRequest.aidl: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package android.service.quickaccesswallet; 18 | 19 | parcelable WalletServiceEventListenerRequest; -------------------------------------------------------------------------------- /systemstubs/src/main/aidl/android/view/IWindow.aidl: -------------------------------------------------------------------------------- 1 | package android.view; 2 | 3 | interface IWindow { 4 | //Stub 5 | } -------------------------------------------------------------------------------- /systemstubs/src/main/aidl/android/view/IWindowManager.aidl: -------------------------------------------------------------------------------- 1 | /* 2 | ** Copyright 2006, The Android Open Source Project 3 | ** 4 | ** Licensed under the Apache License, Version 2.0 (the "License"); 5 | ** you may not use this file except in compliance with the License. 6 | ** You may obtain a copy of the License at 7 | ** 8 | ** http://www.apache.org/licenses/LICENSE-2.0 9 | ** 10 | ** Unless required by applicable law or agreed to in writing, software 11 | ** distributed under the License is distributed on an "AS IS" BASIS, 12 | ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | ** See the License for the specific language governing permissions and 14 | ** limitations under the License. 15 | */ 16 | package android.view; 17 | 18 | interface IWindowManager 19 | { 20 | 21 | /** 22 | * Lock the device immediately with the specified options (can be null). 23 | */ 24 | void lockNow(in Bundle options); 25 | 26 | } -------------------------------------------------------------------------------- /systemstubs/src/main/aidl/android/view/MagnificationSpec.aidl: -------------------------------------------------------------------------------- 1 | /* 2 | ** 3 | ** Copyright 2012, The Android Open Source Project 4 | ** 5 | ** Licensed under the Apache License, Version 2.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 | ** http://www.apache.org/licenses/LICENSE-2.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 | package android.view; 18 | parcelable MagnificationSpec; -------------------------------------------------------------------------------- /systemstubs/src/main/aidl/com/android/internal/widget/ILockSettings.aidl: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2012 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.android.internal.widget; 17 | 18 | interface ILockSettings { 19 | int getStrongAuthForUser(int userId); 20 | void requireStrongAuth(int strongAuthReason, int userId); 21 | } -------------------------------------------------------------------------------- /systemstubs/src/main/java/android/app/LoadedApk.java: -------------------------------------------------------------------------------- 1 | package android.app; 2 | 3 | public class LoadedApk { 4 | 5 | //Stub 6 | 7 | } 8 | -------------------------------------------------------------------------------- /systemstubs/src/main/java/android/app/ProfilerInfo.java: -------------------------------------------------------------------------------- 1 | package android.app; 2 | 3 | import android.os.Parcel; 4 | import android.os.Parcelable; 5 | 6 | public class ProfilerInfo implements Parcelable { 7 | 8 | protected ProfilerInfo(Parcel in) { 9 | } 10 | 11 | public static final Creator CREATOR = new Creator() { 12 | @Override 13 | public ProfilerInfo createFromParcel(Parcel in) { 14 | return new ProfilerInfo(in); 15 | } 16 | 17 | @Override 18 | public ProfilerInfo[] newArray(int size) { 19 | return new ProfilerInfo[size]; 20 | } 21 | }; 22 | 23 | @Override 24 | public int describeContents() { 25 | throw new RuntimeException("Stub!"); 26 | } 27 | 28 | @Override 29 | public void writeToParcel(Parcel parcel, int i) { 30 | throw new RuntimeException("Stub!"); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /systemstubs/src/main/java/android/app/servertransaction/PendingTransactionActions.java: -------------------------------------------------------------------------------- 1 | package android.app.servertransaction; 2 | 3 | import android.os.Bundle; 4 | 5 | public class PendingTransactionActions { 6 | 7 | public void setOldState(Bundle oldState) { 8 | throw new RuntimeException("Stub!"); 9 | } 10 | 11 | public void setRestoreInstanceState(boolean restoreInstanceState) { 12 | throw new RuntimeException("Stub!"); 13 | } 14 | 15 | public void setCallOnPostCreate(boolean callOnPostCreate) { 16 | throw new RuntimeException("Stub!"); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /systemstubs/src/main/java/android/content/IContentProvider.java: -------------------------------------------------------------------------------- 1 | package android.content; 2 | 3 | import android.os.IInterface; 4 | 5 | public interface IContentProvider extends IInterface { 6 | } 7 | -------------------------------------------------------------------------------- /systemstubs/src/main/java/android/content/res/CompatibilityInfo.java: -------------------------------------------------------------------------------- 1 | package android.content.res; 2 | 3 | public class CompatibilityInfo { 4 | 5 | //Stub 6 | 7 | } 8 | -------------------------------------------------------------------------------- /systemstubs/src/main/java/android/view/MagnificationSpec.java: -------------------------------------------------------------------------------- 1 | package android.view; 2 | 3 | import android.os.Parcel; 4 | import android.os.Parcelable; 5 | 6 | //Stub 7 | public class MagnificationSpec implements Parcelable { 8 | protected MagnificationSpec(Parcel in) { 9 | } 10 | 11 | public static final Creator CREATOR = new Creator() { 12 | @Override 13 | public MagnificationSpec createFromParcel(Parcel in) { 14 | return new MagnificationSpec(in); 15 | } 16 | 17 | @Override 18 | public MagnificationSpec[] newArray(int size) { 19 | return new MagnificationSpec[size]; 20 | } 21 | }; 22 | 23 | @Override 24 | public int describeContents() { 25 | return 0; 26 | } 27 | 28 | @Override 29 | public void writeToParcel(Parcel parcel, int i) { 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /systemstubs/src/main/java/com/android/internal/content/ReferrerIntent.java: -------------------------------------------------------------------------------- 1 | package com.android.internal.content; 2 | 3 | import android.content.Intent; 4 | 5 | public class ReferrerIntent { 6 | 7 | public ReferrerIntent(Intent baseIntent, String referrer) { 8 | throw new RuntimeException("Stub!"); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /systemstubs/systemlibraries/framework.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KieronQuinn/ClassicPowerMenu/e17f14a85f85d4eefabaf847abfadd1af32291c1/systemstubs/systemlibraries/framework.jar --------------------------------------------------------------------------------