├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── workflows │ └── publish-docs.yml ├── .gitignore ├── CHANGELOG.md ├── HTTPShortcuts ├── .editorconfig ├── .gitignore ├── app │ ├── build.gradle.kts │ ├── proguard-rules.pro │ ├── schemas │ │ └── ch.rmy.android.http_shortcuts.data.Database │ │ │ ├── 1.json │ │ │ ├── 2.json │ │ │ ├── 3.json │ │ │ └── 4.json │ └── src │ │ ├── debug │ │ └── res │ │ │ └── drawable │ │ │ └── ic_launcher_foreground.xml │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── assets │ │ │ ├── acknowledgments.html │ │ │ ├── changelog.html │ │ │ ├── docs │ │ │ │ ├── advanced.html │ │ │ │ ├── assets │ │ │ │ │ ├── scripting │ │ │ │ │ │ ├── 01.png │ │ │ │ │ │ └── 02.png │ │ │ │ │ └── shortcuts │ │ │ │ │ │ └── 01.png │ │ │ │ ├── categories.html │ │ │ │ ├── directories.html │ │ │ │ ├── documentation.html │ │ │ │ ├── execution-flow.html │ │ │ │ ├── faq.html │ │ │ │ ├── import-export.html │ │ │ │ ├── introduction.html │ │ │ │ ├── permissions.html │ │ │ │ ├── privacy-policy.html │ │ │ │ ├── scripting-examples.html │ │ │ │ ├── scripting.html │ │ │ │ ├── shortcuts.html │ │ │ │ ├── style.css │ │ │ │ └── variables.html │ │ │ └── icons_keywords │ │ ├── kotlin │ │ │ └── ch │ │ │ │ └── rmy │ │ │ │ └── android │ │ │ │ ├── framework │ │ │ │ ├── extensions │ │ │ │ │ ├── ActivityExtensions.kt │ │ │ │ │ ├── ContextExtensions.kt │ │ │ │ │ ├── CoroutineExtensions.kt │ │ │ │ │ ├── Extensions.kt │ │ │ │ │ ├── IntentExtensions.kt │ │ │ │ │ ├── LoggingExtensions.kt │ │ │ │ │ ├── ServiceExtensions.kt │ │ │ │ │ ├── StringExtensions.kt │ │ │ │ │ ├── TimeExtensions.kt │ │ │ │ │ ├── UriExtensions.kt │ │ │ │ │ └── ViewModelExtensions.kt │ │ │ │ ├── navigation │ │ │ │ │ └── NavigationRequest.kt │ │ │ │ ├── ui │ │ │ │ │ ├── BaseActivity.kt │ │ │ │ │ ├── BaseIntentBuilder.kt │ │ │ │ │ └── IntentBuilder.kt │ │ │ │ ├── utils │ │ │ │ │ ├── ClipboardUtil.kt │ │ │ │ │ ├── FilePickerUtil.kt │ │ │ │ │ ├── FileUtil.kt │ │ │ │ │ ├── InstallUtil.kt │ │ │ │ │ ├── PreferencesStore.kt │ │ │ │ │ ├── SnackbarManager.kt │ │ │ │ │ ├── UUIDUtils.kt │ │ │ │ │ ├── WebViewChecker.kt │ │ │ │ │ └── localization │ │ │ │ │ │ ├── DurationLocalizable.kt │ │ │ │ │ │ ├── Localizable.kt │ │ │ │ │ │ ├── QuantityStringLocalizable.kt │ │ │ │ │ │ ├── StaticLocalizable.kt │ │ │ │ │ │ └── StringResLocalizable.kt │ │ │ │ └── viewmodel │ │ │ │ │ ├── BaseViewModel.kt │ │ │ │ │ ├── ViewModelCancellationException.kt │ │ │ │ │ ├── ViewModelEvent.kt │ │ │ │ │ └── ViewModelScope.kt │ │ │ │ └── http_shortcuts │ │ │ │ ├── Application.kt │ │ │ │ ├── Constants.kt │ │ │ │ ├── activities │ │ │ │ ├── BaseActivity.kt │ │ │ │ ├── BaseComposeActivity.kt │ │ │ │ ├── ExecuteActivity.kt │ │ │ │ ├── about │ │ │ │ │ ├── AboutContent.kt │ │ │ │ │ ├── AboutScreen.kt │ │ │ │ │ ├── AboutViewModel.kt │ │ │ │ │ └── AboutViewState.kt │ │ │ │ ├── acknowledgment │ │ │ │ │ └── AcknowledgmentScreen.kt │ │ │ │ ├── categories │ │ │ │ │ ├── CategoriesContent.kt │ │ │ │ │ ├── CategoriesDialogState.kt │ │ │ │ │ ├── CategoriesDialogs.kt │ │ │ │ │ ├── CategoriesScreen.kt │ │ │ │ │ ├── CategoriesViewModel.kt │ │ │ │ │ ├── CategoriesViewState.kt │ │ │ │ │ ├── editor │ │ │ │ │ │ ├── CategoryEditorContent.kt │ │ │ │ │ │ ├── CategoryEditorDialogState.kt │ │ │ │ │ │ ├── CategoryEditorDialogs.kt │ │ │ │ │ │ ├── CategoryEditorScreen.kt │ │ │ │ │ │ ├── CategoryEditorViewModel.kt │ │ │ │ │ │ ├── CategoryEditorViewState.kt │ │ │ │ │ │ └── models │ │ │ │ │ │ │ └── CategoryBackground.kt │ │ │ │ │ ├── models │ │ │ │ │ │ └── CategoryListItem.kt │ │ │ │ │ └── sections │ │ │ │ │ │ ├── CategorySectionsContent.kt │ │ │ │ │ │ ├── CategorySectionsDialogState.kt │ │ │ │ │ │ ├── CategorySectionsDialogs.kt │ │ │ │ │ │ ├── CategorySectionsScreen.kt │ │ │ │ │ │ ├── CategorySectionsViewModel.kt │ │ │ │ │ │ ├── CategorySectionsViewState.kt │ │ │ │ │ │ └── models │ │ │ │ │ │ └── CategorySectionListItem.kt │ │ │ │ ├── certpinning │ │ │ │ │ ├── CertPinningContent.kt │ │ │ │ │ ├── CertPinningDialogState.kt │ │ │ │ │ ├── CertPinningDialogs.kt │ │ │ │ │ ├── CertPinningScreen.kt │ │ │ │ │ ├── CertPinningViewModel.kt │ │ │ │ │ ├── CertPinningViewState.kt │ │ │ │ │ └── models │ │ │ │ │ │ └── Pin.kt │ │ │ │ ├── contact │ │ │ │ │ ├── ContactScreen.kt │ │ │ │ │ ├── ContactViewModel.kt │ │ │ │ │ └── MetaData.kt │ │ │ │ ├── curl_import │ │ │ │ │ ├── CurlImportContent.kt │ │ │ │ │ ├── CurlImportScreen.kt │ │ │ │ │ ├── CurlImportViewModel.kt │ │ │ │ │ └── CurlImportViewState.kt │ │ │ │ ├── documentation │ │ │ │ │ ├── DocumentationBrowser.kt │ │ │ │ │ ├── DocumentationContent.kt │ │ │ │ │ ├── DocumentationEvent.kt │ │ │ │ │ ├── DocumentationScreen.kt │ │ │ │ │ ├── DocumentationUrlManager.kt │ │ │ │ │ ├── DocumentationViewModel.kt │ │ │ │ │ ├── DocumentationViewState.kt │ │ │ │ │ ├── DocumentationWebView.kt │ │ │ │ │ └── models │ │ │ │ │ │ └── SearchDirection.kt │ │ │ │ ├── editor │ │ │ │ │ ├── ShortcutEditorContent.kt │ │ │ │ │ ├── ShortcutEditorDialogState.kt │ │ │ │ │ ├── ShortcutEditorDialogs.kt │ │ │ │ │ ├── ShortcutEditorEvent.kt │ │ │ │ │ ├── ShortcutEditorScreen.kt │ │ │ │ │ ├── ShortcutEditorViewModel.kt │ │ │ │ │ ├── ShortcutEditorViewState.kt │ │ │ │ │ ├── advancedsettings │ │ │ │ │ │ ├── AdvancedSettingsContent.kt │ │ │ │ │ │ ├── AdvancedSettingsDialogState.kt │ │ │ │ │ │ ├── AdvancedSettingsDialogs.kt │ │ │ │ │ │ ├── AdvancedSettingsScreen.kt │ │ │ │ │ │ ├── AdvancedSettingsViewModel.kt │ │ │ │ │ │ ├── AdvancedSettingsViewState.kt │ │ │ │ │ │ └── models │ │ │ │ │ │ │ └── HostVerificationType.kt │ │ │ │ │ ├── authentication │ │ │ │ │ │ ├── AuthenticationContent.kt │ │ │ │ │ │ ├── AuthenticationDialogState.kt │ │ │ │ │ │ ├── AuthenticationDialogs.kt │ │ │ │ │ │ ├── AuthenticationScreen.kt │ │ │ │ │ │ ├── AuthenticationViewModel.kt │ │ │ │ │ │ ├── AuthenticationViewState.kt │ │ │ │ │ │ └── usecases │ │ │ │ │ │ │ └── CopyCertificateFileUseCase.kt │ │ │ │ │ ├── basicsettings │ │ │ │ │ │ ├── BasicRequestSettingsContent.kt │ │ │ │ │ │ ├── BasicRequestSettingsScreen.kt │ │ │ │ │ │ ├── BasicRequestSettingsViewModel.kt │ │ │ │ │ │ ├── BasicRequestSettingsViewState.kt │ │ │ │ │ │ ├── models │ │ │ │ │ │ │ └── InstalledBrowser.kt │ │ │ │ │ │ └── usecases │ │ │ │ │ │ │ └── GetAvailableBrowserPackageNamesUseCase.kt │ │ │ │ │ ├── body │ │ │ │ │ │ ├── FileOptions.kt │ │ │ │ │ │ ├── RequestBodyContent.kt │ │ │ │ │ │ ├── RequestBodyDialogState.kt │ │ │ │ │ │ ├── RequestBodyDialogs.kt │ │ │ │ │ │ ├── RequestBodyScreen.kt │ │ │ │ │ │ ├── RequestBodyViewModel.kt │ │ │ │ │ │ ├── RequestBodyViewState.kt │ │ │ │ │ │ └── models │ │ │ │ │ │ │ └── ParameterListItem.kt │ │ │ │ │ ├── executionsettings │ │ │ │ │ │ ├── ExecutionSettingsContent.kt │ │ │ │ │ │ ├── ExecutionSettingsDialogState.kt │ │ │ │ │ │ ├── ExecutionSettingsDialogs.kt │ │ │ │ │ │ ├── ExecutionSettingsEvent.kt │ │ │ │ │ │ ├── ExecutionSettingsScreen.kt │ │ │ │ │ │ ├── ExecutionSettingsViewModel.kt │ │ │ │ │ │ └── ExecutionSettingsViewState.kt │ │ │ │ │ ├── headers │ │ │ │ │ │ ├── RequestHeadersContent.kt │ │ │ │ │ │ ├── RequestHeadersDialogState.kt │ │ │ │ │ │ ├── RequestHeadersDialogs.kt │ │ │ │ │ │ ├── RequestHeadersScreen.kt │ │ │ │ │ │ ├── RequestHeadersViewModel.kt │ │ │ │ │ │ ├── RequestHeadersViewState.kt │ │ │ │ │ │ └── models │ │ │ │ │ │ │ └── HeaderListItem.kt │ │ │ │ │ ├── mqttmessages │ │ │ │ │ │ ├── MqttMessagesContent.kt │ │ │ │ │ │ ├── MqttMessagesDialogState.kt │ │ │ │ │ │ ├── MqttMessagesDialogs.kt │ │ │ │ │ │ ├── MqttMessagesScreen.kt │ │ │ │ │ │ ├── MqttMessagesViewModel.kt │ │ │ │ │ │ ├── MqttMessagesViewState.kt │ │ │ │ │ │ └── models │ │ │ │ │ │ │ └── MqttMessagesListItem.kt │ │ │ │ │ ├── response │ │ │ │ │ │ ├── ResponseContent.kt │ │ │ │ │ │ ├── ResponseDisplayContent.kt │ │ │ │ │ │ ├── ResponseDisplayDialogState.kt │ │ │ │ │ │ ├── ResponseDisplayDialogs.kt │ │ │ │ │ │ ├── ResponseDisplayScreen.kt │ │ │ │ │ │ ├── ResponseDisplayViewModel.kt │ │ │ │ │ │ ├── ResponseDisplayViewState.kt │ │ │ │ │ │ ├── ResponseScreen.kt │ │ │ │ │ │ ├── ResponseViewModel.kt │ │ │ │ │ │ └── ResponseViewState.kt │ │ │ │ │ ├── scripting │ │ │ │ │ │ ├── ScriptingContent.kt │ │ │ │ │ │ ├── ScriptingEvent.kt │ │ │ │ │ │ ├── ScriptingScreen.kt │ │ │ │ │ │ ├── ScriptingViewModel.kt │ │ │ │ │ │ ├── ScriptingViewState.kt │ │ │ │ │ │ ├── codesnippets │ │ │ │ │ │ │ ├── CodeSnippetPickerContent.kt │ │ │ │ │ │ │ ├── CodeSnippetPickerDialogState.kt │ │ │ │ │ │ │ ├── CodeSnippetPickerDialogs.kt │ │ │ │ │ │ │ ├── CodeSnippetPickerEvent.kt │ │ │ │ │ │ │ ├── CodeSnippetPickerScreen.kt │ │ │ │ │ │ │ ├── CodeSnippetPickerViewModel.kt │ │ │ │ │ │ │ ├── CodeSnippetPickerViewState.kt │ │ │ │ │ │ │ ├── models │ │ │ │ │ │ │ │ ├── CodeSnippetItem.kt │ │ │ │ │ │ │ │ ├── ItemWrapper.kt │ │ │ │ │ │ │ │ └── SectionItem.kt │ │ │ │ │ │ │ └── usecases │ │ │ │ │ │ │ │ ├── GenerateCodeSnippetItemsUseCase.kt │ │ │ │ │ │ │ │ └── GetItemWrappersUseCase.kt │ │ │ │ │ │ └── models │ │ │ │ │ │ │ └── CodeFieldType.kt │ │ │ │ │ ├── shortcuts │ │ │ │ │ │ ├── TriggerShortcutsContent.kt │ │ │ │ │ │ ├── TriggerShortcutsDialogState.kt │ │ │ │ │ │ ├── TriggerShortcutsDialogs.kt │ │ │ │ │ │ ├── TriggerShortcutsScreen.kt │ │ │ │ │ │ ├── TriggerShortcutsViewModel.kt │ │ │ │ │ │ ├── TriggerShortcutsViewState.kt │ │ │ │ │ │ └── models │ │ │ │ │ │ │ ├── ShortcutListItem.kt │ │ │ │ │ │ │ └── ShortcutListItemId.kt │ │ │ │ │ ├── typepicker │ │ │ │ │ │ ├── TypePickerContent.kt │ │ │ │ │ │ ├── TypePickerScreen.kt │ │ │ │ │ │ └── TypePickerViewModel.kt │ │ │ │ │ └── usecases │ │ │ │ │ │ └── FetchFaviconUseCase.kt │ │ │ │ ├── execute │ │ │ │ │ ├── DialogHandle.kt │ │ │ │ │ ├── ExecuteDialogHandler.kt │ │ │ │ │ ├── ExecuteDialogState.kt │ │ │ │ │ ├── ExecuteDialogs.kt │ │ │ │ │ ├── ExecuteViewModel.kt │ │ │ │ │ ├── ExecuteViewState.kt │ │ │ │ │ ├── Execution.kt │ │ │ │ │ ├── ExecutionFactory.kt │ │ │ │ │ ├── ExecutionService.kt │ │ │ │ │ ├── ExecutionStarter.kt │ │ │ │ │ ├── ExternalRequest.kt │ │ │ │ │ ├── ExternalRequestFragment.kt │ │ │ │ │ ├── ExternalRequests.kt │ │ │ │ │ ├── ExternalResult.kt │ │ │ │ │ ├── StartServiceEvent.kt │ │ │ │ │ ├── models │ │ │ │ │ │ ├── ExecutionParams.kt │ │ │ │ │ │ └── ExecutionStatus.kt │ │ │ │ │ ├── types │ │ │ │ │ │ ├── BrowserExecutionType.kt │ │ │ │ │ │ ├── ExecutionType.kt │ │ │ │ │ │ ├── ExecutionTypeFactory.kt │ │ │ │ │ │ ├── HttpExecutionType.kt │ │ │ │ │ │ ├── MqttExecutionType.kt │ │ │ │ │ │ ├── NoopExecutionType.kt │ │ │ │ │ │ └── WakeOnLanExecutionType.kt │ │ │ │ │ └── usecases │ │ │ │ │ │ ├── CheckHeadlessExecutionUseCase.kt │ │ │ │ │ │ ├── CheckWifiSSIDUseCase.kt │ │ │ │ │ │ ├── ExtractFileIdsFromVariableValuesUseCase.kt │ │ │ │ │ │ ├── OpenInBrowserUseCase.kt │ │ │ │ │ │ ├── RequestBiometricConfirmationUseCase.kt │ │ │ │ │ │ ├── RequestSimpleConfirmationUseCase.kt │ │ │ │ │ │ ├── ShowResultDialogUseCase.kt │ │ │ │ │ │ ├── ShowResultNotificationUseCase.kt │ │ │ │ │ │ └── ValidateRequestDataUseCase.kt │ │ │ │ ├── globalcode │ │ │ │ │ ├── GlobalScriptingContent.kt │ │ │ │ │ ├── GlobalScriptingDialogState.kt │ │ │ │ │ ├── GlobalScriptingDialogs.kt │ │ │ │ │ ├── GlobalScriptingEvent.kt │ │ │ │ │ ├── GlobalScriptingScreen.kt │ │ │ │ │ ├── GlobalScriptingViewModel.kt │ │ │ │ │ └── GlobalScriptingViewState.kt │ │ │ │ ├── history │ │ │ │ │ ├── HistoryContent.kt │ │ │ │ │ ├── HistoryListItem.kt │ │ │ │ │ ├── HistoryScreen.kt │ │ │ │ │ ├── HistoryViewModel.kt │ │ │ │ │ ├── HistoryViewState.kt │ │ │ │ │ └── usecases │ │ │ │ │ │ ├── CopyHistoryItemUseCase.kt │ │ │ │ │ │ └── MapEventsUseCase.kt │ │ │ │ ├── icons │ │ │ │ │ ├── IconPickerContent.kt │ │ │ │ │ ├── IconPickerDialogState.kt │ │ │ │ │ ├── IconPickerDialogs.kt │ │ │ │ │ ├── IconPickerEvent.kt │ │ │ │ │ ├── IconPickerListItem.kt │ │ │ │ │ ├── IconPickerScreen.kt │ │ │ │ │ ├── IconPickerViewModel.kt │ │ │ │ │ ├── IconPickerViewState.kt │ │ │ │ │ ├── models │ │ │ │ │ │ └── IconShape.kt │ │ │ │ │ └── usecases │ │ │ │ │ │ └── GetIconListItemsUseCase.kt │ │ │ │ ├── imageeditor │ │ │ │ │ ├── ImageEditorActivity.kt │ │ │ │ │ └── ImageEditorScreen.kt │ │ │ │ ├── importexport │ │ │ │ │ ├── ExportContent.kt │ │ │ │ │ ├── ExportDialogState.kt │ │ │ │ │ ├── ExportDialogs.kt │ │ │ │ │ ├── ExportEvent.kt │ │ │ │ │ ├── ExportScreen.kt │ │ │ │ │ ├── ExportViewModel.kt │ │ │ │ │ ├── ExportViewState.kt │ │ │ │ │ ├── ImportExportContent.kt │ │ │ │ │ ├── ImportExportDialogState.kt │ │ │ │ │ ├── ImportExportDialogs.kt │ │ │ │ │ ├── ImportExportEvent.kt │ │ │ │ │ ├── ImportExportScreen.kt │ │ │ │ │ ├── ImportExportViewModel.kt │ │ │ │ │ ├── ImportExportViewState.kt │ │ │ │ │ └── models │ │ │ │ │ │ └── ExportItem.kt │ │ │ │ ├── main │ │ │ │ │ ├── MainActivity.kt │ │ │ │ │ ├── MainContent.kt │ │ │ │ │ ├── MainDialogState.kt │ │ │ │ │ ├── MainDialogs.kt │ │ │ │ │ ├── MainEvent.kt │ │ │ │ │ ├── MainMenu.kt │ │ │ │ │ ├── MainScreen.kt │ │ │ │ │ ├── MainViewModel.kt │ │ │ │ │ ├── MainViewState.kt │ │ │ │ │ ├── ShortcutList.kt │ │ │ │ │ ├── ShortcutListContent.kt │ │ │ │ │ ├── ShortcutListDialogState.kt │ │ │ │ │ ├── ShortcutListDialogs.kt │ │ │ │ │ ├── ShortcutListEvent.kt │ │ │ │ │ ├── ShortcutListViewModel.kt │ │ │ │ │ ├── ShortcutListViewState.kt │ │ │ │ │ ├── models │ │ │ │ │ │ ├── CategoryItem.kt │ │ │ │ │ │ ├── RecoveryInfo.kt │ │ │ │ │ │ └── ShortcutListItem.kt │ │ │ │ │ └── usecases │ │ │ │ │ │ ├── ShouldShowChangeLogDialogUseCase.kt │ │ │ │ │ │ ├── ShouldShowNetworkRestrictionDialogUseCase.kt │ │ │ │ │ │ ├── ShouldShowRecoveryDialogUseCase.kt │ │ │ │ │ │ └── UnlockAppUseCase.kt │ │ │ │ ├── misc │ │ │ │ │ ├── deeplink │ │ │ │ │ │ ├── DeepLinkActivity.kt │ │ │ │ │ │ ├── DeepLinkDialogState.kt │ │ │ │ │ │ ├── DeepLinkDialogs.kt │ │ │ │ │ │ ├── DeepLinkScreen.kt │ │ │ │ │ │ ├── DeepLinkViewModel.kt │ │ │ │ │ │ └── DeepLinkViewState.kt │ │ │ │ │ ├── host │ │ │ │ │ │ └── HostActivity.kt │ │ │ │ │ ├── quick_settings_tile │ │ │ │ │ │ ├── QuickSettingsTileActivity.kt │ │ │ │ │ │ ├── QuickSettingsTileDialogState.kt │ │ │ │ │ │ ├── QuickSettingsTileDialogs.kt │ │ │ │ │ │ ├── QuickSettingsTileScreen.kt │ │ │ │ │ │ ├── QuickSettingsTileViewModel.kt │ │ │ │ │ │ └── QuickSettingsTileViewState.kt │ │ │ │ │ ├── second_launcher │ │ │ │ │ │ ├── SecondLauncherActivity.kt │ │ │ │ │ │ ├── SecondLauncherDialogState.kt │ │ │ │ │ │ ├── SecondLauncherDialogs.kt │ │ │ │ │ │ ├── SecondLauncherScreen.kt │ │ │ │ │ │ ├── SecondLauncherViewModel.kt │ │ │ │ │ │ └── SecondLauncherViewState.kt │ │ │ │ │ └── share │ │ │ │ │ │ ├── ShareActivity.kt │ │ │ │ │ │ ├── ShareDialogState.kt │ │ │ │ │ │ ├── ShareDialogs.kt │ │ │ │ │ │ ├── ShareScreen.kt │ │ │ │ │ │ ├── ShareViewModel.kt │ │ │ │ │ │ └── ShareViewState.kt │ │ │ │ ├── moving │ │ │ │ │ ├── MoveContent.kt │ │ │ │ │ ├── MoveScreen.kt │ │ │ │ │ ├── MoveViewModel.kt │ │ │ │ │ └── models │ │ │ │ │ │ └── CategorySectionItem.kt │ │ │ │ ├── remote_edit │ │ │ │ │ ├── RemoteEditContent.kt │ │ │ │ │ ├── RemoteEditDialogState.kt │ │ │ │ │ ├── RemoteEditDialogs.kt │ │ │ │ │ ├── RemoteEditManager.kt │ │ │ │ │ ├── RemoteEditScreen.kt │ │ │ │ │ ├── RemoteEditViewModel.kt │ │ │ │ │ └── RemoteEditViewState.kt │ │ │ │ ├── response │ │ │ │ │ ├── DisplayResponseActivity.kt │ │ │ │ │ ├── DisplayResponseContent.kt │ │ │ │ │ ├── DisplayResponseEvent.kt │ │ │ │ │ ├── DisplayResponseScreen.kt │ │ │ │ │ ├── DisplayResponseViewModel.kt │ │ │ │ │ ├── DisplayResponseViewState.kt │ │ │ │ │ ├── ResponseWebView.kt │ │ │ │ │ ├── SaveFileContract.kt │ │ │ │ │ ├── models │ │ │ │ │ │ ├── DetailInfo.kt │ │ │ │ │ │ ├── ResponseData.kt │ │ │ │ │ │ └── TableData.kt │ │ │ │ │ └── usecases │ │ │ │ │ │ └── GetTableDataUseCase.kt │ │ │ │ ├── settings │ │ │ │ │ ├── SettingScreen.kt │ │ │ │ │ ├── SettingsContent.kt │ │ │ │ │ ├── SettingsDialogState.kt │ │ │ │ │ ├── SettingsDialogs.kt │ │ │ │ │ ├── SettingsViewModel.kt │ │ │ │ │ ├── SettingsViewState.kt │ │ │ │ │ └── usecases │ │ │ │ │ │ └── CreateQuickSettingsTileUseCase.kt │ │ │ │ ├── troubleshooting │ │ │ │ │ ├── TroubleShootingContent.kt │ │ │ │ │ ├── TroubleShootingDialogState.kt │ │ │ │ │ ├── TroubleShootingDialogs.kt │ │ │ │ │ ├── TroubleShootingScreen.kt │ │ │ │ │ ├── TroubleShootingViewModel.kt │ │ │ │ │ └── TroubleShootingViewState.kt │ │ │ │ ├── variables │ │ │ │ │ ├── GlobalVariablesContent.kt │ │ │ │ │ ├── GlobalVariablesDialogState.kt │ │ │ │ │ ├── GlobalVariablesDialogs.kt │ │ │ │ │ ├── GlobalVariablesScreen.kt │ │ │ │ │ ├── GlobalVariablesViewModel.kt │ │ │ │ │ ├── VariableTypeMappings.kt │ │ │ │ │ ├── VariablesViewState.kt │ │ │ │ │ ├── editor │ │ │ │ │ │ ├── GlobalVariableEditorContent.kt │ │ │ │ │ │ ├── GlobalVariableEditorDialogState.kt │ │ │ │ │ │ ├── GlobalVariableEditorDialogs.kt │ │ │ │ │ │ ├── GlobalVariableEditorEvent.kt │ │ │ │ │ │ ├── GlobalVariableEditorScreen.kt │ │ │ │ │ │ ├── GlobalVariableEditorViewModel.kt │ │ │ │ │ │ ├── GlobalVariableEditorViewState.kt │ │ │ │ │ │ ├── VariableTypeSpecificContent.kt │ │ │ │ │ │ ├── models │ │ │ │ │ │ │ └── ShareSupport.kt │ │ │ │ │ │ └── types │ │ │ │ │ │ │ ├── BaseTypeViewModel.kt │ │ │ │ │ │ │ ├── ColorTypeEditor.kt │ │ │ │ │ │ │ ├── ColorTypeViewModel.kt │ │ │ │ │ │ │ ├── ColorTypeViewState.kt │ │ │ │ │ │ │ ├── ConstantTypeEditor.kt │ │ │ │ │ │ │ ├── ConstantTypeViewModel.kt │ │ │ │ │ │ │ ├── ConstantTypeViewState.kt │ │ │ │ │ │ │ ├── DateTypeEditor.kt │ │ │ │ │ │ │ ├── DateTypeViewModel.kt │ │ │ │ │ │ │ ├── DateTypeViewState.kt │ │ │ │ │ │ │ ├── IncrementTypeEditor.kt │ │ │ │ │ │ │ ├── IncrementTypeViewModel.kt │ │ │ │ │ │ │ ├── IncrementTypeViewState.kt │ │ │ │ │ │ │ ├── SelectTypeEditor.kt │ │ │ │ │ │ │ ├── SelectTypeViewModel.kt │ │ │ │ │ │ │ ├── SelectTypeViewState.kt │ │ │ │ │ │ │ ├── SliderTypeEditor.kt │ │ │ │ │ │ │ ├── SliderTypeViewModel.kt │ │ │ │ │ │ │ ├── SliderTypeViewState.kt │ │ │ │ │ │ │ ├── TextTypeEditor.kt │ │ │ │ │ │ │ ├── TextTypeViewModel.kt │ │ │ │ │ │ │ ├── TextTypeViewState.kt │ │ │ │ │ │ │ ├── TimeTypeEditor.kt │ │ │ │ │ │ │ ├── TimeTypeViewModel.kt │ │ │ │ │ │ │ ├── TimeTypeViewState.kt │ │ │ │ │ │ │ ├── TimestampTypeEditor.kt │ │ │ │ │ │ │ ├── TimestampTypeViewModel.kt │ │ │ │ │ │ │ ├── TimestampTypeViewState.kt │ │ │ │ │ │ │ ├── ToggleTypeEditor.kt │ │ │ │ │ │ │ ├── ToggleTypeViewModel.kt │ │ │ │ │ │ │ ├── ToggleTypeViewState.kt │ │ │ │ │ │ │ └── VariableTypeViewState.kt │ │ │ │ │ ├── models │ │ │ │ │ │ └── GlobalVariableListItem.kt │ │ │ │ │ └── usecases │ │ │ │ │ │ ├── GenerateVariableKeyUseCase.kt │ │ │ │ │ │ └── GetUsedGlobalVariableIdsUseCase.kt │ │ │ │ ├── widget │ │ │ │ │ ├── WidgetSettingsContent.kt │ │ │ │ │ ├── WidgetSettingsScreen.kt │ │ │ │ │ ├── WidgetSettingsViewModel.kt │ │ │ │ │ └── WidgetSettingsViewState.kt │ │ │ │ └── workingdirectories │ │ │ │ │ ├── WorkingDirectoriesContent.kt │ │ │ │ │ ├── WorkingDirectoriesDialogState.kt │ │ │ │ │ ├── WorkingDirectoriesDialogs.kt │ │ │ │ │ ├── WorkingDirectoriesEvent.kt │ │ │ │ │ ├── WorkingDirectoriesScreen.kt │ │ │ │ │ ├── WorkingDirectoriesViewModel.kt │ │ │ │ │ ├── WorkingDirectoriesViewState.kt │ │ │ │ │ └── models │ │ │ │ │ └── WorkingDirectoryListItem.kt │ │ │ │ ├── components │ │ │ │ ├── CertificateFingerprintTextField.kt │ │ │ │ ├── ChangeLogDialog.kt │ │ │ │ ├── ChangeTitleDialog.kt │ │ │ │ ├── Checkbox.kt │ │ │ │ ├── ClickOnlyInteractionSource.kt │ │ │ │ ├── CodeEditorField.kt │ │ │ │ ├── ColorPicker.kt │ │ │ │ ├── ColorPickerDialog.kt │ │ │ │ ├── Colors.kt │ │ │ │ ├── ConfirmDialog.kt │ │ │ │ ├── Constants.kt │ │ │ │ ├── DiscardWarningDialog.kt │ │ │ │ ├── EmptyState.kt │ │ │ │ ├── FloatingAddButton.kt │ │ │ │ ├── HelpText.kt │ │ │ │ ├── HideableDialog.kt │ │ │ │ ├── HtmlRichText.kt │ │ │ │ ├── IconPickerDialog.kt │ │ │ │ ├── LoadingIndicator.kt │ │ │ │ ├── Menu.kt │ │ │ │ ├── MessageDialog.kt │ │ │ │ ├── MultiSelectDialog.kt │ │ │ │ ├── OrderedOptionsSlider.kt │ │ │ │ ├── ProgressDialog.kt │ │ │ │ ├── Screen.kt │ │ │ │ ├── ScreenInstructionsHeader.kt │ │ │ │ ├── SelectDialog.kt │ │ │ │ ├── SelectDialogEntry.kt │ │ │ │ ├── SelectionField.kt │ │ │ │ ├── SettingsButton.kt │ │ │ │ ├── SettingsGroup.kt │ │ │ │ ├── SettingsSelection.kt │ │ │ │ ├── ShortcutIcon.kt │ │ │ │ ├── ShortcutPickerDialog.kt │ │ │ │ ├── ShortcutsPickerDialog.kt │ │ │ │ ├── SimpleScaffold.kt │ │ │ │ ├── SinglePageBrowser.kt │ │ │ │ ├── SuggestionDropdown.kt │ │ │ │ ├── TextInputDialog.kt │ │ │ │ ├── Theme.kt │ │ │ │ ├── ToolbarIcon.kt │ │ │ │ ├── VariablePickerDialog.kt │ │ │ │ ├── VariablePlaceholderText.kt │ │ │ │ ├── VariablePlaceholderTextField.kt │ │ │ │ ├── VerticalSpacer.kt │ │ │ │ └── models │ │ │ │ │ └── MenuEntry.kt │ │ │ │ ├── controls │ │ │ │ └── ControlsService.kt │ │ │ │ ├── data │ │ │ │ ├── Converters.kt │ │ │ │ ├── Database.kt │ │ │ │ ├── DatabaseProvider.kt │ │ │ │ ├── domains │ │ │ │ │ ├── BaseRepository.kt │ │ │ │ │ ├── app_config │ │ │ │ │ │ ├── AppConfigDao.kt │ │ │ │ │ │ └── AppConfigRepository.kt │ │ │ │ │ ├── app_lock │ │ │ │ │ │ ├── AppLockDao.kt │ │ │ │ │ │ └── AppLockRepository.kt │ │ │ │ │ ├── categories │ │ │ │ │ │ ├── CategoryDao.kt │ │ │ │ │ │ ├── CategoryId.kt │ │ │ │ │ │ └── CategoryRepository.kt │ │ │ │ │ ├── certificate_pins │ │ │ │ │ │ ├── CertificatePinDao.kt │ │ │ │ │ │ ├── CertificatePinId.kt │ │ │ │ │ │ └── CertificatePinRepository.kt │ │ │ │ │ ├── history │ │ │ │ │ │ ├── HistoryEventDao.kt │ │ │ │ │ │ └── HistoryRepository.kt │ │ │ │ │ ├── import_export │ │ │ │ │ │ └── ImportRepository.kt │ │ │ │ │ ├── pending_executions │ │ │ │ │ │ ├── ExecutionId.kt │ │ │ │ │ │ ├── PendingExecutionDao.kt │ │ │ │ │ │ └── PendingExecutionsRepository.kt │ │ │ │ │ ├── request_headers │ │ │ │ │ │ ├── RequestHeaderDao.kt │ │ │ │ │ │ ├── RequestHeaderId.kt │ │ │ │ │ │ └── RequestHeaderRepository.kt │ │ │ │ │ ├── request_parameters │ │ │ │ │ │ ├── RequestParameterDao.kt │ │ │ │ │ │ ├── RequestParameterId.kt │ │ │ │ │ │ └── RequestParameterRepository.kt │ │ │ │ │ ├── sections │ │ │ │ │ │ ├── SectionDao.kt │ │ │ │ │ │ ├── SectionId.kt │ │ │ │ │ │ └── SectionRepository.kt │ │ │ │ │ ├── shortcuts │ │ │ │ │ │ ├── ShortcutDao.kt │ │ │ │ │ │ ├── ShortcutId.kt │ │ │ │ │ │ ├── ShortcutNameOrId.kt │ │ │ │ │ │ ├── ShortcutRepository.kt │ │ │ │ │ │ └── TemporaryShortcutRepository.kt │ │ │ │ │ ├── variables │ │ │ │ │ │ ├── GlobalVariableDao.kt │ │ │ │ │ │ ├── GlobalVariableId.kt │ │ │ │ │ │ ├── GlobalVariableRepository.kt │ │ │ │ │ │ ├── TemporaryGlobalVariableRepository.kt │ │ │ │ │ │ ├── VariableKey.kt │ │ │ │ │ │ └── VariableKeyOrId.kt │ │ │ │ │ ├── widgets │ │ │ │ │ │ ├── WidgetDao.kt │ │ │ │ │ │ └── WidgetsRepository.kt │ │ │ │ │ └── working_directories │ │ │ │ │ │ ├── WorkingDirectoryDao.kt │ │ │ │ │ │ ├── WorkingDirectoryId.kt │ │ │ │ │ │ └── WorkingDirectoryRepository.kt │ │ │ │ ├── dtos │ │ │ │ │ ├── GlobalVariablePlaceholder.kt │ │ │ │ │ ├── LauncherShortcut.kt │ │ │ │ │ ├── ShortcutPlaceholder.kt │ │ │ │ │ └── TargetBrowser.kt │ │ │ │ ├── enums │ │ │ │ │ ├── CategoryBackgroundType.kt │ │ │ │ │ ├── CategoryLayoutType.kt │ │ │ │ │ ├── ClientCertParams.kt │ │ │ │ │ ├── ConfirmationType.kt │ │ │ │ │ ├── FileUploadType.kt │ │ │ │ │ ├── HistoryEventType.kt │ │ │ │ │ ├── HostVerificationConfig.kt │ │ │ │ │ ├── HttpMethod.kt │ │ │ │ │ ├── IpVersion.kt │ │ │ │ │ ├── ParameterType.kt │ │ │ │ │ ├── PendingExecutionType.kt │ │ │ │ │ ├── ProxyType.kt │ │ │ │ │ ├── RequestBodyType.kt │ │ │ │ │ ├── ResponseContentType.kt │ │ │ │ │ ├── ResponseDisplayAction.kt │ │ │ │ │ ├── ResponseFailureOutput.kt │ │ │ │ │ ├── ResponseSuccessOutput.kt │ │ │ │ │ ├── ResponseUiType.kt │ │ │ │ │ ├── SecurityPolicy.kt │ │ │ │ │ ├── SelectionMode.kt │ │ │ │ │ ├── ShortcutAuthenticationType.kt │ │ │ │ │ ├── ShortcutClickBehavior.kt │ │ │ │ │ ├── ShortcutExecutionType.kt │ │ │ │ │ ├── ShortcutTriggerType.kt │ │ │ │ │ └── VariableType.kt │ │ │ │ ├── migrations │ │ │ │ │ └── Migration4.kt │ │ │ │ ├── models │ │ │ │ │ ├── AppConfig.kt │ │ │ │ │ ├── AppLock.kt │ │ │ │ │ ├── Category.kt │ │ │ │ │ ├── CertificatePin.kt │ │ │ │ │ ├── GlobalVariable.kt │ │ │ │ │ ├── HistoryEvent.kt │ │ │ │ │ ├── PendingExecution.kt │ │ │ │ │ ├── PendingExecutionModel.kt │ │ │ │ │ ├── PendingExecutionWithVariablesModel.kt │ │ │ │ │ ├── RequestHeader.kt │ │ │ │ │ ├── RequestParameter.kt │ │ │ │ │ ├── ResolvedVariableModel.kt │ │ │ │ │ ├── Section.kt │ │ │ │ │ ├── Shortcut.kt │ │ │ │ │ ├── Widget.kt │ │ │ │ │ └── WorkingDirectory.kt │ │ │ │ ├── realm │ │ │ │ │ ├── RealmFactory.kt │ │ │ │ │ ├── RealmToRoomMigration.kt │ │ │ │ │ ├── RealmToRoomMigrationDao.kt │ │ │ │ │ ├── migration │ │ │ │ │ │ ├── CategoryBackgroundMigration.kt │ │ │ │ │ │ ├── CategoryLayoutMigration.kt │ │ │ │ │ │ ├── FileUploadTypeMigration.kt │ │ │ │ │ │ ├── MigrationExtensions.kt │ │ │ │ │ │ ├── ParameterTypeMigration.kt │ │ │ │ │ │ ├── RealmDatabaseMigration.kt │ │ │ │ │ │ ├── RealmMigration.kt │ │ │ │ │ │ ├── RemoveLegacyActionsMigration.kt │ │ │ │ │ │ ├── ReplaceActionsWithScriptsMigration.kt │ │ │ │ │ │ ├── ReplaceVariableKeysWithIdsMigration.kt │ │ │ │ │ │ ├── RequireConfirmationMigration.kt │ │ │ │ │ │ ├── ResponseActionMigration.kt │ │ │ │ │ │ ├── ResponseHandlingMigration.kt │ │ │ │ │ │ ├── UniqueIdsMigration.kt │ │ │ │ │ │ └── WorkingDirectoryMigration.kt │ │ │ │ │ └── models │ │ │ │ │ │ ├── RealmAppLock.kt │ │ │ │ │ │ ├── RealmBase.kt │ │ │ │ │ │ ├── RealmCategory.kt │ │ │ │ │ │ ├── RealmCertificatePin.kt │ │ │ │ │ │ ├── RealmFileUploadOptions.kt │ │ │ │ │ │ ├── RealmHeader.kt │ │ │ │ │ │ ├── RealmOption.kt │ │ │ │ │ │ ├── RealmParameter.kt │ │ │ │ │ │ ├── RealmRepetition.kt │ │ │ │ │ │ ├── RealmResponseHandling.kt │ │ │ │ │ │ ├── RealmSection.kt │ │ │ │ │ │ ├── RealmShortcut.kt │ │ │ │ │ │ ├── RealmVariable.kt │ │ │ │ │ │ ├── RealmWidget.kt │ │ │ │ │ │ └── RealmWorkingDirectory.kt │ │ │ │ └── settings │ │ │ │ │ ├── SessionInfoStore.kt │ │ │ │ │ ├── Settings.kt │ │ │ │ │ └── UserPreferences.kt │ │ │ │ ├── exceptions │ │ │ │ ├── ActionException.kt │ │ │ │ ├── BrowserNotFoundException.kt │ │ │ │ ├── ClientCertException.kt │ │ │ │ ├── DialogCancellationException.kt │ │ │ │ ├── DigestAuthException.kt │ │ │ │ ├── FailedToAccessFileException.kt │ │ │ │ ├── InvalidBearerAuthException.kt │ │ │ │ ├── InvalidContentTypeException.kt │ │ │ │ ├── InvalidHeaderException.kt │ │ │ │ ├── InvalidProxyException.kt │ │ │ │ ├── InvalidUrlException.kt │ │ │ │ ├── JavaScriptException.kt │ │ │ │ ├── MissingLocationPermissionException.kt │ │ │ │ ├── NoActivityAvailableException.kt │ │ │ │ ├── NoIpAddressException.kt │ │ │ │ ├── ResponseTooLargeException.kt │ │ │ │ ├── TreatAsFailureException.kt │ │ │ │ ├── UserAbortException.kt │ │ │ │ └── UserException.kt │ │ │ │ ├── extensions │ │ │ │ ├── ComposeExtensions.kt │ │ │ │ ├── DataExtensions.kt │ │ │ │ ├── ModelExtensions.kt │ │ │ │ ├── RepositoryExtensions.kt │ │ │ │ ├── StringExtensions.kt │ │ │ │ ├── VariableExtensions.kt │ │ │ │ └── WorkerExtensions.kt │ │ │ │ ├── history │ │ │ │ ├── HistoryCleanUpWorker.kt │ │ │ │ ├── HistoryEvent.kt │ │ │ │ └── HistoryEventLogger.kt │ │ │ │ ├── http │ │ │ │ ├── CertificatePin.kt │ │ │ │ ├── ClientCertKeyManager.kt │ │ │ │ ├── CompressionInterceptor.kt │ │ │ │ ├── CookieManager.kt │ │ │ │ ├── DigestAuthenticator.kt │ │ │ │ ├── ErrorResponse.kt │ │ │ │ ├── Extensions.kt │ │ │ │ ├── FileUploadManager.kt │ │ │ │ ├── FormMultipartRequestBody.kt │ │ │ │ ├── HttpClientFactory.kt │ │ │ │ ├── HttpHeaders.kt │ │ │ │ ├── HttpRequester.kt │ │ │ │ ├── HttpRequesterWorker.kt │ │ │ │ ├── HttpStatus.kt │ │ │ │ ├── ProxyParams.kt │ │ │ │ ├── RequestBuilder.kt │ │ │ │ ├── RequestData.kt │ │ │ │ ├── RequestUtil.kt │ │ │ │ ├── ResponseFileStorage.kt │ │ │ │ ├── ResponseFileStorageFactory.kt │ │ │ │ ├── ServiceDiscoveryHelper.kt │ │ │ │ ├── ShortcutResponse.kt │ │ │ │ ├── StreamRequestBody.kt │ │ │ │ ├── TLSEnabledSSLSocketFactory.kt │ │ │ │ └── UnsafeTrustManager.kt │ │ │ │ ├── icons │ │ │ │ ├── EditImageContract.kt │ │ │ │ ├── IconFilterProvider.kt │ │ │ │ ├── Icons.kt │ │ │ │ └── ShortcutIcon.kt │ │ │ │ ├── import_export │ │ │ │ ├── CurlExporter.kt │ │ │ │ ├── ExportBaseLoader.kt │ │ │ │ ├── ExportFormat.kt │ │ │ │ ├── Exporter.kt │ │ │ │ ├── ImportException.kt │ │ │ │ ├── ImportExport.kt │ │ │ │ ├── ImportExportDefaultsProvider.kt │ │ │ │ ├── ImportMigrator.kt │ │ │ │ ├── ImportMode.kt │ │ │ │ ├── ImportPasswordException.kt │ │ │ │ ├── ImportVersionMismatchException.kt │ │ │ │ ├── Importer.kt │ │ │ │ ├── InvalidFileException.kt │ │ │ │ ├── MigrationExtensions.kt │ │ │ │ ├── OpenFilePickerForExportContract.kt │ │ │ │ ├── migration │ │ │ │ │ ├── CategoryBackgroundMigration.kt │ │ │ │ │ ├── CategoryLayoutMigration.kt │ │ │ │ │ ├── FileUploadTypeMigration.kt │ │ │ │ │ ├── ImportMigration.kt │ │ │ │ │ ├── ParameterTypeMigration.kt │ │ │ │ │ ├── RemoveLegacyActionsMigration.kt │ │ │ │ │ ├── ReplaceActionsWithScriptsMigration.kt │ │ │ │ │ ├── ReplaceVariableKeysWithIdsMigration.kt │ │ │ │ │ ├── RequireConfirmationMigration.kt │ │ │ │ │ ├── ResponseActionMigration.kt │ │ │ │ │ ├── ResponseHandlingMigration.kt │ │ │ │ │ └── WorkingDirectoryMigration.kt │ │ │ │ └── models │ │ │ │ │ ├── ImportExportBase.kt │ │ │ │ │ ├── ImportExportCategory.kt │ │ │ │ │ ├── ImportExportCertificatePin.kt │ │ │ │ │ ├── ImportExportFileUploadOptions.kt │ │ │ │ │ ├── ImportExportHeader.kt │ │ │ │ │ ├── ImportExportParameter.kt │ │ │ │ │ ├── ImportExportResponseHandling.kt │ │ │ │ │ ├── ImportExportSection.kt │ │ │ │ │ ├── ImportExportShortcut.kt │ │ │ │ │ ├── ImportExportVariable.kt │ │ │ │ │ └── ImportExportWorkingDirectory.kt │ │ │ │ ├── navigation │ │ │ │ ├── NavigationArgStore.kt │ │ │ │ ├── NavigationDestination.kt │ │ │ │ ├── NavigationExtensions.kt │ │ │ │ └── NavigationRoot.kt │ │ │ │ ├── notifications │ │ │ │ ├── NotificationChannelIds.kt │ │ │ │ ├── NotificationChannelManager.kt │ │ │ │ └── Notifier.kt │ │ │ │ ├── plugin │ │ │ │ ├── Input.kt │ │ │ │ ├── Output.kt │ │ │ │ ├── PluginEditActivity.kt │ │ │ │ ├── SessionMonitor.kt │ │ │ │ ├── TaskerIntent.kt │ │ │ │ ├── TaskerTaskPickerContract.kt │ │ │ │ ├── TriggerShortcutActionHelper.kt │ │ │ │ ├── TriggerShortcutActionRunner.kt │ │ │ │ └── VariableHelper.kt │ │ │ │ ├── scheduling │ │ │ │ ├── AlarmScheduler.kt │ │ │ │ ├── ExecutionBroadcastReceiver.kt │ │ │ │ ├── ExecutionScheduler.kt │ │ │ │ ├── ExecutionSchedulerWorker.kt │ │ │ │ └── ExecutionWorker.kt │ │ │ │ ├── scripting │ │ │ │ ├── ActionAlias.kt │ │ │ │ ├── CleanupHandler.kt │ │ │ │ ├── CodeTransformer.kt │ │ │ │ ├── ExecutionContext.kt │ │ │ │ ├── ResponseObjectFactory.kt │ │ │ │ ├── ResultHandler.kt │ │ │ │ ├── ScriptExecutor.kt │ │ │ │ ├── actions │ │ │ │ │ ├── ActionFactory.kt │ │ │ │ │ ├── ActionRunnable.kt │ │ │ │ │ └── types │ │ │ │ │ │ ├── Action.kt │ │ │ │ │ │ ├── ActionType.kt │ │ │ │ │ │ ├── Base64DecodeAction.kt │ │ │ │ │ │ ├── Base64DecodeActionType.kt │ │ │ │ │ │ ├── Base64EncodeAction.kt │ │ │ │ │ │ ├── Base64EncodeActionType.kt │ │ │ │ │ │ ├── ChangeDescriptionAction.kt │ │ │ │ │ │ ├── ChangeDescriptionActionType.kt │ │ │ │ │ │ ├── ChangeIconAction.kt │ │ │ │ │ │ ├── ChangeIconActionType.kt │ │ │ │ │ │ ├── ConfirmAction.kt │ │ │ │ │ │ ├── ConfirmActionType.kt │ │ │ │ │ │ ├── CopyToClipboardAction.kt │ │ │ │ │ │ ├── CopyToClipboardActionType.kt │ │ │ │ │ │ ├── DialogAction.kt │ │ │ │ │ │ ├── DialogActionType.kt │ │ │ │ │ │ ├── EnqueueShortcutAction.kt │ │ │ │ │ │ ├── EnqueueShortcutActionType.kt │ │ │ │ │ │ ├── ExecuteShortcutAction.kt │ │ │ │ │ │ ├── ExecuteShortcutActionType.kt │ │ │ │ │ │ ├── GetClipboardContentAction.kt │ │ │ │ │ │ ├── GetClipboardContentActionType.kt │ │ │ │ │ │ ├── GetDirectoryAction.kt │ │ │ │ │ │ ├── GetDirectoryActionType.kt │ │ │ │ │ │ ├── GetLocationAction.kt │ │ │ │ │ │ ├── GetLocationActionType.kt │ │ │ │ │ │ ├── GetVariableAction.kt │ │ │ │ │ │ ├── GetVariableActionType.kt │ │ │ │ │ │ ├── HashAction.kt │ │ │ │ │ │ ├── HashActionType.kt │ │ │ │ │ │ ├── HmacAction.kt │ │ │ │ │ │ ├── HmacActionType.kt │ │ │ │ │ │ ├── HtmlDecodeAction.kt │ │ │ │ │ │ ├── HtmlDecodeActionType.kt │ │ │ │ │ │ ├── HtmlEncodeAction.kt │ │ │ │ │ │ ├── HtmlEncodeActionType.kt │ │ │ │ │ │ ├── LogEventAction.kt │ │ │ │ │ │ ├── LogEventActionType.kt │ │ │ │ │ │ ├── NotificationAction.kt │ │ │ │ │ │ ├── NotificationActionType.kt │ │ │ │ │ │ ├── OpenAppAction.kt │ │ │ │ │ │ ├── OpenAppActionType.kt │ │ │ │ │ │ ├── OpenURLAction.kt │ │ │ │ │ │ ├── OpenURLActionType.kt │ │ │ │ │ │ ├── ParseHTMLAction.kt │ │ │ │ │ │ ├── ParseHTMLActionType.kt │ │ │ │ │ │ ├── ParseXMLAction.kt │ │ │ │ │ │ ├── ParseXMLActionType.kt │ │ │ │ │ │ ├── PlaySoundAction.kt │ │ │ │ │ │ ├── PlaySoundActionType.kt │ │ │ │ │ │ ├── PromptAction.kt │ │ │ │ │ │ ├── PromptActionType.kt │ │ │ │ │ │ ├── PromptColorAction.kt │ │ │ │ │ │ ├── PromptColorActionType.kt │ │ │ │ │ │ ├── PromptDateAction.kt │ │ │ │ │ │ ├── PromptDateActionType.kt │ │ │ │ │ │ ├── PromptNumberAction.kt │ │ │ │ │ │ ├── PromptNumberActionType.kt │ │ │ │ │ │ ├── PromptPasswordAction.kt │ │ │ │ │ │ ├── PromptPasswordActionType.kt │ │ │ │ │ │ ├── PromptTimeAction.kt │ │ │ │ │ │ ├── PromptTimeActionType.kt │ │ │ │ │ │ ├── RenameShortcutAction.kt │ │ │ │ │ │ ├── RenameShortcutActionType.kt │ │ │ │ │ │ ├── ScanBarcodeAction.kt │ │ │ │ │ │ ├── ScanBarcodeActionType.kt │ │ │ │ │ │ ├── SelectionAction.kt │ │ │ │ │ │ ├── SelectionActionType.kt │ │ │ │ │ │ ├── SendHttpRequestAction.kt │ │ │ │ │ │ ├── SendHttpRequestActionType.kt │ │ │ │ │ │ ├── SendIntentAction.kt │ │ │ │ │ │ ├── SendIntentActionType.kt │ │ │ │ │ │ ├── SendMQTTMessagesAction.kt │ │ │ │ │ │ ├── SendMQTTMessagesActionType.kt │ │ │ │ │ │ ├── SendTCPPacketAction.kt │ │ │ │ │ │ ├── SendTCPPacketActionType.kt │ │ │ │ │ │ ├── SendUDPPacketAction.kt │ │ │ │ │ │ ├── SendUDPPacketActionType.kt │ │ │ │ │ │ ├── SetCategoryHiddenAction.kt │ │ │ │ │ │ ├── SetCategoryHiddenActionType.kt │ │ │ │ │ │ ├── SetResultAction.kt │ │ │ │ │ │ ├── SetResultActionType.kt │ │ │ │ │ │ ├── SetShortcutHiddenAction.kt │ │ │ │ │ │ ├── SetShortcutHiddenActionType.kt │ │ │ │ │ │ ├── SetVariableAction.kt │ │ │ │ │ │ ├── SetVariableActionType.kt │ │ │ │ │ │ ├── SetWireguardTunnelStateAction.kt │ │ │ │ │ │ ├── SetWireguardTunnelStateActionType.kt │ │ │ │ │ │ ├── ShareTextAction.kt │ │ │ │ │ │ ├── ShareTextActionType.kt │ │ │ │ │ │ ├── TextToSpeechAction.kt │ │ │ │ │ │ ├── TextToSpeechActionType.kt │ │ │ │ │ │ ├── ToHexStringAction.kt │ │ │ │ │ │ ├── ToHexStringActionType.kt │ │ │ │ │ │ ├── ToStringAction.kt │ │ │ │ │ │ ├── ToStringActionType.kt │ │ │ │ │ │ ├── ToastAction.kt │ │ │ │ │ │ ├── ToastActionType.kt │ │ │ │ │ │ ├── TriggerTaskerTaskAction.kt │ │ │ │ │ │ ├── TriggerTaskerTaskActionType.kt │ │ │ │ │ │ ├── UUIDAction.kt │ │ │ │ │ │ ├── UUIDActionType.kt │ │ │ │ │ │ ├── VibrateAction.kt │ │ │ │ │ │ ├── VibrateActionType.kt │ │ │ │ │ │ ├── WaitAction.kt │ │ │ │ │ │ ├── WaitActionType.kt │ │ │ │ │ │ ├── WakeOnLanAction.kt │ │ │ │ │ │ ├── WakeOnLanActionType.kt │ │ │ │ │ │ ├── WifiIPAction.kt │ │ │ │ │ │ ├── WifiIPActionType.kt │ │ │ │ │ │ ├── WifiSSIDAction.kt │ │ │ │ │ │ ├── WifiSSIDActionType.kt │ │ │ │ │ │ ├── WindowAction.kt │ │ │ │ │ │ └── WindowActionType.kt │ │ │ │ └── shortcuts │ │ │ │ │ ├── ShortcutPlaceholderProvider.kt │ │ │ │ │ └── TriggerShortcutManager.kt │ │ │ │ ├── tiles │ │ │ │ └── QuickTileService.kt │ │ │ │ ├── usecases │ │ │ │ ├── GetUsedCustomIconsUseCase.kt │ │ │ │ └── GetUsedWorkingDirectoryIdsUseCase.kt │ │ │ │ ├── utils │ │ │ │ ├── ActivityCloser.kt │ │ │ │ ├── ActivityProvider.kt │ │ │ │ ├── AppOverlayUtil.kt │ │ │ │ ├── ApplicationModule.kt │ │ │ │ ├── BarcodeScannerContract.kt │ │ │ │ ├── BiometricUtil.kt │ │ │ │ ├── CameraUtil.kt │ │ │ │ ├── ClientCertUtil.kt │ │ │ │ ├── ColorUtil.kt │ │ │ │ ├── DarkThemeHelper.kt │ │ │ │ ├── ErrorFormatter.kt │ │ │ │ ├── ExternalURLs.kt │ │ │ │ ├── FileTypeUtil.kt │ │ │ │ ├── FilesCleanupWorker.kt │ │ │ │ ├── GsonUtil.kt │ │ │ │ ├── HTMLUtil.kt │ │ │ │ ├── IconUtil.kt │ │ │ │ ├── IntegrationUtil.kt │ │ │ │ ├── IntentUtil.kt │ │ │ │ ├── LauncherShortcutManager.kt │ │ │ │ ├── LauncherShortcutUpdater.kt │ │ │ │ ├── LocaleHelper.kt │ │ │ │ ├── LocationLookup.kt │ │ │ │ ├── MqttUtil.kt │ │ │ │ ├── NetworkUtil.kt │ │ │ │ ├── NoCloseInputStream.kt │ │ │ │ ├── PermissionManager.kt │ │ │ │ ├── PickDirectoryContract.kt │ │ │ │ ├── PlayServicesUtil.kt │ │ │ │ ├── RestrictionsUtil.kt │ │ │ │ ├── RingtonePickerContract.kt │ │ │ │ ├── SearchUtil.kt │ │ │ │ ├── SecondaryLauncherManager.kt │ │ │ │ ├── ShareUtil.kt │ │ │ │ ├── SimpleXMLContentHandler.kt │ │ │ │ ├── SizeLimitedReader.kt │ │ │ │ ├── SyntaxHighlighter.kt │ │ │ │ ├── Toaster.kt │ │ │ │ ├── UserAgentProvider.kt │ │ │ │ ├── Validation.kt │ │ │ │ ├── VersionUtil.kt │ │ │ │ ├── VibrationUtil.kt │ │ │ │ ├── WakeOnLanUtil.kt │ │ │ │ └── WorkingDirectoryUtil.kt │ │ │ │ ├── variables │ │ │ │ ├── ResolvedVariableValues.kt │ │ │ │ ├── VariableManager.kt │ │ │ │ ├── VariablePlaceholderProvider.kt │ │ │ │ ├── VariableResolver.kt │ │ │ │ ├── Variables.kt │ │ │ │ └── types │ │ │ │ │ ├── ClipboardType.kt │ │ │ │ │ ├── ColorType.kt │ │ │ │ │ ├── ConstantType.kt │ │ │ │ │ ├── DateType.kt │ │ │ │ │ ├── IncrementType.kt │ │ │ │ │ ├── NumberType.kt │ │ │ │ │ ├── PasswordType.kt │ │ │ │ │ ├── SelectType.kt │ │ │ │ │ ├── SliderType.kt │ │ │ │ │ ├── TextType.kt │ │ │ │ │ ├── TimeType.kt │ │ │ │ │ ├── TimestampType.kt │ │ │ │ │ ├── ToggleType.kt │ │ │ │ │ ├── UUIDType.kt │ │ │ │ │ ├── VariableType.kt │ │ │ │ │ └── VariableTypeFactory.kt │ │ │ │ └── widget │ │ │ │ ├── WidgetManager.kt │ │ │ │ └── WidgetProvider.kt │ │ └── res │ │ │ ├── drawable-nodpi │ │ │ ├── black_alarm_clock.webp │ │ │ ├── black_announcement.webp │ │ │ ├── black_armor.webp │ │ │ ├── black_attachment.webp │ │ │ ├── black_balloon.webp │ │ │ ├── black_bat_man.webp │ │ │ ├── black_battery_charging.webp │ │ │ ├── black_beamed_notes.webp │ │ │ ├── black_beep_signal.webp │ │ │ ├── black_bell.webp │ │ │ ├── black_beverage_coffee.webp │ │ │ ├── black_bluetooth.webp │ │ │ ├── black_book_open.webp │ │ │ ├── black_box.webp │ │ │ ├── black_business_man.webp │ │ │ ├── black_butterfly.webp │ │ │ ├── black_button.webp │ │ │ ├── black_cake.webp │ │ │ ├── black_calendar_date.webp │ │ │ ├── black_camera.webp │ │ │ ├── black_car.webp │ │ │ ├── black_cat.webp │ │ │ ├── black_cctv_camera.webp │ │ │ ├── black_cd.webp │ │ │ ├── black_check.webp │ │ │ ├── black_chef_cap.webp │ │ │ ├── black_clean.webp │ │ │ ├── black_clock.webp │ │ │ ├── black_close.webp │ │ │ ├── black_cloud.webp │ │ │ ├── black_color.webp │ │ │ ├── black_command_mac.webp │ │ │ ├── black_command_refresh.webp │ │ │ ├── black_cooker.webp │ │ │ ├── black_cursor.webp │ │ │ ├── black_cutlery_fork_knife.webp │ │ │ ├── black_cycling.webp │ │ │ ├── black_danger.webp │ │ │ ├── black_data_edit.webp │ │ │ ├── black_data_information.webp │ │ │ ├── black_delete.webp │ │ │ ├── black_device_bell.webp │ │ │ ├── black_device_calculator.webp │ │ │ ├── black_dice.webp │ │ │ ├── black_display_brightness.webp │ │ │ ├── black_display_contrast.webp │ │ │ ├── black_document.webp │ │ │ ├── black_dog.webp │ │ │ ├── black_driller.webp │ │ │ ├── black_dvd.webp │ │ │ ├── black_energy_saving_bulb_1.webp │ │ │ ├── black_energy_saving_bulb_2.webp │ │ │ ├── black_feather.webp │ │ │ ├── black_film.webp │ │ │ ├── black_finger_print.webp │ │ │ ├── black_fire.webp │ │ │ ├── black_fish.webp │ │ │ ├── black_floppy.webp │ │ │ ├── black_flower.webp │ │ │ ├── black_folder_sharing.webp │ │ │ ├── black_foot_print.webp │ │ │ ├── black_footprint.webp │ │ │ ├── black_fuel_station.webp │ │ │ ├── black_gift.webp │ │ │ ├── black_globe.webp │ │ │ ├── black_gramaphone.webp │ │ │ ├── black_graph.webp │ │ │ ├── black_guitar.webp │ │ │ ├── black_hand.webp │ │ │ ├── black_hat.webp │ │ │ ├── black_headphone.webp │ │ │ ├── black_heart.webp │ │ │ ├── black_help.webp │ │ │ ├── black_hour_glass.webp │ │ │ ├── black_house.webp │ │ │ ├── black_houses.webp │ │ │ ├── black_identity_card.webp │ │ │ ├── black_instrument_barometer.webp │ │ │ ├── black_instrument_round_bottom_flask.webp │ │ │ ├── black_instrument_telescope.webp │ │ │ ├── black_internet.webp │ │ │ ├── black_ipad.webp │ │ │ ├── black_iris.webp │ │ │ ├── black_joystick.webp │ │ │ ├── black_key_access.webp │ │ │ ├── black_keyboard.webp │ │ │ ├── black_knight.webp │ │ │ ├── black_lan.webp │ │ │ ├── black_laptop.webp │ │ │ ├── black_latitude.webp │ │ │ ├── black_laugh.webp │ │ │ ├── black_left_arrow.webp │ │ │ ├── black_light.webp │ │ │ ├── black_light_bulb.webp │ │ │ ├── black_linear_gauge.webp │ │ │ ├── black_link.webp │ │ │ ├── black_linux.webp │ │ │ ├── black_lock.webp │ │ │ ├── black_logout.webp │ │ │ ├── black_loud_speaker.webp │ │ │ ├── black_mac_pc.webp │ │ │ ├── black_magnet.webp │ │ │ ├── black_mail.webp │ │ │ ├── black_map_location.webp │ │ │ ├── black_media_back.webp │ │ │ ├── black_media_end.webp │ │ │ ├── black_media_fast_forward.webp │ │ │ ├── black_media_pause.webp │ │ │ ├── black_media_play.webp │ │ │ ├── black_messages.webp │ │ │ ├── black_microphone.webp │ │ │ ├── black_microsoft_windows.webp │ │ │ ├── black_minus.webp │ │ │ ├── black_mobile_phone.webp │ │ │ ├── black_moon.webp │ │ │ ├── black_mouse.webp │ │ │ ├── black_movie.webp │ │ │ ├── black_network_sharing.webp │ │ │ ├── black_new.webp │ │ │ ├── black_next.webp │ │ │ ├── black_office.webp │ │ │ ├── black_outlet_plug.webp │ │ │ ├── black_palm_tree.webp │ │ │ ├── black_password.webp │ │ │ ├── black_penguin.webp │ │ │ ├── black_phone.webp │ │ │ ├── black_photograph.webp │ │ │ ├── black_picture.webp │ │ │ ├── black_picture_frame.webp │ │ │ ├── black_pine_tree.webp │ │ │ ├── black_planet.webp │ │ │ ├── black_plug.webp │ │ │ ├── black_plus.webp │ │ │ ├── black_power_1.webp │ │ │ ├── black_power_2.webp │ │ │ ├── black_printer.webp │ │ │ ├── black_printer_2.webp │ │ │ ├── black_puzzles.webp │ │ │ ├── black_quarter_note.webp │ │ │ ├── black_recorded_media.webp │ │ │ ├── black_rectangle.webp │ │ │ ├── black_refrigerator.webp │ │ │ ├── black_reload.webp │ │ │ ├── black_remote_control.webp │ │ │ ├── black_road_backward.webp │ │ │ ├── black_road_forward.webp │ │ │ ├── black_robot.webp │ │ │ ├── black_sad.webp │ │ │ ├── black_satellite.webp │ │ │ ├── black_search.webp │ │ │ ├── black_settings.webp │ │ │ ├── black_shape12.webp │ │ │ ├── black_shape6.webp │ │ │ ├── black_shape_cube.webp │ │ │ ├── black_shape_lightning.webp │ │ │ ├── black_shape_peace.webp │ │ │ ├── black_shape_spade.webp │ │ │ ├── black_shape_square.webp │ │ │ ├── black_shape_star.webp │ │ │ ├── black_shape_triangle.webp │ │ │ ├── black_sleepy.webp │ │ │ ├── black_smile.webp │ │ │ ├── black_smoking_zone.webp │ │ │ ├── black_snack_doughnut.webp │ │ │ ├── black_sofa.webp │ │ │ ├── black_solar.webp │ │ │ ├── black_spaceship.webp │ │ │ ├── black_speaker_volume.webp │ │ │ ├── black_speech.webp │ │ │ ├── black_sports.webp │ │ │ ├── black_squirrel.webp │ │ │ ├── black_swap_down.webp │ │ │ ├── black_swap_left.webp │ │ │ ├── black_swap_right.webp │ │ │ ├── black_swap_up.webp │ │ │ ├── black_sword.webp │ │ │ ├── black_synchronize.webp │ │ │ ├── black_table_fan.webp │ │ │ ├── black_table_lamp.webp │ │ │ ├── black_tag.webp │ │ │ ├── black_tape_recorder.webp │ │ │ ├── black_target.webp │ │ │ ├── black_telephone.webp │ │ │ ├── black_television.webp │ │ │ ├── black_tent.webp │ │ │ ├── black_thunder.webp │ │ │ ├── black_toolbox.webp │ │ │ ├── black_tools.webp │ │ │ ├── black_torch.webp │ │ │ ├── black_toy.webp │ │ │ ├── black_transport_school_bus.webp │ │ │ ├── black_tube.webp │ │ │ ├── black_turtle.webp │ │ │ ├── black_umbrella.webp │ │ │ ├── black_university.webp │ │ │ ├── black_usb.webp │ │ │ ├── black_user_female.webp │ │ │ ├── black_user_male.webp │ │ │ ├── black_view.webp │ │ │ ├── black_voicemail.webp │ │ │ ├── black_volume_high.webp │ │ │ ├── black_volume_low.webp │ │ │ ├── black_volume_mute.webp │ │ │ ├── black_waiting_popup.webp │ │ │ ├── black_warning_message.webp │ │ │ ├── black_washing_machine.webp │ │ │ ├── black_water_tap.webp │ │ │ ├── black_weather.webp │ │ │ ├── black_webcam.webp │ │ │ ├── black_windows_pc.webp │ │ │ ├── black_yin_yang.webp │ │ │ └── ic_launcher.png │ │ │ ├── drawable │ │ │ ├── bitsies_add.xml │ │ │ ├── bitsies_alarm.xml │ │ │ ├── bitsies_announcement.xml │ │ │ ├── bitsies_application.xml │ │ │ ├── bitsies_archive.xml │ │ │ ├── bitsies_attach.xml │ │ │ ├── bitsies_auction.xml │ │ │ ├── bitsies_bank.xml │ │ │ ├── bitsies_basketball.xml │ │ │ ├── bitsies_batterydead.xml │ │ │ ├── bitsies_batteryfull.xml │ │ │ ├── bitsies_batteryhalf.xml │ │ │ ├── bitsies_batterylow.xml │ │ │ ├── bitsies_bin.xml │ │ │ ├── bitsies_boat.xml │ │ │ ├── bitsies_book.xml │ │ │ ├── bitsies_bookmark.xml │ │ │ ├── bitsies_brush.xml │ │ │ ├── bitsies_bus.xml │ │ │ ├── bitsies_calendar.xml │ │ │ ├── bitsies_camera.xml │ │ │ ├── bitsies_cancel.xml │ │ │ ├── bitsies_car.xml │ │ │ ├── bitsies_cargo.xml │ │ │ ├── bitsies_cassette.xml │ │ │ ├── bitsies_character.xml │ │ │ ├── bitsies_chartbar.xml │ │ │ ├── bitsies_chartpie.xml │ │ │ ├── bitsies_city.xml │ │ │ ├── bitsies_clipboard.xml │ │ │ ├── bitsies_clock.xml │ │ │ ├── bitsies_cloud.xml │ │ │ ├── bitsies_computer.xml │ │ │ ├── bitsies_controls.xml │ │ │ ├── bitsies_copy.xml │ │ │ ├── bitsies_couch.xml │ │ │ ├── bitsies_crown.xml │ │ │ ├── bitsies_cup.xml │ │ │ ├── bitsies_cut.xml │ │ │ ├── bitsies_dashboard.xml │ │ │ ├── bitsies_diskette.xml │ │ │ ├── bitsies_document.xml │ │ │ ├── bitsies_documentedit.xml │ │ │ ├── bitsies_dollar.xml │ │ │ ├── bitsies_download.xml │ │ │ ├── bitsies_drink.xml │ │ │ ├── bitsies_earth.xml │ │ │ ├── bitsies_enter.xml │ │ │ ├── bitsies_exit.xml │ │ │ ├── bitsies_experiment.xml │ │ │ ├── bitsies_female.xml │ │ │ ├── bitsies_fire.xml │ │ │ ├── bitsies_fish.xml │ │ │ ├── bitsies_flagblue.xml │ │ │ ├── bitsies_flaggreen.xml │ │ │ ├── bitsies_flagred.xml │ │ │ ├── bitsies_flagyellow.xml │ │ │ ├── bitsies_flower.xml │ │ │ ├── bitsies_folder.xml │ │ │ ├── bitsies_food.xml │ │ │ ├── bitsies_football.xml │ │ │ ├── bitsies_glasses.xml │ │ │ ├── bitsies_gun.xml │ │ │ ├── bitsies_hamburger.xml │ │ │ ├── bitsies_headphones.xml │ │ │ ├── bitsies_heart.xml │ │ │ ├── bitsies_home.xml │ │ │ ├── bitsies_image.xml │ │ │ ├── bitsies_info.xml │ │ │ ├── bitsies_invisible.xml │ │ │ ├── bitsies_jewel.xml │ │ │ ├── bitsies_joypad.xml │ │ │ ├── bitsies_joystick.xml │ │ │ ├── bitsies_key.xml │ │ │ ├── bitsies_keyboard.xml │ │ │ ├── bitsies_lightbulb.xml │ │ │ ├── bitsies_lightning.xml │ │ │ ├── bitsies_location.xml │ │ │ ├── bitsies_locked.xml │ │ │ ├── bitsies_magnifier.xml │ │ │ ├── bitsies_mail.xml │ │ │ ├── bitsies_male.xml │ │ │ ├── bitsies_mastercard.xml │ │ │ ├── bitsies_medalbronze.xml │ │ │ ├── bitsies_medalgold.xml │ │ │ ├── bitsies_medalsilver.xml │ │ │ ├── bitsies_message.xml │ │ │ ├── bitsies_microphone.xml │ │ │ ├── bitsies_mobile.xml │ │ │ ├── bitsies_money.xml │ │ │ ├── bitsies_mouse.xml │ │ │ ├── bitsies_music.xml │ │ │ ├── bitsies_mute.xml │ │ │ ├── bitsies_news.xml │ │ │ ├── bitsies_pen.xml │ │ │ ├── bitsies_piano.xml │ │ │ ├── bitsies_pin.xml │ │ │ ├── bitsies_pizza.xml │ │ │ ├── bitsies_plane.xml │ │ │ ├── bitsies_pricetag.xml │ │ │ ├── bitsies_print.xml │ │ │ ├── bitsies_prize.xml │ │ │ ├── bitsies_quote.xml │ │ │ ├── bitsies_remove.xml │ │ │ ├── bitsies_sandglass.xml │ │ │ ├── bitsies_savings.xml │ │ │ ├── bitsies_scroll.xml │ │ │ ├── bitsies_settings.xml │ │ │ ├── bitsies_share.xml │ │ │ ├── bitsies_shirt.xml │ │ │ ├── bitsies_shoppingbasket.xml │ │ │ ├── bitsies_shoppingcart.xml │ │ │ ├── bitsies_shutdown.xml │ │ │ ├── bitsies_sliders.xml │ │ │ ├── bitsies_snow.xml │ │ │ ├── bitsies_star.xml │ │ │ ├── bitsies_stats.xml │ │ │ ├── bitsies_success.xml │ │ │ ├── bitsies_suitcase.xml │ │ │ ├── bitsies_sun.xml │ │ │ ├── bitsies_sword.xml │ │ │ ├── bitsies_syringe.xml │ │ │ ├── bitsies_thumbsdown.xml │ │ │ ├── bitsies_thumbsup.xml │ │ │ ├── bitsies_trafficcone.xml │ │ │ ├── bitsies_tree.xml │ │ │ ├── bitsies_umbrella.xml │ │ │ ├── bitsies_unlocked.xml │ │ │ ├── bitsies_upload.xml │ │ │ ├── bitsies_user.xml │ │ │ ├── bitsies_useradd.xml │ │ │ ├── bitsies_useredit.xml │ │ │ ├── bitsies_userremove.xml │ │ │ ├── bitsies_users.xml │ │ │ ├── bitsies_video.xml │ │ │ ├── bitsies_visa.xml │ │ │ ├── bitsies_visible.xml │ │ │ ├── bitsies_volume.xml │ │ │ ├── bitsies_wallet.xml │ │ │ ├── bitsies_warning.xml │ │ │ ├── bitsies_water.xml │ │ │ ├── bitsies_wifi.xml │ │ │ ├── bitsies_wrench.xml │ │ │ ├── black_cheese.xml │ │ │ ├── black_circle.xml │ │ │ ├── black_shape_square2.xml │ │ │ ├── flat_color_anchor.xml │ │ │ ├── flat_color_aperture.xml │ │ │ ├── flat_color_arrow_down.xml │ │ │ ├── flat_color_arrow_up.xml │ │ │ ├── flat_color_art.xml │ │ │ ├── flat_color_barchart.xml │ │ │ ├── flat_color_batteryfull.xml │ │ │ ├── flat_color_batterylow.xml │ │ │ ├── flat_color_bike.xml │ │ │ ├── flat_color_biker.xml │ │ │ ├── flat_color_bikewheel.xml │ │ │ ├── flat_color_blimp.xml │ │ │ ├── flat_color_bolt.xml │ │ │ ├── flat_color_bomb.xml │ │ │ ├── flat_color_booklet.xml │ │ │ ├── flat_color_bookshelf.xml │ │ │ ├── flat_color_briefcase.xml │ │ │ ├── flat_color_brightness.xml │ │ │ ├── flat_color_brightness_2.xml │ │ │ ├── flat_color_brightness_3.xml │ │ │ ├── flat_color_brightness_4.xml │ │ │ ├── flat_color_brightness_5.xml │ │ │ ├── flat_color_brightness_6.xml │ │ │ ├── flat_color_brightness_7.xml │ │ │ ├── flat_color_browser.xml │ │ │ ├── flat_color_brush_pencil.xml │ │ │ ├── flat_color_calculator.xml │ │ │ ├── flat_color_calendar.xml │ │ │ ├── flat_color_camera.xml │ │ │ ├── flat_color_car.xml │ │ │ ├── flat_color_cart.xml │ │ │ ├── flat_color_carwheel.xml │ │ │ ├── flat_color_caution.xml │ │ │ ├── flat_color_chat.xml │ │ │ ├── flat_color_check.xml │ │ │ ├── flat_color_circlecompass.xml │ │ │ ├── flat_color_clapboard.xml │ │ │ ├── flat_color_clipboard.xml │ │ │ ├── flat_color_clock.xml │ │ │ ├── flat_color_cloud.xml │ │ │ ├── flat_color_cmyk.xml │ │ │ ├── flat_color_colorwheel.xml │ │ │ ├── flat_color_compass.xml │ │ │ ├── flat_color_compose.xml │ │ │ ├── flat_color_computer.xml │ │ │ ├── flat_color_cone.xml │ │ │ ├── flat_color_contacts.xml │ │ │ ├── flat_color_contrast.xml │ │ │ ├── flat_color_countdown.xml │ │ │ ├── flat_color_creditcard.xml │ │ │ ├── flat_color_crop.xml │ │ │ ├── flat_color_crossroads.xml │ │ │ ├── flat_color_cruise.xml │ │ │ ├── flat_color_cursor.xml │ │ │ ├── flat_color_denied.xml │ │ │ ├── flat_color_dev.xml │ │ │ ├── flat_color_die.xml │ │ │ ├── flat_color_document.xml │ │ │ ├── flat_color_dolly.xml │ │ │ ├── flat_color_door.xml │ │ │ ├── flat_color_download.xml │ │ │ ├── flat_color_easel.xml │ │ │ ├── flat_color_email.xml │ │ │ ├── flat_color_eye.xml │ │ │ ├── flat_color_eyedropper.xml │ │ │ ├── flat_color_fashion.xml │ │ │ ├── flat_color_filmreel.xml │ │ │ ├── flat_color_filmroll.xml │ │ │ ├── flat_color_flag.xml │ │ │ ├── flat_color_flame.xml │ │ │ ├── flat_color_flash.xml │ │ │ ├── flat_color_flower.xml │ │ │ ├── flat_color_focus.xml │ │ │ ├── flat_color_folder.xml │ │ │ ├── flat_color_frames.xml │ │ │ ├── flat_color_gamecontroller.xml │ │ │ ├── flat_color_gas.xml │ │ │ ├── flat_color_gear.xml │ │ │ ├── flat_color_genius.xml │ │ │ ├── flat_color_global.xml │ │ │ ├── flat_color_globe.xml │ │ │ ├── flat_color_gps.xml │ │ │ ├── flat_color_hazard.xml │ │ │ ├── flat_color_heart.xml │ │ │ ├── flat_color_helicopter.xml │ │ │ ├── flat_color_hotair.xml │ │ │ ├── flat_color_hourglass.xml │ │ │ ├── flat_color_image.xml │ │ │ ├── flat_color_interstate.xml │ │ │ ├── flat_color_key.xml │ │ │ ├── flat_color_keyboard.xml │ │ │ ├── flat_color_lens.xml │ │ │ ├── flat_color_lightbulb.xml │ │ │ ├── flat_color_lightbulb_2.xml │ │ │ ├── flat_color_lightbulb_3.xml │ │ │ ├── flat_color_lightbulb_4.xml │ │ │ ├── flat_color_lightbulb_5.xml │ │ │ ├── flat_color_lightbulb_6.xml │ │ │ ├── flat_color_lightbulb_7.xml │ │ │ ├── flat_color_loading.xml │ │ │ ├── flat_color_location.xml │ │ │ ├── flat_color_locked.xml │ │ │ ├── flat_color_magicwand.xml │ │ │ ├── flat_color_magnifyingglass.xml │ │ │ ├── flat_color_mail.xml │ │ │ ├── flat_color_map.xml │ │ │ ├── flat_color_megaphone.xml │ │ │ ├── flat_color_megaphone2.xml │ │ │ ├── flat_color_memorycard.xml │ │ │ ├── flat_color_merge.xml │ │ │ ├── flat_color_mic.xml │ │ │ ├── flat_color_microphone.xml │ │ │ ├── flat_color_money.xml │ │ │ ├── flat_color_motorcycle.xml │ │ │ ├── flat_color_music.xml │ │ │ ├── flat_color_news.xml │ │ │ ├── flat_color_paintbrush.xml │ │ │ ├── flat_color_paintbrush2.xml │ │ │ ├── flat_color_paintcan.xml │ │ │ ├── flat_color_paintroller.xml │ │ │ ├── flat_color_parachute.xml │ │ │ ├── flat_color_pencil.xml │ │ │ ├── flat_color_phone.xml │ │ │ ├── flat_color_pie_chart.xml │ │ │ ├── flat_color_pin.xml │ │ │ ├── flat_color_pin2.xml │ │ │ ├── flat_color_plane.xml │ │ │ ├── flat_color_play.xml │ │ │ ├── flat_color_plugin.xml │ │ │ ├── flat_color_polaroid.xml │ │ │ ├── flat_color_polaroidcamera.xml │ │ │ ├── flat_color_polaroids.xml │ │ │ ├── flat_color_power.xml │ │ │ ├── flat_color_present.xml │ │ │ ├── flat_color_profle.xml │ │ │ ├── flat_color_quote.xml │ │ │ ├── flat_color_racingflags.xml │ │ │ ├── flat_color_radio.xml │ │ │ ├── flat_color_radiotower.xml │ │ │ ├── flat_color_rainbow.xml │ │ │ ├── flat_color_rgb.xml │ │ │ ├── flat_color_ribbon.xml │ │ │ ├── flat_color_roadblock.xml │ │ │ ├── flat_color_rocket.xml │ │ │ ├── flat_color_rulertriangle.xml │ │ │ ├── flat_color_running.xml │ │ │ ├── flat_color_sailboat.xml │ │ │ ├── flat_color_schooolbus.xml │ │ │ ├── flat_color_scissors.xml │ │ │ ├── flat_color_scooter.xml │ │ │ ├── flat_color_security.xml │ │ │ ├── flat_color_selftimer.xml │ │ │ ├── flat_color_settings.xml │ │ │ ├── flat_color_shipwheel.xml │ │ │ ├── flat_color_shoeprints.xml │ │ │ ├── flat_color_shop.xml │ │ │ ├── flat_color_skateboard.xml │ │ │ ├── flat_color_slr.xml │ │ │ ├── flat_color_smartphone.xml │ │ │ ├── flat_color_spaceshuttle.xml │ │ │ ├── flat_color_speaker.xml │ │ │ ├── flat_color_speedometer.xml │ │ │ ├── flat_color_spraypaint.xml │ │ │ ├── flat_color_stack.xml │ │ │ ├── flat_color_star.xml │ │ │ ├── flat_color_steeringwheel.xml │ │ │ ├── flat_color_stop.xml │ │ │ ├── flat_color_sub.xml │ │ │ ├── flat_color_submarine.xml │ │ │ ├── flat_color_support.xml │ │ │ ├── flat_color_swatches.xml │ │ │ ├── flat_color_tablet.xml │ │ │ ├── flat_color_takeoff.xml │ │ │ ├── flat_color_target.xml │ │ │ ├── flat_color_taxi.xml │ │ │ ├── flat_color_toolbox.xml │ │ │ ├── flat_color_tools.xml │ │ │ ├── flat_color_tractor.xml │ │ │ ├── flat_color_traffic.xml │ │ │ ├── flat_color_train.xml │ │ │ ├── flat_color_travelerbag.xml │ │ │ ├── flat_color_trends.xml │ │ │ ├── flat_color_tripod.xml │ │ │ ├── flat_color_trophy.xml │ │ │ ├── flat_color_truck.xml │ │ │ ├── flat_color_tv.xml │ │ │ ├── flat_color_typography.xml │ │ │ ├── flat_color_ufo.xml │ │ │ ├── flat_color_umbrella.xml │ │ │ ├── flat_color_unicycle.xml │ │ │ ├── flat_color_unlocked.xml │ │ │ ├── flat_color_upload.xml │ │ │ ├── flat_color_video.xml │ │ │ ├── flat_color_videocameraclassic.xml │ │ │ ├── flat_color_videocameracompact.xml │ │ │ ├── flat_color_volume.xml │ │ │ ├── flat_color_water.xml │ │ │ ├── flat_color_weather.xml │ │ │ ├── flat_color_windsock.xml │ │ │ ├── flat_color_windy.xml │ │ │ ├── flat_color_x.xml │ │ │ ├── flat_color_zoomin.xml │ │ │ ├── flat_color_zoomout.xml │ │ │ ├── flat_grey_anchor.xml │ │ │ ├── flat_grey_aperture.xml │ │ │ ├── flat_grey_arrow_down.xml │ │ │ ├── flat_grey_arrow_up.xml │ │ │ ├── flat_grey_art.xml │ │ │ ├── flat_grey_barchart.xml │ │ │ ├── flat_grey_batteryfull.xml │ │ │ ├── flat_grey_batterylow.xml │ │ │ ├── flat_grey_bike.xml │ │ │ ├── flat_grey_biker.xml │ │ │ ├── flat_grey_bikewheel.xml │ │ │ ├── flat_grey_blimp.xml │ │ │ ├── flat_grey_bolt.xml │ │ │ ├── flat_grey_bomb.xml │ │ │ ├── flat_grey_booklet.xml │ │ │ ├── flat_grey_bookshelf.xml │ │ │ ├── flat_grey_briefcase.xml │ │ │ ├── flat_grey_brightness.xml │ │ │ ├── flat_grey_browser.xml │ │ │ ├── flat_grey_brush_pencil.xml │ │ │ ├── flat_grey_calculator.xml │ │ │ ├── flat_grey_calendar.xml │ │ │ ├── flat_grey_camera.xml │ │ │ ├── flat_grey_car.xml │ │ │ ├── flat_grey_cart.xml │ │ │ ├── flat_grey_carwheel.xml │ │ │ ├── flat_grey_caution.xml │ │ │ ├── flat_grey_chat.xml │ │ │ ├── flat_grey_check.xml │ │ │ ├── flat_grey_circlecompass.xml │ │ │ ├── flat_grey_clapboard.xml │ │ │ ├── flat_grey_clipboard.xml │ │ │ ├── flat_grey_clock.xml │ │ │ ├── flat_grey_cloud.xml │ │ │ ├── flat_grey_cmyk.xml │ │ │ ├── flat_grey_colorwheel.xml │ │ │ ├── flat_grey_compass.xml │ │ │ ├── flat_grey_compose.xml │ │ │ ├── flat_grey_computer.xml │ │ │ ├── flat_grey_cone.xml │ │ │ ├── flat_grey_contacts.xml │ │ │ ├── flat_grey_contrast.xml │ │ │ ├── flat_grey_countdown.xml │ │ │ ├── flat_grey_creditcard.xml │ │ │ ├── flat_grey_crop.xml │ │ │ ├── flat_grey_crossroads.xml │ │ │ ├── flat_grey_cruise.xml │ │ │ ├── flat_grey_cursor.xml │ │ │ ├── flat_grey_denied.xml │ │ │ ├── flat_grey_dev.xml │ │ │ ├── flat_grey_document.xml │ │ │ ├── flat_grey_dolly.xml │ │ │ ├── flat_grey_door.xml │ │ │ ├── flat_grey_download.xml │ │ │ ├── flat_grey_easel.xml │ │ │ ├── flat_grey_email.xml │ │ │ ├── flat_grey_eye.xml │ │ │ ├── flat_grey_eyedropper.xml │ │ │ ├── flat_grey_fashion.xml │ │ │ ├── flat_grey_filmreel.xml │ │ │ ├── flat_grey_filmroll.xml │ │ │ ├── flat_grey_flag.xml │ │ │ ├── flat_grey_flame.xml │ │ │ ├── flat_grey_flash.xml │ │ │ ├── flat_grey_flower.xml │ │ │ ├── flat_grey_focus.xml │ │ │ ├── flat_grey_folder.xml │ │ │ ├── flat_grey_frames.xml │ │ │ ├── flat_grey_gamecontroller.xml │ │ │ ├── flat_grey_gas.xml │ │ │ ├── flat_grey_gear.xml │ │ │ ├── flat_grey_genius.xml │ │ │ ├── flat_grey_global.xml │ │ │ ├── flat_grey_globe.xml │ │ │ ├── flat_grey_gps.xml │ │ │ ├── flat_grey_hazard.xml │ │ │ ├── flat_grey_heart.xml │ │ │ ├── flat_grey_helicopter.xml │ │ │ ├── flat_grey_hotair.xml │ │ │ ├── flat_grey_hourglass.xml │ │ │ ├── flat_grey_image.xml │ │ │ ├── flat_grey_interstate.xml │ │ │ ├── flat_grey_key.xml │ │ │ ├── flat_grey_keyboard.xml │ │ │ ├── flat_grey_lens.xml │ │ │ ├── flat_grey_lightbulb.xml │ │ │ ├── flat_grey_loading.xml │ │ │ ├── flat_grey_location.xml │ │ │ ├── flat_grey_locked.xml │ │ │ ├── flat_grey_magicwand.xml │ │ │ ├── flat_grey_magnifyingglass.xml │ │ │ ├── flat_grey_mail.xml │ │ │ ├── flat_grey_map.xml │ │ │ ├── flat_grey_megaphone.xml │ │ │ ├── flat_grey_megaphone2.xml │ │ │ ├── flat_grey_memorycard.xml │ │ │ ├── flat_grey_merge.xml │ │ │ ├── flat_grey_mic.xml │ │ │ ├── flat_grey_microphone.xml │ │ │ ├── flat_grey_money.xml │ │ │ ├── flat_grey_motorcycle.xml │ │ │ ├── flat_grey_music.xml │ │ │ ├── flat_grey_news.xml │ │ │ ├── flat_grey_paintbrush.xml │ │ │ ├── flat_grey_paintbrush2.xml │ │ │ ├── flat_grey_paintcan.xml │ │ │ ├── flat_grey_paintroller.xml │ │ │ ├── flat_grey_parachute.xml │ │ │ ├── flat_grey_pencil.xml │ │ │ ├── flat_grey_phone.xml │ │ │ ├── flat_grey_piechart.xml │ │ │ ├── flat_grey_pin.xml │ │ │ ├── flat_grey_pin2.xml │ │ │ ├── flat_grey_plane.xml │ │ │ ├── flat_grey_play.xml │ │ │ ├── flat_grey_plugin.xml │ │ │ ├── flat_grey_polaroid.xml │ │ │ ├── flat_grey_polaroidcamera.xml │ │ │ ├── flat_grey_power.xml │ │ │ ├── flat_grey_present.xml │ │ │ ├── flat_grey_profle.xml │ │ │ ├── flat_grey_quote.xml │ │ │ ├── flat_grey_racingflags.xml │ │ │ ├── flat_grey_radio.xml │ │ │ ├── flat_grey_radiotower.xml │ │ │ ├── flat_grey_rainbow.xml │ │ │ ├── flat_grey_rgb.xml │ │ │ ├── flat_grey_ribbon.xml │ │ │ ├── flat_grey_roadblock.xml │ │ │ ├── flat_grey_rocket.xml │ │ │ ├── flat_grey_rulertriangle.xml │ │ │ ├── flat_grey_running.xml │ │ │ ├── flat_grey_sailboat.xml │ │ │ ├── flat_grey_schooolbus.xml │ │ │ ├── flat_grey_scissors.xml │ │ │ ├── flat_grey_scooter.xml │ │ │ ├── flat_grey_security.xml │ │ │ ├── flat_grey_selftimer.xml │ │ │ ├── flat_grey_settings.xml │ │ │ ├── flat_grey_shipwheel.xml │ │ │ ├── flat_grey_shoeprints.xml │ │ │ ├── flat_grey_shop.xml │ │ │ ├── flat_grey_skateboard.xml │ │ │ ├── flat_grey_smartphone.xml │ │ │ ├── flat_grey_spaceshuttle.xml │ │ │ ├── flat_grey_speaker.xml │ │ │ ├── flat_grey_speedometer.xml │ │ │ ├── flat_grey_spraypaint.xml │ │ │ ├── flat_grey_stack.xml │ │ │ ├── flat_grey_star.xml │ │ │ ├── flat_grey_steeringwheel.xml │ │ │ ├── flat_grey_stop.xml │ │ │ ├── flat_grey_sub.xml │ │ │ ├── flat_grey_submarine.xml │ │ │ ├── flat_grey_support.xml │ │ │ ├── flat_grey_swatches.xml │ │ │ ├── flat_grey_tablet.xml │ │ │ ├── flat_grey_takeoff.xml │ │ │ ├── flat_grey_target.xml │ │ │ ├── flat_grey_taxi.xml │ │ │ ├── flat_grey_toolbox.xml │ │ │ ├── flat_grey_tools.xml │ │ │ ├── flat_grey_tractor.xml │ │ │ ├── flat_grey_traffic.xml │ │ │ ├── flat_grey_train.xml │ │ │ ├── flat_grey_travelerbag.xml │ │ │ ├── flat_grey_trends.xml │ │ │ ├── flat_grey_tripod.xml │ │ │ ├── flat_grey_trophy.xml │ │ │ ├── flat_grey_truck.xml │ │ │ ├── flat_grey_tv.xml │ │ │ ├── flat_grey_typography.xml │ │ │ ├── flat_grey_ufo.xml │ │ │ ├── flat_grey_umbrella.xml │ │ │ ├── flat_grey_unicycle.xml │ │ │ ├── flat_grey_unlocked.xml │ │ │ ├── flat_grey_upload.xml │ │ │ ├── flat_grey_video.xml │ │ │ ├── flat_grey_videocameraclassic.xml │ │ │ ├── flat_grey_videocameracompact.xml │ │ │ ├── flat_grey_volume.xml │ │ │ ├── flat_grey_water.xml │ │ │ ├── flat_grey_weather.xml │ │ │ ├── flat_grey_windsock.xml │ │ │ ├── flat_grey_windy.xml │ │ │ ├── flat_grey_x.xml │ │ │ ├── flat_grey_zoomin.xml │ │ │ ├── flat_grey_zoomout.xml │ │ │ ├── freepik_accept.xml │ │ │ ├── freepik_add.xml │ │ │ ├── freepik_battery.xml │ │ │ ├── freepik_battery2.xml │ │ │ ├── freepik_battery3.xml │ │ │ ├── freepik_blender.xml │ │ │ ├── freepik_cancel.xml │ │ │ ├── freepik_check.xml │ │ │ ├── freepik_close.xml │ │ │ ├── freepik_coffee_machine.xml │ │ │ ├── freepik_cpu.xml │ │ │ ├── freepik_cube.xml │ │ │ ├── freepik_cursor.xml │ │ │ ├── freepik_download.xml │ │ │ ├── freepik_electric_car.xml │ │ │ ├── freepik_electronics.xml │ │ │ ├── freepik_fan.xml │ │ │ ├── freepik_gear.xml │ │ │ ├── freepik_heart.xml │ │ │ ├── freepik_home_security.xml │ │ │ ├── freepik_hourglass.xml │ │ │ ├── freepik_indicator.xml │ │ │ ├── freepik_lamp.xml │ │ │ ├── freepik_lamp2.xml │ │ │ ├── freepik_lamp3.xml │ │ │ ├── freepik_lamp4.xml │ │ │ ├── freepik_leaf.xml │ │ │ ├── freepik_minus.xml │ │ │ ├── freepik_modem.xml │ │ │ ├── freepik_music.xml │ │ │ ├── freepik_origami.xml │ │ │ ├── freepik_photo.xml │ │ │ ├── freepik_play_button.xml │ │ │ ├── freepik_plug.xml │ │ │ ├── freepik_power.xml │ │ │ ├── freepik_print.xml │ │ │ ├── freepik_projector.xml │ │ │ ├── freepik_rain.xml │ │ │ ├── freepik_rate.xml │ │ │ ├── freepik_rocket.xml │ │ │ ├── freepik_shout.xml │ │ │ ├── freepik_star.xml │ │ │ ├── freepik_target.xml │ │ │ ├── freepik_toaster.xml │ │ │ ├── freepik_tv.xml │ │ │ ├── freepik_tv2.xml │ │ │ ├── freepik_upload.xml │ │ │ ├── freepik_user.xml │ │ │ ├── freepik_wizard.xml │ │ │ ├── ic_control_flow.xml │ │ │ ├── ic_f_droid.xml │ │ │ ├── ic_files.xml │ │ │ ├── ic_gift.xml │ │ │ ├── ic_github_circle.xml │ │ │ ├── ic_google_play.xml │ │ │ ├── ic_handle_response.xml │ │ │ ├── ic_info.xml │ │ │ ├── ic_launcher_foreground.xml │ │ │ ├── ic_launcher_monochrome.xml │ │ │ ├── ic_misc.xml │ │ │ ├── ic_modify_shortcuts.xml │ │ │ ├── ic_network.xml │ │ │ ├── ic_quick_settings_tile.xml │ │ │ ├── ic_reddit.xml │ │ │ ├── ic_text_processing.xml │ │ │ ├── ic_user_interaction.xml │ │ │ ├── ic_variables.xml │ │ │ ├── image_placeholder.xml │ │ │ └── splash_screen.xml │ │ │ ├── layout │ │ │ ├── color_picker.xml │ │ │ ├── image_editor.xml │ │ │ └── widget.xml │ │ │ ├── mipmap │ │ │ └── ic_launcher.xml │ │ │ ├── raw │ │ │ └── keep.xml │ │ │ ├── values-ar │ │ │ └── strings.xml │ │ │ ├── values-ca │ │ │ └── strings.xml │ │ │ ├── values-cs │ │ │ └── strings.xml │ │ │ ├── values-de-rCH │ │ │ └── strings.xml │ │ │ ├── values-de │ │ │ ├── strings-untranslated.xml │ │ │ └── strings.xml │ │ │ ├── values-el │ │ │ └── strings.xml │ │ │ ├── values-en-rGB │ │ │ └── strings.xml │ │ │ ├── values-es-rMX │ │ │ └── strings.xml │ │ │ ├── values-es │ │ │ └── strings.xml │ │ │ ├── values-fa │ │ │ └── strings.xml │ │ │ ├── values-fr │ │ │ └── strings.xml │ │ │ ├── values-hu │ │ │ └── strings.xml │ │ │ ├── values-in │ │ │ └── strings.xml │ │ │ ├── values-it │ │ │ └── strings.xml │ │ │ ├── values-iw │ │ │ └── strings.xml │ │ │ ├── values-ja │ │ │ └── strings.xml │ │ │ ├── values-ko │ │ │ └── strings.xml │ │ │ ├── values-night │ │ │ └── colors.xml │ │ │ ├── values-nl │ │ │ └── strings.xml │ │ │ ├── values-pl │ │ │ └── strings.xml │ │ │ ├── values-pt-rBR │ │ │ └── strings.xml │ │ │ ├── values-pt │ │ │ └── strings.xml │ │ │ ├── values-ru │ │ │ └── strings.xml │ │ │ ├── values-tr │ │ │ └── strings.xml │ │ │ ├── values-vi │ │ │ └── strings.xml │ │ │ ├── values-zh-rCN │ │ │ └── strings.xml │ │ │ ├── values-zh-rTW │ │ │ └── strings.xml │ │ │ ├── values │ │ │ ├── arrays.xml │ │ │ ├── colors.xml │ │ │ ├── languages.xml │ │ │ ├── strings-untranslated.xml │ │ │ ├── strings.xml │ │ │ └── themes.xml │ │ │ └── xml │ │ │ ├── data_extraction_rules.xml │ │ │ ├── locales_config.xml │ │ │ ├── network_security_config.xml │ │ │ ├── provider_paths.xml │ │ │ ├── shortcuts.xml │ │ │ └── widget_info.xml │ │ ├── test │ │ ├── kotlin │ │ │ └── ch │ │ │ │ └── rmy │ │ │ │ └── android │ │ │ │ ├── framework │ │ │ │ └── extensions │ │ │ │ │ ├── StringExtensionsTest.kt │ │ │ │ │ └── UriExtensionsTest.kt │ │ │ │ ├── http_shortcuts │ │ │ │ ├── import_export │ │ │ │ │ └── ImporterTest.kt │ │ │ │ ├── scripting │ │ │ │ │ ├── CodeTransformerTest.kt │ │ │ │ │ ├── actions │ │ │ │ │ │ └── types │ │ │ │ │ │ │ └── SendIntentActionTest.kt │ │ │ │ │ └── shortcuts │ │ │ │ │ │ └── TriggerShortcutManagerTest.kt │ │ │ │ ├── usecases │ │ │ │ │ └── GetUsedWorkingDirectoriesUseCaseTest.kt │ │ │ │ ├── utils │ │ │ │ │ ├── GsonUtilTest.kt │ │ │ │ │ ├── MqttUtilTest.kt │ │ │ │ │ ├── SearchUtilTest.kt │ │ │ │ │ └── ValidationTest.kt │ │ │ │ └── variables │ │ │ │ │ └── VariableResolverTest.kt │ │ │ │ └── testutils │ │ │ │ ├── DefaultModels.kt │ │ │ │ └── ResourceLoader.kt │ │ └── resources │ │ │ └── shortcuts-v90.json │ │ ├── withCrashLogging │ │ └── kotlin │ │ │ └── ch │ │ │ └── rmy │ │ │ └── android │ │ │ └── http_shortcuts │ │ │ └── logging │ │ │ └── Logging.kt │ │ ├── withGoogleServices │ │ └── kotlin │ │ │ └── ch │ │ │ └── rmy │ │ │ └── android │ │ │ └── http_shortcuts │ │ │ └── utils │ │ │ └── PlayServicesUtilImpl.kt │ │ ├── withoutCrashLogging │ │ └── kotlin │ │ │ └── ch │ │ │ └── rmy │ │ │ └── android │ │ │ └── http_shortcuts │ │ │ └── logging │ │ │ └── Logging.kt │ │ └── withoutGoogleServices │ │ └── kotlin │ │ └── ch │ │ └── rmy │ │ └── android │ │ └── http_shortcuts │ │ └── utils │ │ └── PlayServicesUtilImpl.kt ├── build.gradle.kts ├── changelog_template.html ├── curl_command │ ├── build.gradle.kts │ └── src │ │ ├── main │ │ └── kotlin │ │ │ └── ch │ │ │ └── rmy │ │ │ └── curlcommand │ │ │ ├── CommandLineBuilder.kt │ │ │ ├── CommandParser.kt │ │ │ ├── CurlCommand.kt │ │ │ ├── CurlConstructor.kt │ │ │ └── CurlParser.kt │ │ └── test │ │ └── kotlin │ │ └── ch │ │ └── rmy │ │ └── curlcommand │ │ ├── CommandLineBuilderTest.kt │ │ ├── CommandParserTest.kt │ │ ├── CurlConstructorTest.kt │ │ └── CurlParserTest.kt ├── documentation_template.html ├── favicon_grabber │ ├── build.gradle.kts │ └── src │ │ └── main │ │ └── kotlin │ │ └── ch │ │ └── rmy │ │ └── favicongrabber │ │ ├── FaviconGrabber.kt │ │ ├── grabbers │ │ ├── Grabber.kt │ │ ├── ICOGrabber.kt │ │ ├── ManifestGrabber.kt │ │ └── PageMetaGrabber.kt │ │ ├── models │ │ ├── IconResult.kt │ │ ├── LinkTag.kt │ │ ├── ManifestIcon.kt │ │ └── ManifestRoot.kt │ │ └── utils │ │ ├── HTMLUtil.kt │ │ ├── HttpUtil.kt │ │ └── Sorting.kt ├── gradle.properties ├── gradle │ ├── libs.versions.toml │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── keystores │ └── development.jks ├── scripting │ ├── .gitignore │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src │ │ ├── main │ │ ├── AndroidManifest.xml │ │ └── kotlin │ │ │ └── ch │ │ │ └── rmy │ │ │ └── android │ │ │ └── scripting │ │ │ ├── JsFunction.kt │ │ │ ├── JsFunctionArgs.kt │ │ │ ├── JsObject.kt │ │ │ ├── JsValue.kt │ │ │ ├── ScriptingEngine.kt │ │ │ ├── ScriptingEngineFactory.kt │ │ │ ├── ScriptingException.kt │ │ │ ├── quickjs │ │ │ ├── QuickJsFunctionConverter.kt │ │ │ ├── QuickJsObject.kt │ │ │ ├── QuickJsObjectBuilder.kt │ │ │ ├── QuickJsScriptingEngine.kt │ │ │ └── QuickJsValueWrapper.kt │ │ │ └── utils │ │ │ └── DataExtensions.kt │ │ └── test │ │ └── kotlin │ │ └── ch │ │ └── rmy │ │ └── android │ │ └── scripting │ │ └── utils │ │ └── DataExtensionsTest.kt ├── settings.gradle.kts └── stability_config.conf ├── LICENCE ├── README.md ├── assets ├── documentation │ ├── scripting │ │ ├── 01.png │ │ └── 02.png │ └── shortcuts │ │ └── 01.png ├── f_droid.svg ├── github.svg ├── icons_keywords.txt ├── logo.png ├── play_store.svg └── screenshots │ ├── 01.png │ ├── 02.png │ ├── 03.png │ ├── 04.png │ ├── 05.png │ ├── 06.png │ ├── 07.png │ ├── 08.png │ ├── 09.png │ ├── 10.png │ ├── 11.png │ ├── 12.png │ └── 13.png ├── docs ├── advanced.md ├── categories.md ├── directories.md ├── documentation.md ├── execution-flow.md ├── faq.md ├── import-export.md ├── index.md ├── introduction.md ├── permissions.md ├── privacy-policy.md ├── scripting-examples.md ├── scripting.md ├── shortcuts.md └── variables.md ├── metadata ├── de-DE │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt ├── en-US │ ├── full_description.txt │ ├── images │ │ ├── featureGraphic.png │ │ ├── icon.png │ │ └── phoneScreenshots │ │ │ ├── 1.png │ │ │ ├── 2.png │ │ │ ├── 3.png │ │ │ ├── 4.png │ │ │ ├── 5.png │ │ │ ├── 6.png │ │ │ ├── 7.png │ │ │ └── 8.png │ ├── short_description.txt │ └── title.txt ├── ja-JP │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt ├── ru-RU │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt └── zh-TW │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt └── scripts └── publish-docs.py /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: waboodoo 2 | custom: "https://www.paypal.me/waboodoo" 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | venv 3 | processed-docs/ 4 | crowdin.yml 5 | store_listings 6 | -------------------------------------------------------------------------------- /HTTPShortcuts/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{kt,kts}] 2 | ktlint_code_style = android_studio 3 | indent_size = 4 4 | insert_final_newline = true 5 | max_line_length = 150 6 | ktlint_function_naming_ignore_when_annotated_with = Composable 7 | ktlint_class_signature_rule_force_multiline_when_parameter_count_greater_or_equal_than = 3 8 | ktlint_function_signature_rule_force_multiline_when_parameter_count_greater_or_equal_than = 3 9 | ktlint_standard_package-name = disabled 10 | ktlint_standard_function-signature = disabled 11 | ij_kotlin_allow_trailing_comma_on_call_site = true 12 | ij_kotlin_allow_trailing_comma = true 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/.gitignore: -------------------------------------------------------------------------------- 1 | .gradle/ 2 | local.properties 3 | .idea/ 4 | .kotlin/ 5 | build/ 6 | *.iml 7 | *.aab 8 | app/release 9 | app/releaseFull 10 | /captures/ -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/assets/docs/assets/scripting/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/assets/docs/assets/scripting/01.png -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/assets/docs/assets/scripting/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/assets/docs/assets/scripting/02.png -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/assets/docs/assets/shortcuts/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/assets/docs/assets/shortcuts/01.png -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/assets/icons_keywords: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/assets/icons_keywords -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/framework/extensions/ActivityExtensions.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.framework.extensions 2 | 3 | import android.app.Activity 4 | 5 | fun Activity.finishWithoutAnimation() { 6 | overridePendingTransition(0, 0) 7 | finish() 8 | overridePendingTransition(0, 0) 9 | } 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/framework/extensions/CoroutineExtensions.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.framework.extensions 2 | 3 | import kotlin.coroutines.Continuation 4 | import kotlin.coroutines.resume 5 | import kotlinx.coroutines.flow.Flow 6 | import kotlinx.coroutines.flow.first 7 | 8 | fun Continuation.resume() { 9 | resume(Unit) 10 | } 11 | 12 | suspend fun Flow.awaitNonNull(): T = 13 | first { it != null }!! 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/framework/extensions/ServiceExtensions.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.framework.extensions 2 | 3 | import android.app.Service 4 | import android.content.Context 5 | 6 | val Service.context: Context 7 | get() = this 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/framework/extensions/UriExtensions.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.framework.extensions 2 | 3 | import android.net.Uri 4 | 5 | val Uri.isWebUrl 6 | get() = scheme.run { equals("http", ignoreCase = true) || equals("https", ignoreCase = true) } 7 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/framework/extensions/ViewModelExtensions.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.framework.extensions 2 | 3 | import android.app.Application 4 | import android.content.Context 5 | import androidx.lifecycle.AndroidViewModel 6 | 7 | val AndroidViewModel.context: Context 8 | get() = getApplication().applicationContext 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/framework/navigation/NavigationRequest.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.framework.navigation 2 | 3 | interface NavigationRequest { 4 | val route: String 5 | } 6 | 7 | data class NavigationRequestImpl( 8 | override val route: String, 9 | ) : NavigationRequest 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/framework/ui/IntentBuilder.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.framework.ui 2 | 3 | import android.content.Context 4 | import android.content.Intent 5 | 6 | interface IntentBuilder { 7 | fun build(context: Context): Intent 8 | } 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/framework/utils/WebViewChecker.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.framework.utils 2 | 3 | import android.webkit.CookieManager 4 | 5 | object WebViewChecker { 6 | fun isWebViewAvailable(): Boolean = 7 | try { 8 | // Try to access a harmless method on the WebView. This will fail if no WebView is installed. 9 | CookieManager.getInstance() 10 | true 11 | } catch (_: Exception) { 12 | false 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/framework/utils/localization/StaticLocalizable.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.framework.utils.localization 2 | 3 | import android.content.Context 4 | 5 | data class StaticLocalizable(val string: String) : Localizable { 6 | override fun localize(context: Context): CharSequence = 7 | string 8 | } 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/framework/viewmodel/ViewModelCancellationException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.framework.viewmodel 2 | 3 | class ViewModelCancellationException : Exception() 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/framework/viewmodel/ViewModelScope.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.framework.viewmodel 2 | 3 | import kotlinx.coroutines.CoroutineScope 4 | 5 | interface ViewModelScope : CoroutineScope { 6 | 7 | val viewState: ViewState 8 | 9 | suspend fun withProgressTracking(operation: suspend () -> Unit) 10 | 11 | suspend fun updateViewState(mutation: ViewState.() -> ViewState) 12 | 13 | fun skipAction(): Nothing { 14 | throw ViewModelCancellationException() 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/Constants.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts 2 | 3 | object Constants { 4 | const val SHORTCUT_NAME_MAX_LENGTH = 50 5 | const val SHORTCUT_DESCRIPTION_MAX_LENGTH = 200 6 | const val CATEGORY_NAME_MAX_LENGTH = 50 7 | } 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/about/AboutViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.about 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class AboutViewState( 7 | val versionNumber: String, 8 | val fDroidVisible: Boolean, 9 | val changeLogDialogPermanentlyHidden: Boolean, 10 | val changeLogDialogVisible: Boolean = false, 11 | val deviceId: String, 12 | val crashReportingAllowed: Boolean, 13 | ) 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/categories/CategoriesViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.categories 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.activities.categories.models.CategoryListItem 5 | 6 | @Stable 7 | data class CategoriesViewState( 8 | val dialogState: CategoriesDialogState? = null, 9 | val categories: List, 10 | ) 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/categories/editor/CategoryEditorDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.categories.editor 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | sealed class CategoryEditorDialogState { 7 | data class ColorPicker(val initialColor: Int) : CategoryEditorDialogState() 8 | data object DiscardWarning : CategoryEditorDialogState() 9 | } 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/categories/editor/models/CategoryBackground.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.categories.editor.models 2 | 3 | enum class CategoryBackground { 4 | DEFAULT, 5 | COLOR, 6 | } 7 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/categories/sections/CategorySectionsDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.categories.sections 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.data.domains.sections.SectionId 5 | 6 | @Stable 7 | sealed class CategorySectionsDialogState { 8 | @Stable 9 | data object AddSection : CategorySectionsDialogState() 10 | 11 | @Stable 12 | data class EditSection( 13 | val id: SectionId, 14 | val name: String, 15 | ) : CategorySectionsDialogState() 16 | } 17 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/categories/sections/CategorySectionsViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.categories.sections 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.activities.categories.sections.models.CategorySectionListItem 5 | 6 | @Stable 7 | data class CategorySectionsViewState( 8 | val dialogState: CategorySectionsDialogState? = null, 9 | val sectionItems: List = emptyList(), 10 | ) 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/categories/sections/models/CategorySectionListItem.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.categories.sections.models 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.data.domains.sections.SectionId 5 | 6 | @Stable 7 | data class CategorySectionListItem( 8 | val id: SectionId, 9 | val name: String, 10 | ) 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/certpinning/CertPinningDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.certpinning 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | sealed class CertPinningDialogState { 7 | @Stable 8 | data object ContextMenu : CertPinningDialogState() 9 | 10 | @Stable 11 | data object ConfirmDeletion : CertPinningDialogState() 12 | 13 | @Stable 14 | data class Editor( 15 | val initialHash: String, 16 | val initialPattern: String, 17 | ) : CertPinningDialogState() 18 | } 19 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/certpinning/CertPinningViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.certpinning 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.activities.certpinning.models.Pin 5 | 6 | @Stable 7 | data class CertPinningViewState( 8 | val dialogState: CertPinningDialogState? = null, 9 | val pins: List = emptyList(), 10 | ) 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/certpinning/models/Pin.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.certpinning.models 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.data.domains.certificate_pins.CertificatePinId 5 | 6 | @Stable 7 | data class Pin( 8 | val id: CertificatePinId, 9 | val pattern: String, 10 | val hash: String, 11 | ) { 12 | @Stable 13 | fun formatted(): String = 14 | hash.chunked(2).joinToString(":") 15 | } 16 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/contact/MetaData.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.contact 2 | 3 | data class MetaData( 4 | val androidSdkVersion: Int, 5 | val appVersionCode: Long, 6 | val device: String, 7 | val language: String, 8 | val deviceId: String, 9 | val buildType: String, 10 | ) 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/curl_import/CurlImportViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.curl_import 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class CurlImportViewState( 7 | val submitButtonEnabled: Boolean = false, 8 | val unsupportedOptions: List = emptyList(), 9 | ) 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/documentation/DocumentationEvent.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.documentation 2 | 3 | import android.net.Uri 4 | import ch.rmy.android.framework.viewmodel.ViewModelEvent 5 | 6 | abstract class DocumentationEvent : ViewModelEvent() { 7 | data class OpenInBrowser(val url: Uri) : DocumentationEvent() 8 | } 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/documentation/DocumentationViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.documentation 2 | 3 | import android.net.Uri 4 | import androidx.compose.runtime.Stable 5 | 6 | @Stable 7 | data class DocumentationViewState( 8 | val url: Uri, 9 | ) 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/documentation/models/SearchDirection.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.documentation.models 2 | 3 | enum class SearchDirection { 4 | PREVIOUS, 5 | NEXT, 6 | } 7 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/ShortcutEditorEvent.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor 2 | 3 | import ch.rmy.android.framework.viewmodel.ViewModelEvent 4 | 5 | abstract class ShortcutEditorEvent : ViewModelEvent() { 6 | object FocusNameInputField : ShortcutEditorEvent() 7 | } 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/advancedsettings/AdvancedSettingsDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.advancedsettings 2 | 3 | import androidx.compose.runtime.Stable 4 | import kotlin.time.Duration 5 | 6 | @Stable 7 | sealed class AdvancedSettingsDialogState { 8 | @Stable 9 | data class TimeoutPicker( 10 | val initialTimeout: Duration, 11 | ) : AdvancedSettingsDialogState() 12 | } 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/advancedsettings/models/HostVerificationType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.advancedsettings.models 2 | 3 | enum class HostVerificationType { 4 | DEFAULT, 5 | SELF_SIGNED, 6 | TRUST_ALL, 7 | } 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/authentication/AuthenticationDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.authentication 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | sealed class AuthenticationDialogState { 7 | @Stable 8 | data object SelectClientCertType : AuthenticationDialogState() 9 | 10 | @Stable 11 | data class PasswordPromptForCertFile(val fileName: String) : AuthenticationDialogState() 12 | } 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/basicsettings/models/InstalledBrowser.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.basicsettings.models 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class InstalledBrowser( 7 | val packageName: String, 8 | val appName: String? = null, 9 | ) 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/executionsettings/ExecutionSettingsEvent.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.executionsettings 2 | 3 | import ch.rmy.android.framework.viewmodel.ViewModelEvent 4 | 5 | abstract class ExecutionSettingsEvent : ViewModelEvent() { 6 | object RequestNotificationPermission : ExecutionSettingsEvent() 7 | } 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/headers/RequestHeadersViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.headers 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.activities.editor.headers.models.HeaderListItem 5 | 6 | @Stable 7 | data class RequestHeadersViewState( 8 | val dialogState: RequestHeadersDialogState? = null, 9 | val headerItems: List = emptyList(), 10 | ) 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/headers/models/HeaderListItem.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.headers.models 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.data.domains.request_headers.RequestHeaderId 5 | 6 | @Stable 7 | data class HeaderListItem( 8 | val id: RequestHeaderId, 9 | val key: String, 10 | val value: String, 11 | ) 12 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/mqttmessages/MqttMessagesDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.mqttmessages 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | sealed class MqttMessagesDialogState { 7 | @Stable 8 | data object AddMessage : MqttMessagesDialogState() 9 | 10 | @Stable 11 | data class EditMessage( 12 | val id: Int, 13 | val topic: String, 14 | val payload: String, 15 | ) : MqttMessagesDialogState() 16 | } 17 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/mqttmessages/MqttMessagesViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.mqttmessages 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.activities.editor.mqttmessages.models.MqttMessagesListItem 5 | 6 | @Stable 7 | data class MqttMessagesViewState( 8 | val dialogState: MqttMessagesDialogState? = null, 9 | val messageItems: List = emptyList(), 10 | ) 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/mqttmessages/models/MqttMessagesListItem.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.mqttmessages.models 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class MqttMessagesListItem( 7 | val id: Int, 8 | val topic: String, 9 | val payload: String, 10 | ) 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/response/ResponseDisplayDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.response 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.data.enums.ResponseDisplayAction 5 | 6 | @Stable 7 | sealed class ResponseDisplayDialogState { 8 | data class SelectActions( 9 | val actions: Collection, 10 | ) : ResponseDisplayDialogState() 11 | } 12 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/scripting/ScriptingEvent.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.scripting 2 | 3 | import ch.rmy.android.framework.viewmodel.ViewModelEvent 4 | 5 | abstract class ScriptingEvent : ViewModelEvent() { 6 | data class InsertCodeSnippet( 7 | val textBeforeCursor: String, 8 | val textAfterCursor: String, 9 | ) : ScriptingEvent() 10 | } 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/scripting/codesnippets/CodeSnippetPickerEvent.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.scripting.codesnippets 2 | 3 | import ch.rmy.android.framework.viewmodel.ViewModelEvent 4 | 5 | abstract class CodeSnippetPickerEvent : ViewModelEvent() { 6 | object OpenRingtonePicker : CodeSnippetPickerEvent() 7 | object OpenTaskerTaskPicker : CodeSnippetPickerEvent() 8 | } 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/scripting/codesnippets/CodeSnippetPickerViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.scripting.codesnippets 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.activities.editor.scripting.codesnippets.models.ItemWrapper 5 | 6 | @Stable 7 | data class CodeSnippetPickerViewState( 8 | val dialogState: CodeSnippetPickerDialogState? = null, 9 | val items: List = emptyList(), 10 | val searchQuery: String = "", 11 | ) 12 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/scripting/codesnippets/models/CodeSnippetItem.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.scripting.codesnippets.models 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.framework.utils.localization.Localizable 5 | 6 | @Stable 7 | data class CodeSnippetItem( 8 | val title: Localizable, 9 | val description: Localizable?, 10 | val docRef: String?, 11 | val keywords: Set = emptySet(), 12 | val action: () -> Unit, 13 | ) 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/scripting/codesnippets/models/SectionItem.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.scripting.codesnippets.models 2 | 3 | import androidx.annotation.DrawableRes 4 | import androidx.compose.runtime.Stable 5 | import ch.rmy.android.framework.utils.localization.Localizable 6 | 7 | @Stable 8 | data class SectionItem( 9 | val title: Localizable, 10 | @DrawableRes val icon: Int, 11 | val codeSnippetItems: List, 12 | ) 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/scripting/models/CodeFieldType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.scripting.models 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | enum class CodeFieldType { 7 | PREPARE, 8 | SUCCESS, 9 | FAILURE, 10 | } 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/shortcuts/TriggerShortcutsViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.shortcuts 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.activities.editor.shortcuts.models.ShortcutListItem 5 | 6 | @Stable 7 | data class TriggerShortcutsViewState( 8 | val dialogState: TriggerShortcutsDialogState? = null, 9 | val shortcuts: List = emptyList(), 10 | ) 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/shortcuts/models/ShortcutListItem.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.shortcuts.models 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.framework.utils.localization.Localizable 5 | import ch.rmy.android.http_shortcuts.icons.ShortcutIcon 6 | 7 | @Stable 8 | data class ShortcutListItem( 9 | val id: ShortcutListItemId, 10 | val name: Localizable, 11 | val icon: ShortcutIcon, 12 | ) 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/execute/DialogHandle.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.execute 2 | 3 | interface DialogHandle { 4 | suspend fun showDialog(dialogState: ExecuteDialogState): T 5 | } 6 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/execute/ExecuteViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.execute 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class ExecuteViewState( 7 | val dialogState: ExecuteDialogState<*>? = null, 8 | val executionInProgress: Boolean = false, 9 | ) { 10 | val progressSpinnerVisible: Boolean 11 | get() = executionInProgress && dialogState == null 12 | } 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/execute/ExecutionFactory.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.execute 2 | 3 | import android.content.Context 4 | import ch.rmy.android.http_shortcuts.activities.execute.models.ExecutionParams 5 | import javax.inject.Inject 6 | 7 | class ExecutionFactory 8 | @Inject 9 | constructor( 10 | private val context: Context, 11 | ) { 12 | fun createExecution(params: ExecutionParams, dialogHandle: DialogHandle): Execution = 13 | Execution(context, params, dialogHandle) 14 | } 15 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/execute/ExternalRequest.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.execute 2 | 3 | import android.graphics.Bitmap 4 | import android.net.Uri 5 | 6 | sealed interface ExternalRequest { 7 | data class PickFiles(val multiple: Boolean) : ExternalRequest 8 | data object OpenCamera : ExternalRequest 9 | data class CropImage(val imageUri: Uri, val compressFormat: Bitmap.CompressFormat) : ExternalRequest 10 | data object ScanBarcode : ExternalRequest 11 | } 12 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/execute/ExternalResult.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.execute 2 | 3 | import android.net.Uri 4 | 5 | sealed interface ExternalResult { 6 | data class Files(val fileUris: List) : ExternalResult 7 | data class File(val fileUri: Uri) : ExternalResult 8 | data class BarcodeScanned(val content: String) : ExternalResult 9 | data object AppNotAvailable : ExternalResult 10 | data object Cancelled : ExternalResult 11 | } 12 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/execute/StartServiceEvent.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.execute 2 | 3 | import ch.rmy.android.framework.viewmodel.ViewModelEvent 4 | 5 | object StartServiceEvent : ViewModelEvent() 6 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/globalcode/GlobalScriptingDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.globalcode 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | sealed class GlobalScriptingDialogState { 7 | data object DiscardWarning : GlobalScriptingDialogState() 8 | } 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/globalcode/GlobalScriptingEvent.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.globalcode 2 | 3 | import ch.rmy.android.framework.viewmodel.ViewModelEvent 4 | 5 | abstract class GlobalScriptingEvent : ViewModelEvent() { 6 | data class InsertCodeSnippet( 7 | val textBeforeCursor: String, 8 | val textAfterCursor: String, 9 | ) : GlobalScriptingEvent() 10 | } 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/globalcode/GlobalScriptingViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.globalcode 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class GlobalScriptingViewState( 7 | val dialogState: GlobalScriptingDialogState? = null, 8 | val globalCode: String = "", 9 | val hasChanges: Boolean = false, 10 | ) { 11 | val saveButtonEnabled 12 | get() = hasChanges 13 | } 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/history/HistoryViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.history 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class HistoryViewState( 7 | val historyItems: List, 8 | val useRelativeTimes: Boolean, 9 | ) { 10 | val isTimeModeButtonEnabled: Boolean 11 | get() = historyItems.isNotEmpty() 12 | 13 | val isClearButtonEnabled: Boolean 14 | get() = historyItems.isNotEmpty() 15 | } 16 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/icons/IconPickerDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.icons 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.icons.ShortcutIcon 5 | 6 | @Stable 7 | sealed class IconPickerDialogState { 8 | data object SelectShape : IconPickerDialogState() 9 | 10 | data class DeleteIcon( 11 | val icon: ShortcutIcon.CustomIcon, 12 | val stillInUseWarning: Boolean, 13 | ) : IconPickerDialogState() 14 | 15 | data object BulkDelete : IconPickerDialogState() 16 | } 17 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/icons/IconPickerEvent.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.icons 2 | 3 | import android.net.Uri 4 | import ch.rmy.android.framework.viewmodel.ViewModelEvent 5 | import ch.rmy.android.http_shortcuts.activities.icons.models.IconShape 6 | 7 | abstract class IconPickerEvent : ViewModelEvent() { 8 | object ShowImagePicker : IconPickerEvent() 9 | data class ShowImageCropper(val imageUri: Uri, val shape: IconShape) : IconPickerEvent() 10 | } 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/icons/IconPickerListItem.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.icons 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.icons.ShortcutIcon 5 | 6 | @Stable 7 | data class IconPickerListItem( 8 | val icon: ShortcutIcon.CustomIcon, 9 | val isUnused: Boolean, 10 | ) 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/icons/IconPickerViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.icons 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class IconPickerViewState( 7 | val dialogState: IconPickerDialogState? = null, 8 | val icons: List, 9 | ) { 10 | val isDeleteButtonEnabled: Boolean 11 | get() = icons.any { it.isUnused } 12 | } 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/icons/models/IconShape.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.icons.models 2 | 3 | enum class IconShape { 4 | SQUARE, 5 | CIRCLE, 6 | } 7 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/importexport/ExportDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.importexport 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.framework.utils.localization.Localizable 5 | 6 | @Stable 7 | sealed class ExportDialogState { 8 | data class Progress(val text: Localizable) : ExportDialogState() 9 | 10 | data class Error(val message: Localizable) : ExportDialogState() 11 | 12 | data class ExportPasswordPrompt(val password: String) : ExportDialogState() 13 | } 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/importexport/ExportEvent.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.importexport 2 | 3 | import ch.rmy.android.framework.viewmodel.ViewModelEvent 4 | 5 | abstract class ExportEvent : ViewModelEvent() { 6 | object OpenFilePickerForExport : ExportEvent() 7 | } 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/importexport/ImportExportEvent.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.importexport 2 | 3 | import ch.rmy.android.framework.viewmodel.ViewModelEvent 4 | 5 | abstract class ImportExportEvent : ViewModelEvent() { 6 | object OpenFilePickerForImport : ImportExportEvent() 7 | } 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/importexport/ImportExportViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.importexport 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class ImportExportViewState( 7 | val dialogState: ImportExportDialogState? = null, 8 | val exportEnabled: Boolean, 9 | ) 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/main/MainEvent.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.main 2 | 3 | import ch.rmy.android.framework.viewmodel.ViewModelEvent 4 | import ch.rmy.android.http_shortcuts.data.domains.categories.CategoryId 5 | 6 | abstract class MainEvent : ViewModelEvent() { 7 | data class Restart(val activeCategoryId: CategoryId) : MainEvent() 8 | } 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/main/models/RecoveryInfo.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.main.models 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.data.domains.categories.CategoryId 5 | import ch.rmy.android.http_shortcuts.data.domains.shortcuts.ShortcutId 6 | 7 | @Stable 8 | data class RecoveryInfo( 9 | val shortcutName: String, 10 | val shortcutId: ShortcutId?, 11 | val categoryId: CategoryId, 12 | ) 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/misc/deeplink/DeepLinkDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.misc.deeplink 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.data.domains.shortcuts.ShortcutNameOrId 5 | 6 | @Stable 7 | sealed class DeepLinkDialogState { 8 | @Stable 9 | data object Instructions : DeepLinkDialogState() 10 | 11 | @Stable 12 | data class ShortcutNotFound( 13 | val shortcutNameOrId: ShortcutNameOrId, 14 | ) : DeepLinkDialogState() 15 | } 16 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/misc/deeplink/DeepLinkViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.misc.deeplink 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class DeepLinkViewState( 7 | val dialogState: DeepLinkDialogState, 8 | ) 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/misc/quick_settings_tile/QuickSettingsTileDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.misc.quick_settings_tile 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.data.dtos.ShortcutPlaceholder 5 | 6 | @Stable 7 | sealed class QuickSettingsTileDialogState { 8 | @Stable 9 | data object Instructions : QuickSettingsTileDialogState() 10 | 11 | @Stable 12 | data class PickShortcut( 13 | val shortcuts: List, 14 | ) : QuickSettingsTileDialogState() 15 | } 16 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/misc/quick_settings_tile/QuickSettingsTileViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.misc.quick_settings_tile 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class QuickSettingsTileViewState( 7 | val dialogState: QuickSettingsTileDialogState, 8 | ) 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/misc/second_launcher/SecondLauncherDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.misc.second_launcher 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.data.dtos.ShortcutPlaceholder 5 | 6 | @Stable 7 | sealed class SecondLauncherDialogState { 8 | @Stable 9 | data class PickShortcut( 10 | val shortcuts: List, 11 | ) : SecondLauncherDialogState() 12 | } 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/misc/second_launcher/SecondLauncherViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.misc.second_launcher 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class SecondLauncherViewState( 7 | val dialogState: SecondLauncherDialogState, 8 | ) 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/misc/share/ShareDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.misc.share 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.data.dtos.ShortcutPlaceholder 5 | 6 | @Stable 7 | sealed class ShareDialogState { 8 | @Stable 9 | data object Progress : ShareDialogState() 10 | 11 | @Stable 12 | data object Instructions : ShareDialogState() 13 | 14 | @Stable 15 | data class PickShortcut( 16 | val shortcuts: List, 17 | ) : ShareDialogState() 18 | } 19 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/misc/share/ShareViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.misc.share 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class ShareViewState( 7 | val dialogState: ShareDialogState? = null, 8 | ) 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/remote_edit/RemoteEditDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.remote_edit 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.framework.utils.localization.Localizable 5 | 6 | @Stable 7 | sealed class RemoteEditDialogState { 8 | data class Progress(val text: Localizable) : RemoteEditDialogState() 9 | data class Error(val message: Localizable) : RemoteEditDialogState() 10 | data class EditServerUrl( 11 | val currentServerAddress: String, 12 | ) : RemoteEditDialogState() 13 | } 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/remote_edit/RemoteEditViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.remote_edit 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class RemoteEditViewState( 7 | val dialogState: RemoteEditDialogState? = null, 8 | val deviceId: String, 9 | val password: String, 10 | val hostAddress: String, 11 | ) { 12 | val canUpload 13 | get() = password.isNotEmpty() 14 | 15 | val canDownload 16 | get() = password.isNotEmpty() 17 | } 18 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/response/DisplayResponseEvent.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.response 2 | 3 | import ch.rmy.android.framework.viewmodel.ViewModelEvent 4 | 5 | abstract class DisplayResponseEvent : ViewModelEvent() { 6 | data class PickFileForSaving(val mimeType: String?) : DisplayResponseEvent() 7 | object SuppressAutoFinish : DisplayResponseEvent() 8 | } 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/response/models/DetailInfo.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.response.models 2 | 3 | import androidx.compose.runtime.Stable 4 | import kotlin.time.Duration 5 | 6 | @Stable 7 | data class DetailInfo( 8 | val url: String?, 9 | val status: String?, 10 | val timing: Duration?, 11 | val headers: List>, 12 | ) { 13 | val hasGeneralInfo = url != null || status != null || timing != null 14 | } 15 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/response/models/TableData.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.response.models 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class TableData( 7 | val columns: List, 8 | val rows: List>, 9 | ) 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/troubleshooting/TroubleShootingDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.troubleshooting 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | sealed class TroubleShootingDialogState { 7 | data object ClearCookies : TroubleShootingDialogState() 8 | } 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/variables/VariablesViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.variables 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.activities.variables.models.GlobalVariableListItem 5 | 6 | @Stable 7 | data class VariablesViewState( 8 | val dialogState: GlobalVariablesDialogState? = null, 9 | val variables: List = emptyList(), 10 | ) { 11 | val isSortButtonEnabled 12 | get() = variables.size > 1 13 | } 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/variables/editor/GlobalVariableEditorDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.variables.editor 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | sealed class GlobalVariableEditorDialogState { 7 | @Stable 8 | data object DiscardWarning : GlobalVariableEditorDialogState() 9 | } 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/variables/editor/GlobalVariableEditorEvent.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.variables.editor 2 | 3 | import ch.rmy.android.framework.viewmodel.ViewModelEvent 4 | 5 | abstract class GlobalVariableEditorEvent : ViewModelEvent() { 6 | object FocusGlobalVariableKeyInput : GlobalVariableEditorEvent() 7 | } 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/variables/editor/models/ShareSupport.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.variables.editor.models 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | enum class ShareSupport(val text: Boolean = false, val title: Boolean = false) { 7 | TEXT(text = true), 8 | TITLE(title = true), 9 | TITLE_AND_TEXT(text = true, title = true), 10 | } 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/variables/editor/types/ColorTypeViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.variables.editor.types 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class ColorTypeViewState( 7 | val rememberValue: Boolean, 8 | ) : VariableTypeViewState 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/variables/editor/types/ConstantTypeViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.variables.editor.types 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class ConstantTypeViewState( 7 | val value: String, 8 | ) : VariableTypeViewState 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/variables/editor/types/DateTypeViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.variables.editor.types 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class DateTypeViewState( 7 | val dateFormat: String, 8 | val rememberValue: Boolean, 9 | val invalidFormat: Boolean = false, 10 | ) : VariableTypeViewState 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/variables/editor/types/IncrementTypeViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.variables.editor.types 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class IncrementTypeViewState( 7 | val value: String, 8 | ) : VariableTypeViewState 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/variables/editor/types/TextTypeViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.variables.editor.types 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class TextTypeViewState( 7 | val rememberValue: Boolean, 8 | val isMultilineCheckboxVisible: Boolean, 9 | val isMultiline: Boolean, 10 | ) : VariableTypeViewState 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/variables/editor/types/TimeTypeViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.variables.editor.types 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class TimeTypeViewState( 7 | val timeFormat: String, 8 | val rememberValue: Boolean, 9 | val invalidFormat: Boolean = false, 10 | ) : VariableTypeViewState 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/variables/editor/types/TimestampTypeViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.variables.editor.types 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class TimestampTypeViewState( 7 | val timeFormat: String, 8 | val invalidFormat: Boolean = false, 9 | ) : VariableTypeViewState 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/variables/editor/types/ToggleTypeViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.variables.editor.types 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class ToggleTypeViewState( 7 | val options: List, 8 | val tooFewOptionsError: Boolean = false, 9 | ) : VariableTypeViewState { 10 | @Stable 11 | data class OptionItem( 12 | val id: String, 13 | val text: String, 14 | ) 15 | } 16 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/variables/editor/types/VariableTypeViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.variables.editor.types 2 | 3 | sealed interface VariableTypeViewState 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/workingdirectories/WorkingDirectoriesEvent.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.workingdirectories 2 | 3 | import android.net.Uri 4 | import ch.rmy.android.framework.viewmodel.ViewModelEvent 5 | 6 | abstract class WorkingDirectoriesEvent : ViewModelEvent() { 7 | data class OpenDirectoryPicker(val initialDirectory: Uri? = null) : WorkingDirectoriesEvent() 8 | } 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/workingdirectories/WorkingDirectoriesViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.workingdirectories 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.activities.workingdirectories.models.WorkingDirectoryListItem 5 | 6 | @Stable 7 | data class WorkingDirectoriesViewState( 8 | val dialogState: WorkingDirectoriesDialogState? = null, 9 | val workingDirectories: List, 10 | ) 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/workingdirectories/models/WorkingDirectoryListItem.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.workingdirectories.models 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.data.domains.working_directories.WorkingDirectoryId 5 | import java.time.LocalDateTime 6 | 7 | @Stable 8 | data class WorkingDirectoryListItem( 9 | val id: WorkingDirectoryId, 10 | val name: String, 11 | val lastAccessed: LocalDateTime?, 12 | val unmounted: Boolean, 13 | ) 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/components/HelpText.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.components 2 | 3 | import androidx.compose.material3.Text 4 | import androidx.compose.runtime.Composable 5 | import androidx.compose.ui.Modifier 6 | 7 | @Composable 8 | fun HelpText( 9 | text: String, 10 | modifier: Modifier = Modifier, 11 | ) { 12 | Text( 13 | modifier = modifier, 14 | text = text, 15 | fontSize = FontSize.TINY, 16 | lineHeight = FontSize.SMALL, 17 | ) 18 | } 19 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/components/VerticalSpacer.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.components 2 | 3 | import androidx.compose.foundation.layout.Spacer 4 | import androidx.compose.foundation.layout.height 5 | import androidx.compose.runtime.Composable 6 | import androidx.compose.runtime.NonRestartableComposable 7 | import androidx.compose.ui.Modifier 8 | import androidx.compose.ui.unit.Dp 9 | 10 | @Composable 11 | @NonRestartableComposable 12 | fun VerticalSpacer(height: Dp) { 13 | Spacer(modifier = Modifier.height(height)) 14 | } 15 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/components/models/MenuEntry.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.components.models 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.icons.ShortcutIcon 5 | 6 | @Stable 7 | data class MenuEntry( 8 | val key: T, 9 | val name: String, 10 | val icon: ShortcutIcon? = null, 11 | ) 12 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/domains/categories/CategoryId.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.domains.categories 2 | 3 | typealias CategoryId = String 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/domains/certificate_pins/CertificatePinId.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.domains.certificate_pins 2 | 3 | typealias CertificatePinId = String 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/domains/pending_executions/ExecutionId.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.domains.pending_executions 2 | 3 | typealias ExecutionId = Int 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/domains/request_headers/RequestHeaderId.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.domains.request_headers 2 | 3 | typealias RequestHeaderId = Long 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/domains/request_parameters/RequestParameterId.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.domains.request_parameters 2 | 3 | typealias RequestParameterId = Long 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/domains/sections/SectionId.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.domains.sections 2 | 3 | typealias SectionId = String 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/domains/shortcuts/ShortcutId.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.domains.shortcuts 2 | 3 | typealias ShortcutId = String 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/domains/shortcuts/ShortcutNameOrId.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.domains.shortcuts 2 | 3 | typealias ShortcutNameOrId = String 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/domains/variables/GlobalVariableId.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.domains.variables 2 | 3 | typealias GlobalVariableId = String 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/domains/variables/VariableKey.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.domains.variables 2 | 3 | typealias VariableKey = String 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/domains/variables/VariableKeyOrId.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.domains.variables 2 | 3 | import ch.rmy.android.http_shortcuts.variables.Variables 4 | 5 | @JvmInline 6 | value class VariableKeyOrId(val value: String) { 7 | val globalVariableId: GlobalVariableId? 8 | get() = value.takeIf { Variables.isValidGlobalVariableId(value) } 9 | val variableKey: VariableKey? 10 | get() = value.takeIf { Variables.isValidVariableKey(it) } 11 | 12 | override fun toString(): String = 13 | value 14 | } 15 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/domains/working_directories/WorkingDirectoryId.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.domains.working_directories 2 | 3 | typealias WorkingDirectoryId = String 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/dtos/GlobalVariablePlaceholder.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.dtos 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.data.domains.variables.GlobalVariableId 5 | import ch.rmy.android.http_shortcuts.data.enums.VariableType 6 | 7 | @Stable 8 | data class GlobalVariablePlaceholder( 9 | val globalVariableId: GlobalVariableId, 10 | val variableKey: String, 11 | val variableType: VariableType, 12 | ) 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/dtos/LauncherShortcut.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.dtos 2 | 3 | import ch.rmy.android.http_shortcuts.icons.ShortcutIcon 4 | 5 | data class LauncherShortcut( 6 | val id: String, 7 | val name: String, 8 | val icon: ShortcutIcon, 9 | val isTextShareTarget: Boolean, 10 | val isFileShareTarget: Boolean, 11 | ) 12 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/dtos/ShortcutPlaceholder.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.dtos 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.icons.ShortcutIcon 5 | 6 | @Stable 7 | data class ShortcutPlaceholder( 8 | val id: String, 9 | val name: String, 10 | val description: String?, 11 | val icon: ShortcutIcon, 12 | ) 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/CategoryLayoutType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | enum class CategoryLayoutType(val type: String) { 7 | LINEAR_LIST("linear_list"), 8 | DENSE_GRID("dense_grid"), 9 | MEDIUM_GRID("medium_grid"), 10 | WIDE_GRID("wide_grid"), 11 | ; 12 | 13 | override fun toString() = 14 | type 15 | 16 | companion object { 17 | fun parse(type: String): CategoryLayoutType? = 18 | entries.find { it.type == type } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/ConfirmationType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | enum class ConfirmationType( 4 | val type: String, 5 | ) { 6 | SIMPLE("simple"), 7 | BIOMETRIC("biometric"), 8 | ; 9 | 10 | override fun toString() = 11 | type 12 | 13 | companion object { 14 | fun parse(type: String): ConfirmationType? = 15 | entries.find { it.type == type } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/FileUploadType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | enum class FileUploadType(val type: String) { 4 | FILE_PICKER("file_picker"), 5 | FILE_PICKER_MULTI("file_picker_multi"), 6 | CAMERA("camera"), 7 | FILE("stored_file"), 8 | STATIC_VALUE("static_value"), 9 | ; 10 | 11 | override fun toString() = 12 | type 13 | 14 | companion object { 15 | fun parse(type: String): FileUploadType? = 16 | entries.find { it.type == type } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/HttpMethod.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | enum class HttpMethod(val method: String) { 7 | GET("GET"), 8 | POST("POST"), 9 | PUT("PUT"), 10 | DELETE("DELETE"), 11 | PATCH("PATCH"), 12 | HEAD("HEAD"), 13 | OPTIONS("OPTIONS"), 14 | TRACE("TRACE"), 15 | ; 16 | 17 | companion object { 18 | fun parse(value: String): HttpMethod? = 19 | entries.find { it.method == value } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/IpVersion.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | enum class IpVersion(val version: String) { 4 | V4("4"), 5 | V6("6"), 6 | ; 7 | 8 | override fun toString() = 9 | version 10 | 11 | companion object { 12 | fun parse(version: String): IpVersion? = 13 | entries.find { it.version == version } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/ParameterType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | enum class ParameterType(val type: String) { 7 | STRING("string"), 8 | FILE("file"), 9 | ; 10 | 11 | override fun toString() = 12 | type 13 | 14 | companion object { 15 | fun parse(type: String): ParameterType? = 16 | entries.find { it.type == type } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/PendingExecutionType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | enum class PendingExecutionType { 4 | UNKNOWN, 5 | INITIAL_DELAY, 6 | RETRY_LATER, 7 | REPEAT, 8 | EXPLICITLY_SCHEDULED, 9 | NEW_INTENT, 10 | ; 11 | 12 | companion object { 13 | fun parse(name: String): PendingExecutionType? = 14 | entries.find { it.name == name } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/ProxyType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | enum class ProxyType( 4 | val type: String, 5 | val supportsAuthentication: Boolean, 6 | ) { 7 | 8 | HTTP("HTTP", supportsAuthentication = false), 9 | SOCKS("SOCKS", supportsAuthentication = true), 10 | ; 11 | 12 | override fun toString() = 13 | type 14 | 15 | companion object { 16 | fun parse(type: String): ProxyType? = 17 | entries.find { it.type == type } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/RequestBodyType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | enum class RequestBodyType(val type: String) { 4 | CUSTOM_TEXT("custom_text"), 5 | FORM_DATA("form_data"), 6 | X_WWW_FORM_URLENCODE("x_www_form_urlencode"), 7 | FILE("file"), 8 | ; 9 | 10 | override fun toString() = 11 | type 12 | 13 | companion object { 14 | fun parse(type: String): RequestBodyType? = 15 | entries.find { it.type == type } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/ResponseContentType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | enum class ResponseContentType(val key: String) { 7 | PLAIN_TEXT("plain_text"), 8 | JSON("json"), 9 | XML("xml"), 10 | HTML("html"), 11 | ; 12 | 13 | companion object { 14 | fun parse(key: String): ResponseContentType? = 15 | entries.find { it.key == key } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/ResponseDisplayAction.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | enum class ResponseDisplayAction(val key: String) { 7 | RERUN("rerun"), 8 | SHARE("share"), 9 | COPY("copy"), 10 | SAVE("save"), 11 | ; 12 | 13 | companion object { 14 | fun parse(key: String): ResponseDisplayAction? = 15 | entries.find { it.key == key } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/ResponseFailureOutput.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | enum class ResponseFailureOutput(val type: String) { 7 | DETAILED("detailed"), 8 | SIMPLE("simple"), 9 | NONE("none"), 10 | ; 11 | 12 | companion object { 13 | fun parse(value: String): ResponseFailureOutput? = 14 | entries.find { it.type == value } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/ResponseSuccessOutput.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | enum class ResponseSuccessOutput(val type: String) { 7 | RESPONSE("response"), 8 | MESSAGE("message"), 9 | NONE("none"), 10 | ; 11 | 12 | companion object { 13 | fun parse(value: String): ResponseSuccessOutput? = 14 | entries.find { it.type == value } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/ResponseUiType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | enum class ResponseUiType(val type: String) { 7 | TOAST("toast"), 8 | NOTIFICATION("notification"), 9 | DIALOG("dialog"), 10 | WINDOW("window"), 11 | ; 12 | 13 | override fun toString() = 14 | type 15 | 16 | companion object { 17 | fun parse(type: String): ResponseUiType? = 18 | entries.find { it.type == type } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/SelectionMode.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | enum class SelectionMode { 7 | NORMAL, 8 | HOME_SCREEN_SHORTCUT_PLACEMENT, 9 | HOME_SCREEN_WIDGET_PLACEMENT, 10 | PLUGIN, 11 | } 12 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/ShortcutClickBehavior.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | enum class ShortcutClickBehavior(val type: String) { 7 | RUN("run"), 8 | EDIT("edit"), 9 | MENU("menu"), 10 | ; 11 | 12 | override fun toString() = 13 | type 14 | 15 | companion object { 16 | fun parse(type: String): ShortcutClickBehavior? = 17 | entries.find { it.type == type } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/models/AppConfig.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.models 2 | 3 | import androidx.room.ColumnInfo 4 | import androidx.room.Entity 5 | import androidx.room.PrimaryKey 6 | 7 | @Entity(tableName = "app_config") 8 | data class AppConfig( 9 | @PrimaryKey 10 | @ColumnInfo(name = "id") 11 | val id: Int = 1, 12 | @ColumnInfo(name = "title") 13 | val title: String, 14 | @ColumnInfo(name = "global_code") 15 | val globalCode: String, 16 | ) 17 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/models/AppLock.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.models 2 | 3 | import androidx.room.ColumnInfo 4 | import androidx.room.Entity 5 | import androidx.room.PrimaryKey 6 | 7 | @Entity(tableName = "app_lock") 8 | data class AppLock( 9 | @PrimaryKey 10 | @ColumnInfo(name = "id") 11 | val id: Int = 1, 12 | @ColumnInfo(name = "password_hash") 13 | val passwordHash: String, 14 | @ColumnInfo(name = "use_biometrics") 15 | val useBiometrics: Boolean, 16 | ) 17 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/models/PendingExecutionWithVariablesModel.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.models 2 | 3 | import androidx.room.Embedded 4 | import androidx.room.Relation 5 | 6 | data class PendingExecutionWithVariablesModel( 7 | @Embedded val pendingExecution: PendingExecutionModel, 8 | @Relation( 9 | parentColumn = "id", 10 | entityColumn = "pending_execution_id", 11 | ) 12 | val resolvedVariables: List, 13 | ) 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/realm/migration/MigrationExtensions.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.realm.migration 2 | 3 | import io.realm.kotlin.dynamic.DynamicRealmObject 4 | import io.realm.kotlin.dynamic.getNullableValue 5 | import io.realm.kotlin.dynamic.getValue 6 | 7 | fun DynamicRealmObject.getString(key: String): String? = 8 | try { 9 | getValue(key) 10 | } catch (_: IllegalArgumentException) { 11 | try { 12 | getNullableValue(key) 13 | } catch (_: IllegalArgumentException) { 14 | null 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/realm/migration/ParameterTypeMigration.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.realm.migration 2 | 3 | import io.realm.kotlin.migration.AutomaticSchemaMigration 4 | 5 | class ParameterTypeMigration : RealmMigration { 6 | override fun migrateRealm(migrationContext: AutomaticSchemaMigration.MigrationContext) { 7 | migrationContext.enumerate("Parameter") { _, newParameter -> 8 | newParameter?.set("type", "string") 9 | newParameter?.set("fileName", "") 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/realm/migration/RealmMigration.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.realm.migration 2 | 3 | import io.realm.kotlin.migration.AutomaticSchemaMigration 4 | 5 | interface RealmMigration { 6 | fun migrateRealm(migrationContext: AutomaticSchemaMigration.MigrationContext) 7 | } 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/realm/models/RealmAppLock.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.realm.models 2 | 3 | import io.realm.kotlin.types.RealmObject 4 | import io.realm.kotlin.types.annotations.PersistedName 5 | import io.realm.kotlin.types.annotations.PrimaryKey 6 | 7 | @Deprecated("Only used in Realm-to-Room migration") 8 | @PersistedName(name = "AppLock") 9 | class RealmAppLock() : RealmObject { 10 | @PrimaryKey 11 | var id: Long = 0 12 | var passwordHash: String = "" 13 | var useBiometrics: Boolean = false 14 | } 15 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/realm/models/RealmCertificatePin.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.realm.models 2 | 3 | import io.realm.kotlin.types.RealmObject 4 | import io.realm.kotlin.types.annotations.PersistedName 5 | import io.realm.kotlin.types.annotations.PrimaryKey 6 | 7 | @Deprecated("Only used in Realm-to-Room migration") 8 | @PersistedName(name = "CertificatePin") 9 | class RealmCertificatePin() : RealmObject { 10 | @PrimaryKey 11 | var id: String = "" 12 | var pattern: String = "" 13 | var hash: String = "" 14 | } 15 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/realm/models/RealmFileUploadOptions.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.realm.models 2 | 3 | import io.realm.kotlin.types.EmbeddedRealmObject 4 | import io.realm.kotlin.types.annotations.PersistedName 5 | 6 | @Deprecated("Only used in Realm-to-Room migration") 7 | @PersistedName(name = "FileUploadOptions") 8 | class RealmFileUploadOptions : EmbeddedRealmObject { 9 | var fileUploadType: String = "" 10 | var file: String? = null 11 | var useImageEditor: Boolean = false 12 | } 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/realm/models/RealmHeader.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.realm.models 2 | 3 | import io.realm.kotlin.types.RealmObject 4 | import io.realm.kotlin.types.annotations.PersistedName 5 | import io.realm.kotlin.types.annotations.PrimaryKey 6 | 7 | @Deprecated("Only used in Realm-to-Room migration") 8 | @PersistedName(name = "Header") 9 | class RealmHeader() : RealmObject { 10 | @PrimaryKey 11 | var id: String = "" 12 | var key: String = "" 13 | var value: String = "" 14 | } 15 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/realm/models/RealmOption.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.realm.models 2 | 3 | import io.realm.kotlin.types.RealmObject 4 | import io.realm.kotlin.types.annotations.PersistedName 5 | import io.realm.kotlin.types.annotations.PrimaryKey 6 | 7 | @Deprecated("Only used in Realm-to-Room migration") 8 | @PersistedName(name = "Option") 9 | class RealmOption() : RealmObject { 10 | @PrimaryKey 11 | var id: String = "" 12 | var label: String = "" 13 | var value: String = "" 14 | } 15 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/realm/models/RealmRepetition.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.realm.models 2 | 3 | import io.realm.kotlin.types.EmbeddedRealmObject 4 | import io.realm.kotlin.types.annotations.PersistedName 5 | 6 | @Deprecated("Only used in Realm-to-Room migration") 7 | @PersistedName(name = "Repetition") 8 | class RealmRepetition() : EmbeddedRealmObject { 9 | var interval: Int = 0 10 | } 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/realm/models/RealmSection.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.realm.models 2 | 3 | import ch.rmy.android.http_shortcuts.data.domains.sections.SectionId 4 | import io.realm.kotlin.types.RealmObject 5 | import io.realm.kotlin.types.annotations.PersistedName 6 | import io.realm.kotlin.types.annotations.PrimaryKey 7 | 8 | @Deprecated("Only used in Realm-to-Room migration") 9 | @PersistedName(name = "Section") 10 | class RealmSection() : RealmObject { 11 | @PrimaryKey 12 | var id: SectionId = "" 13 | var name: String = "" 14 | } 15 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/ActionException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import android.content.Context 4 | 5 | class ActionException(private val messageProvider: Context.() -> String) : UserException() { 6 | 7 | override fun getLocalizedMessage(context: Context): String = 8 | messageProvider.invoke(context) 9 | } 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/BrowserNotFoundException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import android.content.Context 4 | import ch.rmy.android.http_shortcuts.R 5 | 6 | class BrowserNotFoundException(private val packageName: String) : UserException() { 7 | 8 | override fun getLocalizedMessage(context: Context): String = 9 | context.getString(R.string.error_browser_not_found, packageName) 10 | } 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/ClientCertException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import android.content.Context 4 | import ch.rmy.android.http_shortcuts.R 5 | 6 | class ClientCertException : UserException() { 7 | override fun getLocalizedMessage(context: Context): String = 8 | context.getString(R.string.error_failed_to_use_client_cert) 9 | } 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/DialogCancellationException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import kotlinx.coroutines.CancellationException 4 | 5 | class DialogCancellationException : CancellationException() 6 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/DigestAuthException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import android.content.Context 4 | import ch.rmy.android.http_shortcuts.R 5 | 6 | class DigestAuthException(private val detail: String) : UserException() { 7 | 8 | override fun getLocalizedMessage(context: Context): String = 9 | context.getString(R.string.error_digest_auth_failed, detail) 10 | } 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/FailedToAccessFileException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import android.content.Context 4 | import ch.rmy.android.http_shortcuts.R 5 | 6 | class FailedToAccessFileException(private val fileName: String) : UserException() { 7 | override fun getLocalizedMessage(context: Context): String = 8 | context.getString(R.string.error_failed_to_access_file, fileName) 9 | } 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/InvalidBearerAuthException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import android.content.Context 4 | import ch.rmy.android.http_shortcuts.R 5 | 6 | class InvalidBearerAuthException(val token: String) : UserException() { 7 | 8 | override fun getLocalizedMessage(context: Context): String = 9 | context.getString(R.string.error_invalid_bearer_auth, token) 10 | } 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/InvalidContentTypeException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import android.content.Context 4 | import ch.rmy.android.http_shortcuts.R 5 | 6 | class InvalidContentTypeException(val contentType: String) : UserException() { 7 | 8 | override fun getLocalizedMessage(context: Context): String = 9 | context.getString(R.string.error_invalid_content_type, contentType) 10 | } 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/InvalidHeaderException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import android.content.Context 4 | import ch.rmy.android.http_shortcuts.R 5 | 6 | class InvalidHeaderException(val header: String) : UserException() { 7 | 8 | override fun getLocalizedMessage(context: Context): String = 9 | context.getString(R.string.error_invalid_header, header) 10 | } 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/InvalidProxyException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import android.content.Context 4 | import ch.rmy.android.http_shortcuts.R 5 | 6 | class InvalidProxyException(val error: String) : UserException() { 7 | 8 | override fun getLocalizedMessage(context: Context): String = 9 | context.getString(R.string.error_invalid_proxy, error) 10 | } 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/InvalidUrlException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import android.content.Context 4 | import ch.rmy.android.http_shortcuts.R 5 | 6 | class InvalidUrlException(val url: String, private val detail: String? = null) : UserException() { 7 | 8 | override fun getLocalizedMessage(context: Context): String = 9 | context.getString(R.string.error_invalid_url, detail ?: url) 10 | } 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/MissingLocationPermissionException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import android.content.Context 4 | import ch.rmy.android.http_shortcuts.R 5 | 6 | class MissingLocationPermissionException : UserException() { 7 | 8 | override fun getLocalizedMessage(context: Context): String = 9 | context.getString(R.string.error_missing_location_permission) 10 | } 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/NoActivityAvailableException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | class NoActivityAvailableException : Exception() 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/ResponseTooLargeException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import android.content.Context 4 | import android.text.format.Formatter 5 | import ch.rmy.android.http_shortcuts.R 6 | 7 | class ResponseTooLargeException(private val limit: Long) : UserException() { 8 | 9 | override fun getLocalizedMessage(context: Context): String = 10 | context.getString(R.string.error_response_too_large, Formatter.formatShortFileSize(context, limit)) 11 | } 12 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/TreatAsFailureException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import kotlinx.coroutines.CancellationException 4 | 5 | class TreatAsFailureException(override val message: String?) : CancellationException() 6 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/UserAbortException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import kotlinx.coroutines.CancellationException 4 | 5 | class UserAbortException(val abortAll: Boolean) : CancellationException() 6 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/UserException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import android.content.Context 4 | 5 | abstract class UserException : Exception() { 6 | 7 | abstract fun getLocalizedMessage(context: Context): String 8 | 9 | companion object { 10 | fun create(messageFactory: Context.() -> String) = object : UserException() { 11 | override fun getLocalizedMessage(context: Context): String = 12 | messageFactory(context) 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/extensions/StringExtensions.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.extensions 2 | 3 | private val CERTIFICATE_FINGERPRINT_REGEX = "([0-9A-Fa-f]{40}|[0-9A-Fa-f]{64})".toRegex() 4 | 5 | fun String.isValidCertificateFingerprint() = 6 | matches(CERTIFICATE_FINGERPRINT_REGEX) 7 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/extensions/WorkerExtensions.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.extensions 2 | 3 | import android.content.Context 4 | import androidx.work.ListenableWorker 5 | 6 | val ListenableWorker.context: Context 7 | get() = applicationContext 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/http/CertificatePin.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.http 2 | 3 | data class CertificatePin( 4 | val pattern: String, 5 | val hash: ByteArray, 6 | ) { 7 | val isSha256: Boolean 8 | get() = hash.size == 32 9 | } 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/http/ErrorResponse.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.http 2 | 3 | class ErrorResponse(val shortcutResponse: ShortcutResponse) : Exception() 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/http/Extensions.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.http 2 | 3 | import okhttp3.Request 4 | 5 | fun buildRequest(method: String, url: String, builderAction: RequestBuilder.() -> Unit): Request = 6 | RequestBuilder(method, url).apply(builderAction).build() 7 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/http/ProxyParams.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.http 2 | 3 | import ch.rmy.android.http_shortcuts.data.enums.ProxyType 4 | 5 | data class ProxyParams( 6 | val type: ProxyType, 7 | val host: String, 8 | val port: Int, 9 | val username: String, 10 | val password: String, 11 | ) 12 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/import_export/ImportException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.import_export 2 | 3 | open class ImportException(override val message: String? = null) : Exception(message) 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/import_export/ImportExport.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.import_export 2 | 3 | object ImportExport { 4 | const val JSON_FILE = "shortcuts.json" 5 | const val VERSION = 91L 6 | const val COMPATIBILITY_VERSION = 90L 7 | } 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/import_export/ImportMode.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.import_export 2 | 3 | enum class ImportMode { 4 | MERGE, 5 | REPLACE, 6 | } 7 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/import_export/ImportPasswordException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.import_export 2 | 3 | class ImportPasswordException : ImportException() 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/import_export/ImportVersionMismatchException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.import_export 2 | 3 | class ImportVersionMismatchException : Exception() 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/import_export/InvalidFileException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.import_export 2 | 3 | class InvalidFileException : Exception() 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/import_export/migration/ImportMigration.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.import_export.migration 2 | 3 | import com.google.gson.JsonObject 4 | 5 | interface ImportMigration { 6 | fun migrateImport(base: JsonObject) 7 | } 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/notifications/NotificationChannelIds.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.notifications 2 | 3 | object NotificationChannelIds { 4 | const val SHORTCUT_EXECUTION = "shortcut_execution" 5 | const val SHORTCUT_RESULTS = "shortcut_results" 6 | } 7 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/plugin/Output.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.plugin 2 | 3 | import com.joaomgcd.taskerpluginlibrary.output.TaskerOutputObject 4 | import com.joaomgcd.taskerpluginlibrary.output.TaskerOutputVariable 5 | 6 | @TaskerOutputObject 7 | class Output( 8 | @get:TaskerOutputVariable("result", labelResIdName = "label_plugin_result", htmlLabelResIdName = "label_plugin_result_detail") 9 | val result: String = "", 10 | ) 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/plugin/TaskerTaskPickerContract.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.plugin 2 | 3 | import android.content.Context 4 | import android.content.Intent 5 | import androidx.activity.result.contract.ActivityResultContract 6 | 7 | object TaskerTaskPickerContract : ActivityResultContract() { 8 | override fun createIntent(context: Context, input: Unit): Intent = 9 | TaskerIntent.getTaskSelectIntent() 10 | 11 | override fun parseResult(resultCode: Int, intent: Intent?): String? = 12 | intent?.dataString 13 | } 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/scripting/ActionAlias.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.scripting 2 | 3 | class ActionAlias( 4 | val functionName: String, 5 | val functionNameAliases: Set = emptySet(), 6 | val parameters: Int, 7 | ) 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/scripting/ResultHandler.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.scripting 2 | 3 | class ResultHandler { 4 | 5 | private var result: String? = null 6 | 7 | fun getResult(): String? = 8 | result 9 | 10 | fun setResult(result: String) { 11 | this.result = result 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/scripting/actions/ActionRunnable.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.scripting.actions 2 | 3 | import ch.rmy.android.http_shortcuts.scripting.ExecutionContext 4 | import ch.rmy.android.http_shortcuts.scripting.actions.types.Action 5 | 6 | class ActionRunnable( 7 | private val action: Action, 8 | private val params: Params, 9 | ) { 10 | suspend fun run(executionContext: ExecutionContext): Any? = 11 | action.executeWithParams(params, executionContext) 12 | .takeUnless { it == Unit } 13 | } 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/scripting/actions/types/Action.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.scripting.actions.types 2 | 3 | import ch.rmy.android.http_shortcuts.scripting.ExecutionContext 4 | 5 | interface Action { 6 | suspend fun executeWithParams(params: Params, executionContext: ExecutionContext): Any? = 7 | params.run { 8 | execute(executionContext) 9 | } 10 | 11 | suspend fun Params.execute(executionContext: ExecutionContext): Any? 12 | } 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/scripting/actions/types/ActionType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.scripting.actions.types 2 | 3 | import ch.rmy.android.http_shortcuts.scripting.ActionAlias 4 | import ch.rmy.android.http_shortcuts.scripting.actions.ActionRunnable 5 | import ch.rmy.android.scripting.JsFunctionArgs 6 | 7 | interface ActionType { 8 | val type: String 9 | 10 | fun getActionRunnable(args: JsFunctionArgs): ActionRunnable<*> 11 | 12 | fun getAlias(): ActionAlias? = null 13 | } 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/scripting/actions/types/HtmlEncodeAction.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.scripting.actions.types 2 | 3 | import androidx.core.text.htmlEncode 4 | import ch.rmy.android.http_shortcuts.scripting.ExecutionContext 5 | import javax.inject.Inject 6 | 7 | class HtmlEncodeAction 8 | @Inject 9 | constructor() : Action { 10 | override suspend fun Params.execute(executionContext: ExecutionContext): String = 11 | text.htmlEncode() 12 | 13 | data class Params( 14 | val text: String, 15 | ) 16 | } 17 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/scripting/actions/types/SetResultAction.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.scripting.actions.types 2 | 3 | import ch.rmy.android.http_shortcuts.scripting.ExecutionContext 4 | import javax.inject.Inject 5 | 6 | class SetResultAction 7 | @Inject 8 | constructor() : Action { 9 | override suspend fun Params.execute(executionContext: ExecutionContext) { 10 | executionContext.resultHandler.setResult(value) 11 | } 12 | 13 | data class Params( 14 | val value: String, 15 | ) 16 | } 17 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/scripting/actions/types/ToHexStringAction.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.scripting.actions.types 2 | 3 | import ch.rmy.android.http_shortcuts.scripting.ExecutionContext 4 | import javax.inject.Inject 5 | 6 | class ToHexStringAction 7 | @Inject 8 | constructor() : Action { 9 | @OptIn(ExperimentalStdlibApi::class) 10 | override suspend fun Params.execute(executionContext: ExecutionContext): String = 11 | data.toHexString() 12 | 13 | data class Params( 14 | val data: ByteArray, 15 | ) 16 | } 17 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/scripting/actions/types/ToStringAction.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.scripting.actions.types 2 | 3 | import ch.rmy.android.http_shortcuts.scripting.ExecutionContext 4 | import javax.inject.Inject 5 | 6 | class ToStringAction 7 | @Inject 8 | constructor() : Action { 9 | override suspend fun Params.execute(executionContext: ExecutionContext): String = 10 | String(data) 11 | 12 | data class Params( 13 | val data: ByteArray, 14 | ) 15 | } 16 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/scripting/actions/types/UUIDAction.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.scripting.actions.types 2 | 3 | import ch.rmy.android.framework.utils.UUIDUtils 4 | import ch.rmy.android.http_shortcuts.scripting.ExecutionContext 5 | import javax.inject.Inject 6 | 7 | class UUIDAction 8 | @Inject 9 | constructor() : Action { 10 | override suspend fun Unit.execute(executionContext: ExecutionContext): String = 11 | UUIDUtils.newUUID() 12 | } 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/scripting/actions/types/WaitAction.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.scripting.actions.types 2 | 3 | import ch.rmy.android.http_shortcuts.scripting.ExecutionContext 4 | import javax.inject.Inject 5 | import kotlin.time.Duration 6 | import kotlinx.coroutines.delay 7 | 8 | class WaitAction 9 | @Inject 10 | constructor() : Action { 11 | override suspend fun Params.execute(executionContext: ExecutionContext) { 12 | delay(duration) 13 | } 14 | 15 | data class Params( 16 | val duration: Duration, 17 | ) 18 | } 19 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/scripting/actions/types/WifiIPAction.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.scripting.actions.types 2 | 3 | import ch.rmy.android.http_shortcuts.scripting.ExecutionContext 4 | import ch.rmy.android.http_shortcuts.utils.NetworkUtil 5 | import javax.inject.Inject 6 | 7 | class WifiIPAction 8 | @Inject 9 | constructor( 10 | private val networkUtil: NetworkUtil, 11 | ) : Action { 12 | override suspend fun Unit.execute(executionContext: ExecutionContext): String? = 13 | networkUtil.getIPV4Address() 14 | } 15 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/utils/CameraUtil.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.utils 2 | 3 | import android.content.Context 4 | import android.content.pm.PackageManager 5 | import javax.inject.Inject 6 | 7 | class CameraUtil 8 | @Inject 9 | constructor( 10 | private val context: Context, 11 | ) { 12 | fun hasCamera(): Boolean = 13 | context.packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY) 14 | } 15 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/utils/ClientCertUtil.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.utils 2 | 3 | import android.app.Activity 4 | import android.security.KeyChain 5 | 6 | object ClientCertUtil { 7 | fun promptForAlias(activity: Activity, callback: (String) -> Unit) { 8 | KeyChain.choosePrivateKeyAlias(activity, { alias -> 9 | if (alias != null) { 10 | callback(alias) 11 | } 12 | }, null, null, null, -1, null) 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/utils/ColorUtil.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.utils 2 | 3 | import android.graphics.Color 4 | import androidx.annotation.ColorInt 5 | 6 | object ColorUtil { 7 | @ColorInt 8 | fun String.hexStringToColorInt(): Int = 9 | if (length == 6) { 10 | val color = toIntOrNull(16) ?: Color.WHITE 11 | color + 0xff000000.toInt() 12 | } else { 13 | Color.WHITE 14 | } 15 | 16 | fun Int.colorIntToHexString(): String = 17 | String.format("%06x", this and 0xffffff).uppercase() 18 | } 19 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/utils/FileTypeUtil.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.utils 2 | 3 | object FileTypeUtil { 4 | const val TYPE_XML = "text/xml" 5 | const val TYPE_XML_ALT = "application/xml" 6 | const val TYPE_JSON = "application/json" 7 | const val TYPE_HTML = "text/html" 8 | const val TYPE_YAML = "text/yaml" 9 | const val TYPE_YAML_ALT = "application/x-yaml" 10 | const val TYPE_PLAIN_TEXT = "text/plain" 11 | 12 | fun isImage(type: String?) = type?.startsWith("image/") == true 13 | } 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/utils/NoCloseInputStream.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.utils 2 | 3 | import java.io.FilterInputStream 4 | import java.io.InputStream 5 | 6 | class NoCloseInputStream(inputStream: InputStream) : FilterInputStream(inputStream) { 7 | override fun close() { 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/utils/PlayServicesUtil.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.utils 2 | 3 | import android.location.Location 4 | 5 | interface PlayServicesUtil { 6 | fun isPlayServicesAvailable(): Boolean 7 | 8 | suspend fun getLocation(): Location? 9 | } 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/variables/types/ConstantType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.variables.types 2 | 3 | import ch.rmy.android.http_shortcuts.activities.execute.DialogHandle 4 | import ch.rmy.android.http_shortcuts.data.models.GlobalVariable 5 | import javax.inject.Inject 6 | 7 | class ConstantType 8 | @Inject 9 | constructor() : VariableType { 10 | override suspend fun resolve(variable: GlobalVariable, dialogHandle: DialogHandle) = 11 | variable.value.orEmpty() 12 | } 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/variables/types/UUIDType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.variables.types 2 | 3 | import ch.rmy.android.framework.utils.UUIDUtils 4 | import ch.rmy.android.http_shortcuts.activities.execute.DialogHandle 5 | import ch.rmy.android.http_shortcuts.data.models.GlobalVariable 6 | import javax.inject.Inject 7 | 8 | class UUIDType 9 | @Inject 10 | constructor() : VariableType { 11 | override suspend fun resolve(variable: GlobalVariable, dialogHandle: DialogHandle) = 12 | UUIDUtils.newUUID() 13 | } 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/variables/types/VariableType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.variables.types 2 | 3 | import ch.rmy.android.http_shortcuts.activities.execute.DialogHandle 4 | import ch.rmy.android.http_shortcuts.data.models.GlobalVariable 5 | 6 | interface VariableType { 7 | suspend fun resolve(variable: GlobalVariable, dialogHandle: DialogHandle): String 8 | } 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_alarm_clock.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_alarm_clock.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_announcement.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_announcement.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_armor.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_armor.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_attachment.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_attachment.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_balloon.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_balloon.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_bat_man.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_bat_man.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_battery_charging.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_battery_charging.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_beamed_notes.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_beamed_notes.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_beep_signal.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_beep_signal.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_bell.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_bell.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_beverage_coffee.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_beverage_coffee.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_bluetooth.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_bluetooth.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_book_open.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_book_open.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_box.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_box.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_business_man.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_business_man.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_butterfly.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_butterfly.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_button.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_button.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cake.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cake.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_calendar_date.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_calendar_date.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_camera.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_camera.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_car.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_car.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cat.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cat.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cctv_camera.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cctv_camera.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cd.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cd.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_check.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_check.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_chef_cap.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_chef_cap.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_clean.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_clean.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_clock.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_clock.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_close.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_close.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cloud.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cloud.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_color.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_color.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_command_mac.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_command_mac.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_command_refresh.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_command_refresh.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cooker.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cooker.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cursor.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cursor.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cutlery_fork_knife.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cutlery_fork_knife.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cycling.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cycling.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_danger.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_danger.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_data_edit.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_data_edit.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_data_information.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_data_information.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_delete.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_delete.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_device_bell.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_device_bell.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_device_calculator.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_device_calculator.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_dice.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_dice.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_display_brightness.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_display_brightness.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_display_contrast.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_display_contrast.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_document.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_document.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_dog.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_dog.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_driller.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_driller.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_dvd.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_dvd.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_energy_saving_bulb_1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_energy_saving_bulb_1.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_energy_saving_bulb_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_energy_saving_bulb_2.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_feather.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_feather.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_film.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_film.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_finger_print.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_finger_print.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_fire.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_fire.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_fish.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_fish.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_floppy.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_floppy.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_flower.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_flower.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_folder_sharing.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_folder_sharing.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_foot_print.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_foot_print.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_footprint.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_footprint.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_fuel_station.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_fuel_station.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_gift.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_gift.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_globe.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_globe.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_gramaphone.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_gramaphone.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_graph.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_graph.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_guitar.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_guitar.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_hand.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_hand.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_hat.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_hat.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_headphone.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_headphone.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_heart.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_heart.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_help.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_help.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_hour_glass.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_hour_glass.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_house.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_house.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_houses.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_houses.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_identity_card.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_identity_card.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_instrument_barometer.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_instrument_barometer.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_instrument_round_bottom_flask.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_instrument_round_bottom_flask.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_instrument_telescope.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_instrument_telescope.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_internet.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_internet.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_ipad.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_ipad.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_iris.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_iris.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_joystick.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_joystick.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_key_access.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_key_access.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_keyboard.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_keyboard.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_knight.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_knight.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_lan.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_lan.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_laptop.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_laptop.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_latitude.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_latitude.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_laugh.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_laugh.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_left_arrow.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_left_arrow.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_light.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_light.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_light_bulb.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_light_bulb.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_linear_gauge.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_linear_gauge.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_link.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_link.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_linux.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_linux.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_lock.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_lock.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_logout.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_logout.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_loud_speaker.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_loud_speaker.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_mac_pc.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_mac_pc.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_magnet.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_magnet.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_mail.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_mail.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_map_location.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_map_location.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_media_back.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_media_back.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_media_end.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_media_end.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_media_fast_forward.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_media_fast_forward.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_media_pause.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_media_pause.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_media_play.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_media_play.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_messages.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_messages.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_microphone.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_microphone.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_microsoft_windows.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_microsoft_windows.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_minus.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_minus.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_mobile_phone.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_mobile_phone.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_moon.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_moon.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_mouse.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_mouse.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_movie.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_movie.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_network_sharing.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_network_sharing.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_new.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_new.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_next.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_next.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_office.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_office.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_outlet_plug.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_outlet_plug.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_palm_tree.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_palm_tree.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_password.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_password.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_penguin.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_penguin.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_phone.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_phone.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_photograph.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_photograph.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_picture.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_picture.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_picture_frame.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_picture_frame.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_pine_tree.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_pine_tree.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_planet.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_planet.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_plug.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_plug.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_plus.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_plus.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_power_1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_power_1.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_power_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_power_2.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_printer.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_printer.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_printer_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_printer_2.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_puzzles.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_puzzles.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_quarter_note.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_quarter_note.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_recorded_media.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_recorded_media.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_rectangle.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_rectangle.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_refrigerator.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_refrigerator.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_reload.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_reload.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_remote_control.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_remote_control.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_road_backward.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_road_backward.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_road_forward.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_road_forward.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_robot.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_robot.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_sad.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_sad.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_satellite.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_satellite.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_search.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_search.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_settings.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_settings.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape12.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape12.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape6.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape6.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape_cube.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape_cube.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape_lightning.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape_lightning.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape_peace.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape_peace.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape_spade.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape_spade.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape_square.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape_square.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape_star.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape_star.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape_triangle.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape_triangle.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_sleepy.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_sleepy.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_smile.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_smile.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_smoking_zone.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_smoking_zone.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_snack_doughnut.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_snack_doughnut.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_sofa.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_sofa.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_solar.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_solar.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_spaceship.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_spaceship.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_speaker_volume.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_speaker_volume.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_speech.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_speech.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_sports.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_sports.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_squirrel.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_squirrel.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_swap_down.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_swap_down.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_swap_left.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_swap_left.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_swap_right.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_swap_right.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_swap_up.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_swap_up.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_sword.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_sword.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_synchronize.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_synchronize.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_table_fan.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_table_fan.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_table_lamp.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_table_lamp.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_tag.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_tag.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_tape_recorder.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_tape_recorder.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_target.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_target.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_telephone.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_telephone.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_television.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_television.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_tent.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_tent.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_thunder.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_thunder.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_toolbox.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_toolbox.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_tools.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_tools.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_torch.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_torch.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_toy.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_toy.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_transport_school_bus.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_transport_school_bus.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_tube.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_tube.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_turtle.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_turtle.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_umbrella.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_umbrella.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_university.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_university.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_usb.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_usb.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_user_female.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_user_female.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_user_male.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_user_male.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_view.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_view.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_voicemail.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_voicemail.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_volume_high.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_volume_high.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_volume_low.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_volume_low.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_volume_mute.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_volume_mute.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_waiting_popup.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_waiting_popup.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_warning_message.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_warning_message.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_washing_machine.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_washing_machine.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_water_tap.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_water_tap.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_weather.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_weather.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_webcam.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_webcam.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_windows_pc.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_windows_pc.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_yin_yang.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_yin_yang.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/app/src/main/res/drawable-nodpi/ic_launcher.png -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable/black_circle.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable/black_shape_square2.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable/ic_control_flow.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable/ic_files.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable/ic_handle_response.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable/ic_info.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable/ic_launcher_monochrome.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable/ic_misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable/ic_modify_shortcuts.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable/ic_quick_settings_tile.xml: -------------------------------------------------------------------------------- 1 | 6 | 11 | 12 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable/ic_variables.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable/image_placeholder.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable/splash_screen.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/layout/image_editor.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/mipmap/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/raw/keep.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/values-night/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFFFFFFF 4 | #FFFFFFFF 5 | #acb4e2 6 | #E2CAAC 7 | #FF000000 8 | #1F1F1F 9 | 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/values/arrays.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | run $shortcutName 5 | start $shortcutName 6 | execute $shortcutName 7 | launch $shortcutName 8 | trigger $shortcutName 9 | 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/xml/network_security_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/xml/provider_paths.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/test/kotlin/ch/rmy/android/testutils/ResourceLoader.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.testutils 2 | 3 | import java.io.InputStream 4 | 5 | object ResourceLoader { 6 | fun getStream(file: String): InputStream = 7 | javaClass.classLoader!!.getResourceAsStream(file) 8 | } 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/withoutGoogleServices/kotlin/ch/rmy/android/http_shortcuts/utils/PlayServicesUtilImpl.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.utils 2 | 3 | import android.content.Context 4 | import android.location.Location 5 | 6 | class PlayServicesUtilImpl(@Suppress("UNUSED_PARAMETER") context: Context) : PlayServicesUtil { 7 | override fun isPlayServicesAvailable(): Boolean = 8 | false 9 | 10 | override suspend fun getLocation(): Location? { 11 | throw NotImplementedError() 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/curl_command/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("org.jetbrains.kotlin.jvm") 3 | } 4 | 5 | dependencies { 6 | testImplementation(libs.kotlin.test.junit5) 7 | } 8 | 9 | tasks { 10 | test { 11 | useJUnitPlatform() 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/curl_command/src/test/kotlin/ch/rmy/curlcommand/CommandParserTest.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.curlcommand 2 | 3 | import kotlin.test.Test 4 | import kotlin.test.assertEquals 5 | 6 | class CommandParserTest { 7 | 8 | @Test 9 | fun testParser() { 10 | val target = "curl -X \"Hello 'World'\" \"escaped \\\" quotes and backslashes \\\\\" --bla 'foo'" 11 | val expected = listOf("curl", "-X", "Hello 'World'", "escaped \" quotes and backslashes \\", "--bla", "foo") 12 | val actual = CommandParser.parseCommand(target) 13 | assertEquals(expected, actual) 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /HTTPShortcuts/documentation_template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/favicon_grabber/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("org.jetbrains.kotlin.jvm") 3 | } 4 | 5 | dependencies { 6 | implementation(libs.okhttp3) 7 | implementation(libs.gson) 8 | implementation(libs.kotlinx.coroutines) 9 | } 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/favicon_grabber/src/main/kotlin/ch/rmy/favicongrabber/grabbers/Grabber.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.favicongrabber.grabbers 2 | 3 | import ch.rmy.favicongrabber.models.IconResult 4 | import okhttp3.HttpUrl 5 | 6 | interface Grabber { 7 | suspend fun grabIconsFrom(pageUrl: HttpUrl, preferredSize: Int): List 8 | } 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/favicon_grabber/src/main/kotlin/ch/rmy/favicongrabber/models/IconResult.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.favicongrabber.models 2 | 3 | import java.io.File 4 | 5 | data class IconResult( 6 | val file: File, 7 | ) 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/favicon_grabber/src/main/kotlin/ch/rmy/favicongrabber/models/LinkTag.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.favicongrabber.models 2 | 3 | data class LinkTag( 4 | val rel: String, 5 | val href: String, 6 | val size: Int?, 7 | ) 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/favicon_grabber/src/main/kotlin/ch/rmy/favicongrabber/models/ManifestIcon.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.favicongrabber.models 2 | 3 | data class ManifestIcon( 4 | val src: String, 5 | val type: String? = null, 6 | val sizes: String? = null, 7 | val purpose: String? = null, 8 | ) { 9 | val size: Int? 10 | get() = sizes 11 | ?.split('x') 12 | ?.get(0) 13 | ?.toIntOrNull() 14 | } 15 | -------------------------------------------------------------------------------- /HTTPShortcuts/favicon_grabber/src/main/kotlin/ch/rmy/favicongrabber/models/ManifestRoot.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.favicongrabber.models 2 | 3 | data class ManifestRoot( 4 | val icons: List? = null, 5 | ) 6 | -------------------------------------------------------------------------------- /HTTPShortcuts/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx4000M 2 | kotlin.daemon.jvmargs=-Xmx4000M 3 | android.useAndroidX=true 4 | android.enableJetifier=false 5 | android.enableR8.fullMode=false 6 | android.nonTransitiveRClass=true 7 | android.nonFinalResIds=true 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /HTTPShortcuts/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionSha256Sum=20f1b1176237254a6fc204d8434196fa11a4cfb387567519c61556e8710aed78 4 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip 5 | zipStoreBase=GRADLE_USER_HOME 6 | zipStorePath=wrapper/dists 7 | -------------------------------------------------------------------------------- /HTTPShortcuts/keystores/development.jks: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/keystores/development.jks -------------------------------------------------------------------------------- /HTTPShortcuts/scripting/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /HTTPShortcuts/scripting/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/scripting/consumer-rules.pro -------------------------------------------------------------------------------- /HTTPShortcuts/scripting/proguard-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/HTTPShortcuts/scripting/proguard-rules.pro -------------------------------------------------------------------------------- /HTTPShortcuts/scripting/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /HTTPShortcuts/scripting/src/main/kotlin/ch/rmy/android/scripting/JsFunction.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.scripting 2 | 3 | interface JsFunction { 4 | operator fun invoke(args: JsFunctionArgs): Any? 5 | } 6 | -------------------------------------------------------------------------------- /HTTPShortcuts/scripting/src/main/kotlin/ch/rmy/android/scripting/JsValue.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.scripting 2 | 3 | interface JsValue { 4 | fun asString(): String? 5 | 6 | fun asInt(): Int? = 7 | asString()?.toIntOrNull() 8 | 9 | fun asBoolean(): Boolean? = 10 | asString()?.toBoolean() 11 | 12 | fun asObject(): Map? 13 | 14 | fun asByteArray(): ByteArray? 15 | 16 | fun asListOfStrings(): List? 17 | 18 | fun asListOfObjects(): List>? 19 | 20 | fun asJsFunctionArgs(): JsFunctionArgs? 21 | } 22 | -------------------------------------------------------------------------------- /HTTPShortcuts/scripting/src/main/kotlin/ch/rmy/android/scripting/ScriptingEngineFactory.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.scripting 2 | 3 | import ch.rmy.android.scripting.quickjs.QuickJsScriptingEngine 4 | 5 | object ScriptingEngineFactory { 6 | fun create(): ScriptingEngine = 7 | QuickJsScriptingEngine() 8 | } 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/scripting/src/main/kotlin/ch/rmy/android/scripting/ScriptingException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.scripting 2 | 3 | class ScriptingException 4 | internal constructor( 5 | override val cause: Exception?, 6 | override val message: String? = null, 7 | val lineNumber: Int? = null, 8 | ) : Exception(message, cause) 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/scripting/src/main/kotlin/ch/rmy/android/scripting/quickjs/QuickJsObject.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.scripting.quickjs 2 | 3 | import ch.rmy.android.scripting.JsObject 4 | import com.whl.quickjs.wrapper.JSObject 5 | 6 | internal class QuickJsObject( 7 | private val jsObject: JSObject, 8 | ) : JsObject { 9 | fun toJSObject(): JSObject = 10 | jsObject 11 | } 12 | -------------------------------------------------------------------------------- /HTTPShortcuts/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | include(":app") 2 | include(":curl_command") 3 | include(":favicon_grabber") 4 | include(":scripting") 5 | 6 | dependencyResolutionManagement { 7 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) 8 | repositories { 9 | // Only include repos allowed by F-Droid 10 | // see https://f-droid.org/docs/Inclusion_Policy/ 11 | mavenCentral() 12 | maven("https://jitpack.io") 13 | maven("https://oss.sonatype.org/content/repositories/snapshots/") 14 | google() 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /HTTPShortcuts/stability_config.conf: -------------------------------------------------------------------------------- 1 | android.net.Uri 2 | java.nio.charset.Charset 3 | java.time.LocalDateTime 4 | java.time.Instant 5 | kotlin.collections.* -------------------------------------------------------------------------------- /assets/documentation/scripting/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/assets/documentation/scripting/01.png -------------------------------------------------------------------------------- /assets/documentation/scripting/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/assets/documentation/scripting/02.png -------------------------------------------------------------------------------- /assets/documentation/shortcuts/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/assets/documentation/shortcuts/01.png -------------------------------------------------------------------------------- /assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/assets/logo.png -------------------------------------------------------------------------------- /assets/screenshots/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/assets/screenshots/01.png -------------------------------------------------------------------------------- /assets/screenshots/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/assets/screenshots/02.png -------------------------------------------------------------------------------- /assets/screenshots/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/assets/screenshots/03.png -------------------------------------------------------------------------------- /assets/screenshots/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/assets/screenshots/04.png -------------------------------------------------------------------------------- /assets/screenshots/05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/assets/screenshots/05.png -------------------------------------------------------------------------------- /assets/screenshots/06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/assets/screenshots/06.png -------------------------------------------------------------------------------- /assets/screenshots/07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/assets/screenshots/07.png -------------------------------------------------------------------------------- /assets/screenshots/08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/assets/screenshots/08.png -------------------------------------------------------------------------------- /assets/screenshots/09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/assets/screenshots/09.png -------------------------------------------------------------------------------- /assets/screenshots/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/assets/screenshots/10.png -------------------------------------------------------------------------------- /assets/screenshots/11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/assets/screenshots/11.png -------------------------------------------------------------------------------- /assets/screenshots/12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/assets/screenshots/12.png -------------------------------------------------------------------------------- /assets/screenshots/13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/assets/screenshots/13.png -------------------------------------------------------------------------------- /metadata/de-DE/short_description.txt: -------------------------------------------------------------------------------- 1 | Verschicke HTTP-Requests via Shortcuts von deinem Home Screen aus. -------------------------------------------------------------------------------- /metadata/de-DE/title.txt: -------------------------------------------------------------------------------- 1 | HTTP Request Shortcuts -------------------------------------------------------------------------------- /metadata/en-US/images/featureGraphic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/metadata/en-US/images/featureGraphic.png -------------------------------------------------------------------------------- /metadata/en-US/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/metadata/en-US/images/icon.png -------------------------------------------------------------------------------- /metadata/en-US/images/phoneScreenshots/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/metadata/en-US/images/phoneScreenshots/1.png -------------------------------------------------------------------------------- /metadata/en-US/images/phoneScreenshots/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/metadata/en-US/images/phoneScreenshots/2.png -------------------------------------------------------------------------------- /metadata/en-US/images/phoneScreenshots/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/metadata/en-US/images/phoneScreenshots/3.png -------------------------------------------------------------------------------- /metadata/en-US/images/phoneScreenshots/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/metadata/en-US/images/phoneScreenshots/4.png -------------------------------------------------------------------------------- /metadata/en-US/images/phoneScreenshots/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/metadata/en-US/images/phoneScreenshots/5.png -------------------------------------------------------------------------------- /metadata/en-US/images/phoneScreenshots/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/metadata/en-US/images/phoneScreenshots/6.png -------------------------------------------------------------------------------- /metadata/en-US/images/phoneScreenshots/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/metadata/en-US/images/phoneScreenshots/7.png -------------------------------------------------------------------------------- /metadata/en-US/images/phoneScreenshots/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/e62230f0908f87488e8c30f62120eef14f415702/metadata/en-US/images/phoneScreenshots/8.png -------------------------------------------------------------------------------- /metadata/en-US/short_description.txt: -------------------------------------------------------------------------------- 1 | Submit HTTP Requests from Shortcuts on your Home Screen -------------------------------------------------------------------------------- /metadata/en-US/title.txt: -------------------------------------------------------------------------------- 1 | HTTP Request Shortcuts -------------------------------------------------------------------------------- /metadata/ja-JP/short_description.txt: -------------------------------------------------------------------------------- 1 | ホーム画面でショートカットからHTTPリクエストを送信 -------------------------------------------------------------------------------- /metadata/ja-JP/title.txt: -------------------------------------------------------------------------------- 1 | HTTP Request Shortcuts -------------------------------------------------------------------------------- /metadata/ru-RU/short_description.txt: -------------------------------------------------------------------------------- 1 | Отправляйте HTTP-запросы из ярлыков на главном экране. -------------------------------------------------------------------------------- /metadata/ru-RU/title.txt: -------------------------------------------------------------------------------- 1 | HTTP Request Shortcuts -------------------------------------------------------------------------------- /metadata/zh-TW/short_description.txt: -------------------------------------------------------------------------------- 1 | 在您的主畫面放置捷徑,以便提交 HTTP 請求 -------------------------------------------------------------------------------- /metadata/zh-TW/title.txt: -------------------------------------------------------------------------------- 1 | HTTP Request Shortcuts --------------------------------------------------------------------------------