├── .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 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.idea/icon.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/.idea/material_theme_project_new.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/migrations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
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 |
--------------------------------------------------------------------------------
/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
--------------------------------------------------------------------------------