From 7ee7323ed3b6dcb9c6436a007cd5e3f85a8024f0 Mon Sep 17 00:00:00 2001 From: Arthur Milchior Date: Fri, 23 Sep 2022 23:06:30 +0200 Subject: [PATCH] NF: activate no-wildcard-imports --- .idea/codeStyles/Project.xml | 6 ++ .../java/com/ichi2/anki/DeckPickerTest.kt | 11 ++- .../java/com/ichi2/anki/NoteEditorTest.kt | 1 - .../anki/reviewer/PeripheralKeymapTest.kt | 1 + .../java/com/ichi2/anki/tests/ACRATest.kt | 5 +- .../ichi2/anki/tests/ContentProviderTest.kt | 23 +++-- .../com/ichi2/anki/tests/libanki/DBTest.kt | 2 +- .../ichi2/anki/tests/libanki/ImportTest.kt | 18 ++-- .../com/ichi2/anki/tests/libanki/MediaTest.kt | 11 ++- .../com/ichi2/anki/tests/libanki/RetryRule.kt | 1 - .../ichi2/anki/testutil/TestEnvironment.kt | 2 +- .../java/com/ichi2/libanki/DBTest.kt | 5 +- .../main/java/com/ichi2/anim/ViewAnimation.kt | 7 +- .../com/ichi2/anki/AbstractFlashcardViewer.kt | 84 ++++++++++++++--- .../main/java/com/ichi2/anki/AnkiActivity.kt | 13 ++- .../main/java/com/ichi2/anki/AnkiDroidApp.kt | 8 +- .../src/main/java/com/ichi2/anki/AnkiFont.kt | 3 - .../java/com/ichi2/anki/BackendBackups.kt | 2 +- .../main/java/com/ichi2/anki/BackupManager.kt | 4 +- .../main/java/com/ichi2/anki/CardBrowser.kt | 90 +++++++------------ .../src/main/java/com/ichi2/anki/CardInfo.kt | 10 ++- .../java/com/ichi2/anki/CardTemplateEditor.kt | 29 ++++-- .../com/ichi2/anki/CardTemplatePreviewer.kt | 8 +- .../src/main/java/com/ichi2/anki/CardUtils.kt | 1 - .../java/com/ichi2/anki/CollectionHelper.kt | 2 - .../java/com/ichi2/anki/CollectionManager.kt | 5 +- .../java/com/ichi2/anki/CoroutineHelpers.kt | 11 ++- .../java/com/ichi2/anki/CrashReportService.kt | 10 ++- .../main/java/com/ichi2/anki/DeckOptions.kt | 15 +++- .../main/java/com/ichi2/anki/DeckPicker.kt | 86 +++++++++++++++--- .../com/ichi2/anki/DeckSpinnerSelection.kt | 7 +- .../main/java/com/ichi2/anki/FieldEditLine.kt | 2 +- .../main/java/com/ichi2/anki/FieldEditText.kt | 3 +- .../ichi2/anki/FilterSheetBottomFragment.kt | 5 +- .../com/ichi2/anki/FilteredDeckOptions.kt | 9 +- .../com/ichi2/anki/IntroductionActivity.kt | 2 +- .../main/java/com/ichi2/anki/LanguageUtils.kt | 2 +- .../java/com/ichi2/anki/MediaRegistration.kt | 6 +- .../src/main/java/com/ichi2/anki/MetaDB.kt | 2 - .../main/java/com/ichi2/anki/ModelBrowser.kt | 14 ++- .../java/com/ichi2/anki/ModelFieldEditor.kt | 12 +-- .../src/main/java/com/ichi2/anki/MyAccount.kt | 1 - .../ichi2/anki/NavigationDrawerActivity.kt | 6 +- .../main/java/com/ichi2/anki/NoteEditor.kt | 47 ++++++++-- .../java/com/ichi2/anki/OnboardingUtils.kt | 3 +- .../src/main/java/com/ichi2/anki/ReadText.kt | 2 +- .../src/main/java/com/ichi2/anki/Reviewer.kt | 41 +++++++-- .../com/ichi2/anki/SharedDecksActivity.kt | 7 +- .../ichi2/anki/SharedDecksDownloadFragment.kt | 6 +- .../com/ichi2/anki/StudyOptionsFragment.kt | 4 +- .../src/main/java/com/ichi2/anki/Sync.kt | 6 +- .../src/main/java/com/ichi2/anki/TtsParser.kt | 1 - .../src/main/java/com/ichi2/anki/UIUtils.kt | 2 +- .../main/java/com/ichi2/anki/Whiteboard.kt | 11 ++- .../ichi2/anki/analytics/UsageAnalytics.kt | 1 - .../com/ichi2/anki/cardviewer/CardHtml.kt | 6 +- .../com/ichi2/anki/cardviewer/CardTemplate.kt | 1 - .../ichi2/anki/cardviewer/ViewerCommand.kt | 2 +- .../anki/contextmenu/SystemContextMenu.kt | 1 - .../ichi2/anki/dialogs/DatabaseErrorDialog.kt | 8 +- .../anki/dialogs/DeckPickerContextMenu.kt | 6 +- .../ichi2/anki/dialogs/DeckSelectionDialog.kt | 7 +- .../com/ichi2/anki/dialogs/DialogHandler.kt | 7 +- .../java/com/ichi2/anki/dialogs/HelpDialog.kt | 1 - .../ichi2/anki/dialogs/InsertFieldDialog.kt | 1 - .../anki/dialogs/LocaleSelectionDialog.kt | 2 +- .../ichi2/anki/dialogs/MediaCheckDialog.kt | 1 - .../anki/dialogs/RecursivePictureMenu.kt | 1 - .../dialogs/ScopedStorageMigrationDialog.kt | 5 +- .../dialogs/customstudy/CustomStudyDialog.kt | 23 ++++- .../anki/dialogs/tags/TagsArrayAdapter.kt | 13 ++- .../anki/dialogs/tags/TagsDialogListener.kt | 1 - .../com/ichi2/anki/dialogs/tags/TagsList.kt | 2 +- .../exception/ConfirmModSchemaException.kt | 1 - .../anki/exception/ImportExportException.kt | 2 - .../exception/ManuallyReportedException.kt | 2 - .../anki/exception/MediaSyncException.kt | 2 - .../exception/UnknownHttpResponseException.kt | 2 - .../anki/exception/UserSubmittedException.kt | 2 - .../anki/export/ActivityExportingDelegate.kt | 7 +- .../introduction/SetupCollectionFragment.kt | 3 +- .../java/com/ichi2/anki/jsaddons/AddonData.kt | 1 - .../java/com/ichi2/anki/jsaddons/NpmUtils.kt | 2 +- .../ichi2/anki/jsaddons/TgzPackageExtract.kt | 7 +- .../java/com/ichi2/anki/model/Directory.kt | 1 - .../ichi2/anki/multimediacard/AudioPlayer.kt | 3 +- .../ichi2/anki/multimediacard/MediaPlayer.kt | 11 ++- .../activity/MultimediaEditFieldActivity.kt | 12 ++- .../activity/PickStringDialogFragment.kt | 1 - .../fields/BasicImageFieldController.kt | 5 +- .../impl/MultimediaEditableNote.kt | 1 - .../language/LanguageListerBase.kt | 2 +- .../language/LanguageListerBeolingus.kt | 2 +- .../anki/noteeditor/CustomToolbarButton.kt | 1 - .../com/ichi2/anki/noteeditor/FieldState.kt | 1 - .../java/com/ichi2/anki/noteeditor/Toolbar.kt | 8 +- .../java/com/ichi2/anki/pages/AnkiServer.kt | 9 +- .../com/ichi2/anki/pages/PagesActivity.kt | 4 +- .../ichi2/anki/preferences/AboutFragment.kt | 6 +- .../preferences/AdvancedSettingsFragment.kt | 8 +- .../anki/preferences/DevOptionsFragment.kt | 6 +- .../preferences/GeneralSettingsFragment.kt | 2 +- .../com/ichi2/anki/preferences/Preferences.kt | 10 ++- .../anki/provider/CardContentProvider.kt | 28 ++++-- .../ichi2/anki/reviewer/AutomaticAnswer.kt | 5 +- .../java/com/ichi2/anki/reviewer/Binding.kt | 2 +- .../ichi2/anki/reviewer/MappableBinding.kt | 3 +- .../ichi2/anki/reviewer/PeripheralKeymap.kt | 1 - .../ichi2/anki/servicelayer/DeckService.kt | 2 +- .../anki/servicelayer/LanguageHintService.kt | 2 +- .../ichi2/anki/servicelayer/NoteService.kt | 7 +- .../anki/servicelayer/SchedulerService.kt | 9 +- .../scopedstorage/MigrateEssentialFiles.kt | 10 ++- .../scopedstorage/MoveConflictedFile.kt | 7 +- .../scopedstorage/MoveDirectoryContent.kt | 1 + .../com/ichi2/anki/services/BootService.kt | 5 +- .../java/com/ichi2/anki/stats/ChartBuilder.kt | 16 +++- .../ichi2/anki/stats/OverviewStatsBuilder.kt | 38 +++++++- .../com/ichi2/anki/ui/NoteTypeSpinnerUtils.kt | 2 +- .../java/com/ichi2/anki/web/HttpFetcher.kt | 1 + .../com/ichi2/anki/widgets/DeckAdapter.kt | 9 +- .../ichi2/anki/widgets/PopupMenuWithIcons.kt | 1 - .../com/ichi2/async/CollectionOperations.kt | 1 + .../java/com/ichi2/async/CollectionTask.kt | 33 ++++++- .../main/java/com/ichi2/async/Connection.kt | 18 +++- .../java/com/ichi2/async/SingleTaskManager.kt | 3 +- .../src/main/java/com/ichi2/compat/Compat.kt | 7 +- .../java/com/ichi2/compat/CompatHelper.kt | 5 +- .../main/java/com/ichi2/compat/CompatV21.kt | 9 +- .../main/java/com/ichi2/compat/CompatV26.kt | 14 ++- .../ichi2/exceptions/AggregateException.kt | 3 - .../com/ichi2/libanki/AnkiPackageExporter.kt | 9 +- .../src/main/java/com/ichi2/libanki/Card.kt | 2 +- .../main/java/com/ichi2/libanki/Collection.kt | 19 +++- .../java/com/ichi2/libanki/CollectionV16.kt | 2 +- .../src/main/java/com/ichi2/libanki/Consts.kt | 1 - .../src/main/java/com/ichi2/libanki/DB.kt | 4 - .../java/com/ichi2/libanki/DeckManager.kt | 4 +- .../src/main/java/com/ichi2/libanki/Decks.kt | 11 ++- .../main/java/com/ichi2/libanki/DecksV16.kt | 16 +++- .../src/main/java/com/ichi2/libanki/Finder.kt | 8 +- .../src/main/java/com/ichi2/libanki/Media.kt | 21 ++++- .../src/main/java/com/ichi2/libanki/Models.kt | 3 +- .../main/java/com/ichi2/libanki/ModelsV16.kt | 10 ++- .../src/main/java/com/ichi2/libanki/Note.kt | 2 +- .../java/com/ichi2/libanki/PythonTypes.kt | 2 - .../src/main/java/com/ichi2/libanki/Sound.kt | 10 ++- .../main/java/com/ichi2/libanki/Storage.kt | 2 - .../src/main/java/com/ichi2/libanki/Tags.kt | 4 +- .../java/com/ichi2/libanki/TemplateManager.kt | 2 +- .../com/ichi2/libanki/TextCardExporter.kt | 2 +- .../main/java/com/ichi2/libanki/UndoAction.kt | 2 +- .../src/main/java/com/ichi2/libanki/Utils.kt | 13 ++- .../main/java/com/ichi2/libanki/WrongId.kt | 2 - .../com/ichi2/libanki/hooks/ChessFilter.kt | 2 +- .../ichi2/libanki/importer/Anki2Importer.kt | 8 +- .../libanki/importer/AnkiPackageImporter.kt | 1 - .../libanki/sched/AbstractDeckTreeNode.kt | 3 +- .../com/ichi2/libanki/sched/AbstractSched.kt | 3 +- .../java/com/ichi2/libanki/sched/BaseSched.kt | 13 ++- .../java/com/ichi2/libanki/sched/CardQueue.kt | 4 +- .../ichi2/libanki/sched/DeckDueTreeNode.kt | 2 +- .../java/com/ichi2/libanki/sched/Sched.kt | 21 ++++- .../java/com/ichi2/libanki/sched/SchedV2.kt | 25 +++++- .../java/com/ichi2/libanki/sched/SchedV3.kt | 6 +- .../ichi2/libanki/stats/AdvancedStatistics.kt | 4 +- .../java/com/ichi2/libanki/stats/Stats.kt | 4 +- .../com/ichi2/libanki/sync/MediaSyncer.kt | 2 +- .../ichi2/libanki/sync/RemoteMediaServer.kt | 2 +- .../com/ichi2/libanki/sync/RemoteServer.kt | 2 +- .../java/com/ichi2/libanki/sync/Syncer.kt | 22 ++++- .../ichi2/libanki/sync/UnifiedTrustManager.kt | 5 +- .../com/ichi2/libanki/template/ParsedNode.kt | 7 +- .../com/ichi2/libanki/template/ParsedNodes.kt | 2 +- .../com/ichi2/libanki/template/Replacement.kt | 4 +- .../ichi2/libanki/template/TemplateFilters.kt | 3 +- .../java/com/ichi2/libanki/template/Text.kt | 2 - .../com/ichi2/libanki/template/Tokenizer.kt | 2 - .../ichi2/libanki/utils/PythonExtensions.kt | 2 +- .../com/ichi2/libanki/utils/TimeManager.kt | 2 +- .../java/com/ichi2/libanki/utils/TimeUtils.kt | 2 +- .../ichi2/preferences/ControlPreference.kt | 1 - .../IncrementerNumberRangePreference.kt | 1 - .../main/java/com/ichi2/themes/HtmlColors.kt | 2 +- .../ichi2/ui/AppCompatPreferenceActivity.kt | 15 +++- .../main/java/com/ichi2/ui/GestureDisplay.kt | 14 ++- .../main/java/com/ichi2/utils/AdaptionUtil.kt | 2 +- .../src/main/java/com/ichi2/utils/Assert.kt | 1 - .../main/java/com/ichi2/utils/BitmapUtil.kt | 1 - .../com/ichi2/utils/CheckCameraPermission.kt | 3 +- .../com/ichi2/utils/ContentResolverUtil.kt | 4 +- .../ichi2/utils/DatabaseChangeDecorator.kt | 2 +- .../java/com/ichi2/utils/DeckComparator.kt | 2 - .../com/ichi2/utils/DeckNameComparator.kt | 1 - .../utils/DimmedPromptBackgroundDecorator.kt | 6 +- .../src/main/java/com/ichi2/utils/ExifUtil.kt | 1 - .../src/main/java/com/ichi2/utils/FileUtil.kt | 4 +- .../com/ichi2/utils/FunctionalInterfaces.kt | 2 +- .../src/main/java/com/ichi2/utils/HashUtil.kt | 3 - .../main/java/com/ichi2/utils/ImportUtils.kt | 3 +- .../main/java/com/ichi2/utils/IntentUtil.kt | 1 - .../src/main/java/com/ichi2/utils/JSON.kt | 2 - .../java/com/ichi2/utils/JSONException.kt | 3 - .../main/java/com/ichi2/utils/JSONTokener.kt | 1 - .../main/java/com/ichi2/utils/LanguageUtil.kt | 3 +- .../com/ichi2/utils/NamedJSONComparator.kt | 2 - .../com/ichi2/utils/NoteFieldDecorator.kt | 2 +- .../main/java/com/ichi2/utils/StringUtil.kt | 2 +- .../src/main/java/com/ichi2/utils/Threads.kt | 1 - .../java/com/ichi2/utils/UniqueArrayList.kt | 5 +- .../main/java/com/ichi2/utils/VersionUtils.kt | 1 - .../java/com/ichi2/utils/ViewGroupUtils.kt | 1 - .../com/ichi2/widget/AnkiDroidWidgetSmall.kt | 6 +- .../java/com/wildplot/android/parsing/Atom.kt | 16 +++- .../parsing/AtomTypes/FunctionXYAtom.kt | 1 - .../parsing/AtomTypes/MathFunctionAtom.kt | 2 - .../android/parsing/AtomTypes/NumberAtom.kt | 2 - .../parsing/ExpressionFormatException.kt | 2 - .../android/rendering/DrawableContainer.kt | 2 +- .../android/rendering/MultiScreenPart.kt | 2 +- .../wildplot/android/rendering/PlotSheet.kt | 3 +- .../AbstractFlashcardViewerCommandTest.kt | 13 ++- ...bstractFlashcardViewerKeyboardInputTest.kt | 3 +- .../AbstractFlashcardViewerSoundRenderTest.kt | 1 - .../ichi2/anki/AbstractFlashcardViewerTest.kt | 12 ++- .../com/ichi2/anki/ActivityStartupMetaTest.kt | 3 +- .../test/java/com/ichi2/anki/AnalyticsTest.kt | 16 +++- .../anki/BackupManagerIntegrationTest.kt | 4 +- .../com/ichi2/anki/BackupManagerSimpleTest.kt | 4 +- .../java/com/ichi2/anki/BackupManagerTest.kt | 9 +- .../anki/CardBrowserCardCollectionTest.kt | 4 +- .../java/com/ichi2/anki/CardBrowserTest.kt | 11 ++- .../ichi2/anki/CardTemplatePreviewerTest.kt | 4 +- .../DeckPickerCheckDatabaseListenerTest.kt | 2 +- .../anki/DeckPickerFloatingActionMenuTest.kt | 6 +- .../java/com/ichi2/anki/DeckPickerTest.kt | 21 +++-- .../java/com/ichi2/anki/HandlerUtilsTest.kt | 3 +- .../test/java/com/ichi2/anki/LocaleLinting.kt | 2 +- .../java/com/ichi2/anki/NoteEditorTest.kt | 6 +- .../test/java/com/ichi2/anki/PreviewerTest.kt | 3 +- .../anki/ProductionCrashReportingTreeTest.kt | 7 +- .../test/java/com/ichi2/anki/ReadTextTest.kt | 10 +-- .../ichi2/anki/ReviewerKeyboardInputTest.kt | 17 +++- .../com/ichi2/anki/ReviewerNoParamTest.kt | 3 +- .../test/java/com/ichi2/anki/ReviewerTest.kt | 2 - .../java/com/ichi2/anki/RobolectricTest.kt | 26 +++++- .../java/com/ichi2/anki/TemporaryModelTest.kt | 3 +- .../src/test/java/com/ichi2/anki/TestUtils.kt | 2 - .../anki/analytics/AnalyticsConstantsTest.kt | 6 +- .../ichi2/anki/cardviewer/CardTemplateTest.kt | 2 +- .../OnRenderProcessGoneDelegateTest.kt | 8 +- .../anki/dialogs/CreateDeckDialogTest.kt | 2 +- .../anki/dialogs/CustomStudyDialogTest.kt | 1 - .../dialogs/RecursivePictureMenuUtilTest.kt | 1 - .../ichi2/anki/dialogs/tags/TagsDialogTest.kt | 1 - .../ichi2/anki/dialogs/tags/TagsListTest.kt | 7 +- .../dialogs/utils/RecursivePictureMenuUtil.kt | 2 +- .../com/ichi2/anki/jsaddons/AddonModelTest.kt | 5 +- .../com/ichi2/anki/model/DirectoryTest.kt | 4 +- .../java/com/ichi2/anki/model/DiskFileTest.kt | 4 +- .../ichi2/anki/model/RelativeFilePathTest.kt | 4 +- .../anki/multimediacard/AudioPlayerTest.kt | 3 +- .../anki/multimediacard/AudioRecorderTest.kt | 3 +- .../fields/BasicImageFieldControllerTest.kt | 3 +- .../anki/reviewer/ActionButtonStatusTest.kt | 4 +- .../ichi2/anki/reviewer/AnswerButtonsTest.kt | 5 +- .../ichi2/anki/reviewer/AnswerTimerTest.kt | 8 +- .../reviewer/AutomaticAnswerActionTest.kt | 6 +- .../KeyboardShortcutIntegrationTest.kt | 7 +- .../ScopedStorageAnkiDroidTest.kt | 4 +- .../MigrateEssentialFilesTest.kt | 11 ++- .../scopedstorage/MigrateUserDataJvmTest.kt | 8 +- .../scopedstorage/MoveConflictedFileTest.kt | 21 ++++- .../scopedstorage/MoveDirectoryContentTest.kt | 12 ++- .../scopedstorage/MoveDirectoryTest.kt | 10 ++- .../scopedstorage/MoveFileTest.kt | 15 +++- .../ScopedStorageMigrationIntegrationTest.kt | 19 +++- .../anki/servicelayer/scopedstorage/Utils.kt | 4 +- .../ichi2/anki/services/NoteServiceTest.kt | 9 +- .../anki/services/ReminderServiceTest.kt | 6 +- .../anki/stats/OverviewStatsBuilderTest.kt | 2 +- .../com/ichi2/compat/CompatCopyFileTest.kt | 6 +- .../com/ichi2/compat/CompatDeleteFileTest.kt | 6 +- .../compat/CompatDirectoryContentTest.kt | 10 ++- .../com/ichi2/compat/CompatHasFilesTest.kt | 6 +- .../test/java/com/ichi2/compat/Test21And26.kt | 10 ++- .../ichi2/libanki/AnkiPackageExporterTest.kt | 8 +- .../test/java/com/ichi2/libanki/CardTest.kt | 2 +- .../test/java/com/ichi2/libanki/ClozeTest.kt | 6 +- .../java/com/ichi2/libanki/CollectionTest.kt | 6 +- .../test/java/com/ichi2/libanki/DecksTest.kt | 6 +- .../test/java/com/ichi2/libanki/FinderTest.kt | 6 +- .../java/com/ichi2/libanki/LegacyDecksTest.kt | 2 +- .../com/ichi2/libanki/MathJaxClozeTest.kt | 8 +- .../test/java/com/ichi2/libanki/ModelTest.kt | 10 ++- .../java/com/ichi2/libanki/StorageTest.kt | 3 +- .../test/java/com/ichi2/libanki/TagsTest.kt | 4 +- .../com/ichi2/libanki/TextCardExporterTest.kt | 3 +- .../com/ichi2/libanki/TextNoteExporterTest.kt | 3 +- .../test/java/com/ichi2/libanki/UtilsTest.kt | 3 - .../ichi2/libanki/sched/AbstractSchedTest.kt | 13 ++- .../java/com/ichi2/libanki/sched/SchedTest.kt | 22 ++++- .../ichi2/libanki/sched/SchedUpgradeTest.kt | 4 +- .../com/ichi2/libanki/sched/SchedV2Test.kt | 9 +- .../ichi2/libanki/template/TemplateTest.kt | 6 +- .../preferences/PreferenceExtensionsTest.kt | 1 - .../ichi2/preferences/TimePreferenceTest.kt | 2 +- .../java/com/ichi2/testutils/ActivityList.kt | 24 ++++- .../com/ichi2/testutils/AnkiAssertTest.kt | 9 +- .../BackendEmulatingOpenConflictTest.kt | 2 +- .../testutils/BackupManagerTestUtilities.kt | 1 - .../test/java/com/ichi2/testutils/FileUtil.kt | 2 +- .../java/com/ichi2/testutils/IntentAssert.kt | 4 +- .../test/java/com/ichi2/testutils/MockTime.kt | 4 +- .../testutils/libanki/CollectionAssert.kt | 2 +- .../test/java/com/ichi2/ui/KeyPickerTest.kt | 5 +- .../java/com/ichi2/utils/BundleUtilsTest.kt | 6 +- .../java/com/ichi2/utils/FileOperation.kt | 2 +- .../test/java/com/ichi2/utils/FileUtilTest.kt | 7 +- .../ichi2/utils/FragmentFactoryUtilsTest.kt | 4 +- .../java/com/ichi2/utils/ImportUtilsTest.kt | 1 - .../java/com/ichi2/utils/JSONArrayTest.kt | 11 ++- .../java/com/ichi2/utils/JSONObjectTest.kt | 10 ++- .../java/com/ichi2/utils/LanguageUtilsTest.kt | 3 +- .../src/test/java/com/ichi2/utils/ListUtil.kt | 3 - .../test/java/com/ichi2/utils/TagsUtilTest.kt | 1 - .../com/ichi2/utils/UniqueArrayListTest.kt | 7 +- .../test/java/com/ichi2/utils/UnzipFile.kt | 1 - .../rendering/PieChartParameterizedTest.kt | 2 +- .../android/rendering/PieChartTest.kt | 1 - .../java/com/ichi2/anki/FlashCardsContract.kt | 3 + .../java/com/ichi2/anki/api/AddContentApi.kt | 2 +- .../main/java/com/ichi2/anki/api/NoteInfo.kt | 1 - api/src/main/java/com/ichi2/anki/api/Utils.kt | 1 + .../java/com/ichi2/anki/api/ApiUtilsTest.kt | 4 + build.gradle | 1 - .../anki/lint/rules/CopyrightHeaderExists.kt | 10 ++- .../lint/rules/DirectCalendarInstanceUsage.kt | 8 +- .../lint/rules/DirectDateInstantiation.kt | 7 +- .../rules/DirectGregorianInstantiation.kt | 8 +- .../lint/rules/DirectSnackbarMakeUsage.kt | 7 +- .../DirectSystemCurrentTimeMillisUsage.kt | 7 +- .../rules/DirectSystemTimeInstantiation.kt | 7 +- .../lint/rules/DirectToastMakeTextUsage.kt | 7 +- .../lint/rules/DuplicateCrowdInStrings.kt | 16 +++- .../rules/DuplicateTextInPreferencesXml.kt | 6 +- .../lint/rules/FixedPreferencesTitleLength.kt | 10 ++- .../anki/lint/rules/HardcodedPreferenceKey.kt | 6 +- .../lint/rules/InvalidStringFormatDetector.kt | 6 +- .../lint/rules/JUnitNullAssertionDetector.kt | 6 +- .../lint/rules/KotlinMigrationBrokenEmails.kt | 10 ++- .../rules/KotlinMigrationFixLineBreaks.kt | 10 ++- .../rules/NonPositionalFormatSubstitutions.kt | 1 - .../anki/lint/rules/PrintStackTraceUsage.kt | 8 +- .../com/ichi2/anki/lint/utils/Aapt2Util.kt | 2 + .../anki/lint/utils/StringFormatDetector.kt | 1 - .../rules/DirectCalendarInstanceUsageTest.kt | 42 ++++++++- .../lint/rules/DirectDateInstantiationTest.kt | 56 +++++++++++- .../rules/DirectGregorianInstantiationTest.kt | 70 +++++++++++++-- .../lint/rules/DirectSnackbarMakeUsageTest.kt | 42 ++++++++- .../DirectSystemCurrentTimeMillisUsageTest.kt | 48 ++++++++-- .../DirectSystemTimeInstantiationTest.kt | 76 ++++++++++++++-- .../rules/DirectToastMakeTextUsageTest.kt | 48 ++++++++-- .../lint/rules/DuplicateCrowdInStringsTest.kt | 4 +- 364 files changed, 2090 insertions(+), 696 deletions(-) diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml index 9330b5a1958d..7583e07961bb 100644 --- a/.idea/codeStyles/Project.xml +++ b/.idea/codeStyles/Project.xml @@ -51,6 +51,12 @@ + + diff --git a/AnkiDroid/src/androidTest/java/com/ichi2/anki/DeckPickerTest.kt b/AnkiDroid/src/androidTest/java/com/ichi2/anki/DeckPickerTest.kt index 51c0cc2f63f7..5224c54b35f7 100644 --- a/AnkiDroid/src/androidTest/java/com/ichi2/anki/DeckPickerTest.kt +++ b/AnkiDroid/src/androidTest/java/com/ichi2/anki/DeckPickerTest.kt @@ -22,10 +22,17 @@ import android.annotation.SuppressLint import androidx.recyclerview.widget.RecyclerView import androidx.test.espresso.Espresso.onView import androidx.test.espresso.Espresso.pressBack -import androidx.test.espresso.action.ViewActions.* +import androidx.test.espresso.action.ViewActions.click +import androidx.test.espresso.action.ViewActions.closeSoftKeyboard +import androidx.test.espresso.action.ViewActions.typeText import androidx.test.espresso.assertion.ViewAssertions import androidx.test.espresso.contrib.RecyclerViewActions -import androidx.test.espresso.matcher.ViewMatchers.* +import androidx.test.espresso.matcher.ViewMatchers.assertThat +import androidx.test.espresso.matcher.ViewMatchers.hasDescendant +import androidx.test.espresso.matcher.ViewMatchers.isDisplayed +import androidx.test.espresso.matcher.ViewMatchers.withContentDescription +import androidx.test.espresso.matcher.ViewMatchers.withId +import androidx.test.espresso.matcher.ViewMatchers.withText import androidx.test.ext.junit.rules.ActivityScenarioRule import androidx.test.rule.GrantPermissionRule import com.ichi2.anki.TestUtils.activityInstance diff --git a/AnkiDroid/src/androidTest/java/com/ichi2/anki/NoteEditorTest.kt b/AnkiDroid/src/androidTest/java/com/ichi2/anki/NoteEditorTest.kt index e2959ece0354..59f0e76074a3 100644 --- a/AnkiDroid/src/androidTest/java/com/ichi2/anki/NoteEditorTest.kt +++ b/AnkiDroid/src/androidTest/java/com/ichi2/anki/NoteEditorTest.kt @@ -28,7 +28,6 @@ import org.hamcrest.Matchers import org.junit.Assume import org.junit.Before import org.junit.Rule -import java.util.ArrayList @KotlinCleanup("fix ide lint issues") abstract class NoteEditorTest protected constructor() { diff --git a/AnkiDroid/src/androidTest/java/com/ichi2/anki/reviewer/PeripheralKeymapTest.kt b/AnkiDroid/src/androidTest/java/com/ichi2/anki/reviewer/PeripheralKeymapTest.kt index 2e0a09b1626b..8ae417bff82f 100644 --- a/AnkiDroid/src/androidTest/java/com/ichi2/anki/reviewer/PeripheralKeymapTest.kt +++ b/AnkiDroid/src/androidTest/java/com/ichi2/anki/reviewer/PeripheralKeymapTest.kt @@ -25,6 +25,7 @@ import org.hamcrest.Matchers.equalTo import org.hamcrest.Matchers.hasSize import org.junit.Test import org.junit.runner.RunWith + @RunWith(AndroidJUnit4::class) class PeripheralKeymapTest { @Test diff --git a/AnkiDroid/src/androidTest/java/com/ichi2/anki/tests/ACRATest.kt b/AnkiDroid/src/androidTest/java/com/ichi2/anki/tests/ACRATest.kt index aec0cbaf0dfd..567b2060e666 100644 --- a/AnkiDroid/src/androidTest/java/com/ichi2/anki/tests/ACRATest.kt +++ b/AnkiDroid/src/androidTest/java/com/ichi2/anki/tests/ACRATest.kt @@ -38,7 +38,10 @@ import org.acra.config.ToastConfiguration import org.acra.data.CrashReportDataFactory import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.Matchers.equalTo -import org.junit.Assert.* +import org.junit.Assert.assertArrayEquals +import org.junit.Assert.assertEquals +import org.junit.Assert.assertFalse +import org.junit.Assert.assertTrue import org.junit.Before import org.junit.Rule import org.junit.Test diff --git a/AnkiDroid/src/androidTest/java/com/ichi2/anki/tests/ContentProviderTest.kt b/AnkiDroid/src/androidTest/java/com/ichi2/anki/tests/ContentProviderTest.kt index af8f98498c9b..4ae8df5baf42 100644 --- a/AnkiDroid/src/androidTest/java/com/ichi2/anki/tests/ContentProviderTest.kt +++ b/AnkiDroid/src/androidTest/java/com/ichi2/anki/tests/ContentProviderTest.kt @@ -31,24 +31,35 @@ import com.ichi2.anki.FlashCardsContract import com.ichi2.anki.exception.ConfirmModSchemaException import com.ichi2.anki.testutil.DatabaseUtils.cursorFillWindow import com.ichi2.async.TaskManager.Companion.waitToFinish -import com.ichi2.libanki.* +import com.ichi2.libanki.Card +import com.ichi2.libanki.Consts +import com.ichi2.libanki.Decks +import com.ichi2.libanki.Model +import com.ichi2.libanki.Note +import com.ichi2.libanki.StdModels +import com.ichi2.libanki.Utils import com.ichi2.utils.BlocksSchemaUpgrade import com.ichi2.utils.JSONObject import com.ichi2.utils.KotlinCleanup import net.ankiweb.rsdroid.BackendFactory.defaultLegacySchema -import org.hamcrest.MatcherAssert.* -import org.hamcrest.Matchers.* -import org.junit.* +import org.hamcrest.MatcherAssert.assertThat +import org.hamcrest.Matchers.greaterThan +import org.hamcrest.Matchers.greaterThanOrEqualTo +import org.hamcrest.Matchers.`is` +import org.junit.After import org.junit.Assert.assertArrayEquals import org.junit.Assert.assertEquals import org.junit.Assert.assertNotEquals import org.junit.Assert.assertTrue import org.junit.Assert.fail -import org.junit.Assume.* +import org.junit.Assume.assumeThat +import org.junit.Assume.assumeTrue +import org.junit.Before +import org.junit.Rule +import org.junit.Test import org.junit.runner.RunWith import org.junit.runners.Parameterized import timber.log.Timber -import java.util.* import kotlin.test.assertNotNull import kotlin.test.junit.JUnitAsserter.assertNotNull diff --git a/AnkiDroid/src/androidTest/java/com/ichi2/anki/tests/libanki/DBTest.kt b/AnkiDroid/src/androidTest/java/com/ichi2/anki/tests/libanki/DBTest.kt index dde5939168da..77213266bbc7 100644 --- a/AnkiDroid/src/androidTest/java/com/ichi2/anki/tests/libanki/DBTest.kt +++ b/AnkiDroid/src/androidTest/java/com/ichi2/anki/tests/libanki/DBTest.kt @@ -32,7 +32,7 @@ import org.junit.Test import org.junit.runner.RunWith import java.io.File import java.io.FileOutputStream -import java.util.* +import java.util.Random @RunWith(AndroidJUnit4::class) class DBTest : InstrumentedTest() { diff --git a/AnkiDroid/src/androidTest/java/com/ichi2/anki/tests/libanki/ImportTest.kt b/AnkiDroid/src/androidTest/java/com/ichi2/anki/tests/libanki/ImportTest.kt index e2b5748bc426..e5d7d0f3f1de 100644 --- a/AnkiDroid/src/androidTest/java/com/ichi2/anki/tests/libanki/ImportTest.kt +++ b/AnkiDroid/src/androidTest/java/com/ichi2/anki/tests/libanki/ImportTest.kt @@ -22,19 +22,25 @@ import com.ichi2.anki.exception.ImportExportException import com.ichi2.anki.tests.InstrumentedTest import com.ichi2.anki.tests.Shared import com.ichi2.libanki.Collection -import com.ichi2.libanki.importer.* +import com.ichi2.libanki.importer.Anki2Importer +import com.ichi2.libanki.importer.AnkiPackageImporter +import com.ichi2.libanki.importer.Importer import com.ichi2.utils.JSONException import com.ichi2.utils.KotlinCleanup import net.ankiweb.rsdroid.BackendFactory.defaultLegacySchema -import org.hamcrest.Matchers.* -import org.junit.* -import org.junit.Assert.* -import org.junit.Assume.* +import org.hamcrest.Matchers.`is` +import org.junit.After +import org.junit.Assert.assertEquals +import org.junit.Assert.assertTrue +import org.junit.Assume.assumeThat +import org.junit.Before +import org.junit.Rule +import org.junit.Test import org.junit.runner.RunWith import java.io.File import java.io.FileOutputStream import java.io.IOException -import java.util.* +import java.util.Arrays @KotlinCleanup("is -> equalTo") @KotlinCleanup("IDE Lint") diff --git a/AnkiDroid/src/androidTest/java/com/ichi2/anki/tests/libanki/MediaTest.kt b/AnkiDroid/src/androidTest/java/com/ichi2/anki/tests/libanki/MediaTest.kt index 30c5f6bedfa1..977ae18d903a 100644 --- a/AnkiDroid/src/androidTest/java/com/ichi2/anki/tests/libanki/MediaTest.kt +++ b/AnkiDroid/src/androidTest/java/com/ichi2/anki/tests/libanki/MediaTest.kt @@ -26,8 +26,15 @@ import com.ichi2.libanki.exception.EmptyMediaException import net.ankiweb.rsdroid.BackendFactory.defaultLegacySchema import org.hamcrest.MatcherAssert import org.hamcrest.Matchers -import org.junit.* -import org.junit.Assert.* +import org.junit.After +import org.junit.Assert.assertEquals +import org.junit.Assert.assertNotEquals +import org.junit.Assert.assertTrue +import org.junit.Assert.fail +import org.junit.Assume +import org.junit.Before +import org.junit.Rule +import org.junit.Test import org.junit.runner.RunWith import java.io.File import java.io.FileOutputStream diff --git a/AnkiDroid/src/androidTest/java/com/ichi2/anki/tests/libanki/RetryRule.kt b/AnkiDroid/src/androidTest/java/com/ichi2/anki/tests/libanki/RetryRule.kt index aecaece27bc7..dc4cdcee8021 100644 --- a/AnkiDroid/src/androidTest/java/com/ichi2/anki/tests/libanki/RetryRule.kt +++ b/AnkiDroid/src/androidTest/java/com/ichi2/anki/tests/libanki/RetryRule.kt @@ -19,7 +19,6 @@ package com.ichi2.anki.tests.libanki import org.junit.rules.TestRule import org.junit.runner.Description import org.junit.runners.model.Statement -import kotlin.Throws /** * Retry a test maxTries times, only failing if zero successes. diff --git a/AnkiDroid/src/androidTest/java/com/ichi2/anki/testutil/TestEnvironment.kt b/AnkiDroid/src/androidTest/java/com/ichi2/anki/testutil/TestEnvironment.kt index ed2d2df61ba4..c0d97a4e540b 100644 --- a/AnkiDroid/src/androidTest/java/com/ichi2/anki/testutil/TestEnvironment.kt +++ b/AnkiDroid/src/androidTest/java/com/ichi2/anki/testutil/TestEnvironment.kt @@ -15,7 +15,7 @@ */ package com.ichi2.anki.testutil -import java.util.* +import java.util.Locale object TestEnvironment { fun isDisplayingDefaultEnglishStrings(): Boolean { diff --git a/AnkiDroid/src/androidTest/java/com/ichi2/libanki/DBTest.kt b/AnkiDroid/src/androidTest/java/com/ichi2/libanki/DBTest.kt index dff36cd89104..262eed75b3b2 100644 --- a/AnkiDroid/src/androidTest/java/com/ichi2/libanki/DBTest.kt +++ b/AnkiDroid/src/androidTest/java/com/ichi2/libanki/DBTest.kt @@ -19,11 +19,12 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import com.ichi2.anki.tests.InstrumentedTest import net.ankiweb.rsdroid.BackendFactory import org.hamcrest.MatcherAssert.assertThat -import org.hamcrest.Matchers.* +import org.hamcrest.Matchers.equalTo +import org.hamcrest.Matchers.not import org.junit.Assume.assumeThat import org.junit.Test import org.junit.runner.RunWith -import java.util.* +import java.util.Locale @RunWith(AndroidJUnit4::class) class DBTest : InstrumentedTest() { diff --git a/AnkiDroid/src/main/java/com/ichi2/anim/ViewAnimation.kt b/AnkiDroid/src/main/java/com/ichi2/anim/ViewAnimation.kt index e3b3ed2c2514..49bb62e36f70 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anim/ViewAnimation.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anim/ViewAnimation.kt @@ -7,7 +7,12 @@ import android.view.animation.AlphaAnimation import android.view.animation.Animation import android.view.animation.DecelerateInterpolator import android.view.animation.TranslateAnimation -import com.ichi2.anim.ViewAnimation.Slide.* +import com.ichi2.anim.ViewAnimation.Slide.SLIDE_IN_FROM_BOTTOM +import com.ichi2.anim.ViewAnimation.Slide.SLIDE_IN_FROM_LEFT +import com.ichi2.anim.ViewAnimation.Slide.SLIDE_IN_FROM_RIGHT +import com.ichi2.anim.ViewAnimation.Slide.SLIDE_IN_FROM_TOP +import com.ichi2.anim.ViewAnimation.Slide.SLIDE_OUT_TO_LEFT +import com.ichi2.anim.ViewAnimation.Slide.SLIDE_OUT_TO_RIGHT object ViewAnimation { enum class Slide { diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/AbstractFlashcardViewer.kt b/AnkiDroid/src/main/java/com/ichi2/anki/AbstractFlashcardViewer.kt index a13e4e352fa6..abfc4f7b871d 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/AbstractFlashcardViewer.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/AbstractFlashcardViewer.kt @@ -22,22 +22,50 @@ package com.ichi2.anki import android.annotation.SuppressLint import android.annotation.TargetApi -import android.content.* +import android.content.ActivityNotFoundException +import android.content.BroadcastReceiver +import android.content.ClipboardManager +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.content.SharedPreferences import android.content.res.Configuration import android.content.res.Resources import android.graphics.Color import android.media.MediaPlayer import android.net.Uri -import android.os.* +import android.os.Build +import android.os.Bundle +import android.os.Parcelable +import android.os.SystemClock import android.text.TextUtils -import android.view.* +import android.view.GestureDetector import android.view.GestureDetector.SimpleOnGestureListener +import android.view.KeyEvent +import android.view.LayoutInflater +import android.view.MotionEvent +import android.view.View import android.view.View.OnTouchListener +import android.view.ViewGroup +import android.view.ViewParent +import android.view.WindowManager import android.view.inputmethod.EditorInfo import android.view.inputmethod.InputMethodManager -import android.webkit.* +import android.webkit.CookieManager +import android.webkit.JsResult +import android.webkit.RenderProcessGoneDetail +import android.webkit.WebChromeClient +import android.webkit.WebResourceError +import android.webkit.WebResourceRequest +import android.webkit.WebResourceResponse +import android.webkit.WebView import android.webkit.WebView.HitTestResult -import android.widget.* +import android.webkit.WebViewClient +import android.widget.Button +import android.widget.FrameLayout +import android.widget.LinearLayout +import android.widget.RelativeLayout +import android.widget.TextView import androidx.annotation.CheckResult import androidx.annotation.IdRes import androidx.annotation.StringRes @@ -52,25 +80,45 @@ import com.ichi2.anim.ActivityTransitionAnimation import com.ichi2.anim.ActivityTransitionAnimation.getInverseTransition import com.ichi2.anki.CollectionManager.withCol import com.ichi2.anki.UIUtils.showThemedToast -import com.ichi2.anki.cardviewer.* +import com.ichi2.anki.cardviewer.CardHtml import com.ichi2.anki.cardviewer.CardHtml.Companion.legacyGetTtsTags +import com.ichi2.anki.cardviewer.Gesture +import com.ichi2.anki.cardviewer.GestureProcessor +import com.ichi2.anki.cardviewer.HtmlGenerator import com.ichi2.anki.cardviewer.HtmlGenerator.Companion.createInstance +import com.ichi2.anki.cardviewer.MissingImageHandler +import com.ichi2.anki.cardviewer.OnRenderProcessGoneDelegate +import com.ichi2.anki.cardviewer.Side import com.ichi2.anki.cardviewer.SoundPlayer.CardSoundConfig import com.ichi2.anki.cardviewer.SoundPlayer.CardSoundConfig.Companion.create +import com.ichi2.anki.cardviewer.TTS +import com.ichi2.anki.cardviewer.TypeAnswer import com.ichi2.anki.cardviewer.TypeAnswer.Companion.createInstance +import com.ichi2.anki.cardviewer.ViewerCommand import com.ichi2.anki.dialogs.tags.TagsDialog import com.ichi2.anki.dialogs.tags.TagsDialogFactory import com.ichi2.anki.dialogs.tags.TagsDialogListener import com.ichi2.anki.receiver.SdCardReceiver -import com.ichi2.anki.reviewer.* +import com.ichi2.anki.reviewer.AutomaticAnswer import com.ichi2.anki.reviewer.AutomaticAnswer.AutomaticallyAnswered +import com.ichi2.anki.reviewer.AutomaticAnswerAction +import com.ichi2.anki.reviewer.EaseButton +import com.ichi2.anki.reviewer.FullScreenMode import com.ichi2.anki.reviewer.FullScreenMode.Companion.DEFAULT import com.ichi2.anki.reviewer.FullScreenMode.Companion.fromPreference +import com.ichi2.anki.reviewer.PreviousAnswerIndicator +import com.ichi2.anki.reviewer.ReviewerUi import com.ichi2.anki.reviewer.ReviewerUi.ControlBlock import com.ichi2.anki.servicelayer.AnkiMethod import com.ichi2.anki.servicelayer.LanguageHintService.applyLanguageHint import com.ichi2.anki.servicelayer.NoteService.isMarked -import com.ichi2.anki.servicelayer.SchedulerService.* +import com.ichi2.anki.servicelayer.SchedulerService.BuryCard +import com.ichi2.anki.servicelayer.SchedulerService.BuryNote +import com.ichi2.anki.servicelayer.SchedulerService.DeleteNote +import com.ichi2.anki.servicelayer.SchedulerService.GetCard +import com.ichi2.anki.servicelayer.SchedulerService.NextCard +import com.ichi2.anki.servicelayer.SchedulerService.SuspendCard +import com.ichi2.anki.servicelayer.SchedulerService.SuspendNote import com.ichi2.anki.servicelayer.TaskListenerBuilder import com.ichi2.anki.servicelayer.UndoService.Undo import com.ichi2.anki.snackbar.SnackbarBuilder @@ -79,10 +127,20 @@ import com.ichi2.annotations.NeedsTest import com.ichi2.async.TaskListener import com.ichi2.async.updateCard import com.ichi2.compat.CompatHelper.Companion.compat -import com.ichi2.libanki.* +import com.ichi2.libanki.Card +import com.ichi2.libanki.CardId +import com.ichi2.libanki.ChangeManager import com.ichi2.libanki.Collection +import com.ichi2.libanki.Consts import com.ichi2.libanki.Consts.BUTTON_TYPE +import com.ichi2.libanki.DeckId +import com.ichi2.libanki.Decks +import com.ichi2.libanki.Sound import com.ichi2.libanki.Sound.SoundSide +import com.ichi2.libanki.SoundOrVideoTag +import com.ichi2.libanki.TTSTag +import com.ichi2.libanki.Utils +import com.ichi2.libanki.getAvTag import com.ichi2.libanki.sched.AbstractSched import com.ichi2.libanki.sched.SchedV2 import com.ichi2.themes.Themes @@ -104,10 +162,14 @@ import kotlinx.coroutines.Job import net.ankiweb.rsdroid.BackendFactory import net.ankiweb.rsdroid.RustCleanup import timber.log.Timber -import java.io.* +import java.io.ByteArrayInputStream +import java.io.File +import java.io.FileInputStream +import java.io.FileOutputStream +import java.io.IOException +import java.io.UnsupportedEncodingException import java.lang.ref.WeakReference import java.net.URLDecoder -import java.util.* import java.util.concurrent.locks.Lock import java.util.concurrent.locks.ReadWriteLock import java.util.concurrent.locks.ReentrantReadWriteLock diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/AnkiActivity.kt b/AnkiDroid/src/main/java/com/ichi2/anki/AnkiActivity.kt index 1fe1bec3deac..77a64e5aff6b 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/AnkiActivity.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/AnkiActivity.kt @@ -16,7 +16,11 @@ import android.media.AudioManager import android.net.Uri import android.os.Build import android.os.Bundle -import android.view.* +import android.view.Menu +import android.view.MenuItem +import android.view.View +import android.view.ViewGroup +import android.view.WindowManager import android.view.animation.Animation import android.widget.ProgressBar import androidx.activity.result.ActivityResultLauncher @@ -37,7 +41,10 @@ import androidx.fragment.app.DialogFragment import androidx.fragment.app.FragmentManager import com.ichi2.anim.ActivityTransitionAnimation import com.ichi2.anim.ActivityTransitionAnimation.Direction -import com.ichi2.anim.ActivityTransitionAnimation.Direction.* +import com.ichi2.anim.ActivityTransitionAnimation.Direction.DEFAULT +import com.ichi2.anim.ActivityTransitionAnimation.Direction.FADE +import com.ichi2.anim.ActivityTransitionAnimation.Direction.NONE +import com.ichi2.anim.ActivityTransitionAnimation.Direction.START import com.ichi2.anki.CollectionManager.withCol import com.ichi2.anki.UIUtils.showThemedToast import com.ichi2.anki.analytics.UsageAnalytics @@ -49,7 +56,7 @@ import com.ichi2.anki.preferences.Preferences import com.ichi2.anki.preferences.Preferences.Companion.MINIMUM_CARDS_DUE_FOR_NOTIFICATION import com.ichi2.anki.snackbar.showSnackbar import com.ichi2.anki.workarounds.AppLoadedFromBackupWorkaround.showedActivityFailedScreen -import com.ichi2.async.* +import com.ichi2.async.CollectionLoader import com.ichi2.compat.CompatHelper.Companion.compat import com.ichi2.compat.customtabs.CustomTabActivityHelper import com.ichi2.compat.customtabs.CustomTabsFallback diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/AnkiDroidApp.kt b/AnkiDroid/src/main/java/com/ichi2/anki/AnkiDroidApp.kt index c62322e67791..3ca49630820e 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/AnkiDroidApp.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/AnkiDroidApp.kt @@ -44,12 +44,16 @@ import com.ichi2.anki.services.BootService import com.ichi2.anki.services.NotificationService import com.ichi2.compat.CompatHelper import com.ichi2.themes.Themes -import com.ichi2.utils.* +import com.ichi2.utils.AdaptionUtil +import com.ichi2.utils.ExceptionUtil +import com.ichi2.utils.KotlinCleanup +import com.ichi2.utils.LanguageUtil +import com.ichi2.utils.Permissions import net.ankiweb.rsdroid.BackendFactory import timber.log.Timber import timber.log.Timber.DebugTree import java.io.InputStream -import java.util.* +import java.util.Locale import java.util.regex.Pattern /** diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/AnkiFont.kt b/AnkiDroid/src/main/java/com/ichi2/anki/AnkiFont.kt index ad2ccdb0c830..022e1b23baba 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/AnkiFont.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/AnkiFont.kt @@ -6,9 +6,6 @@ import android.graphics.Typeface import com.ichi2.libanki.Utils import timber.log.Timber import java.io.File -import java.lang.RuntimeException -import java.lang.StringBuilder -import java.util.* class AnkiFont private constructor(val name: String, private val family: String, private val attributes: List, val path: String) { private var mIsDefault = false diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/BackendBackups.kt b/AnkiDroid/src/main/java/com/ichi2/anki/BackendBackups.kt index 08df32ebf38f..cf7d72b3da33 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/BackendBackups.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/BackendBackups.kt @@ -21,7 +21,7 @@ package com.ichi2.anki import com.ichi2.anki.CollectionManager.withCol import com.ichi2.libanki.awaitBackupCompletion import com.ichi2.libanki.createBackup -import kotlinx.coroutines.* +import kotlinx.coroutines.delay fun DeckPicker.performBackupInBackground() { launchCatchingTask { diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/BackupManager.kt b/AnkiDroid/src/main/java/com/ichi2/anki/BackupManager.kt index 4b9c85c715f3..0c0c8ee5eecd 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/BackupManager.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/BackupManager.kt @@ -32,7 +32,9 @@ import java.io.FileOutputStream import java.io.IOException import java.text.ParseException import java.text.SimpleDateFormat -import java.util.* +import java.util.Calendar +import java.util.Date +import java.util.UnknownFormatConversionException import java.util.zip.ZipEntry import java.util.zip.ZipOutputStream diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/CardBrowser.kt b/AnkiDroid/src/main/java/com/ichi2/anki/CardBrowser.kt index e6cfa2946a9a..c739fdb41866 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/CardBrowser.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/CardBrowser.kt @@ -19,88 +19,64 @@ package com.ichi2.anki import android.content.* -import android.graphics.Typeface -import android.os.Bundle -import android.os.SystemClock -import android.text.TextUtils -import android.util.TypedValue +import android.graphics.* +import android.os.* +import android.text.* +import android.util.* import android.view.* import android.widget.* -import android.widget.AdapterView.OnItemSelectedListener -import androidx.activity.result.ActivityResult -import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult -import androidx.annotation.CheckResult -import androidx.annotation.VisibleForTesting +import android.widget.AdapterView.* +import androidx.activity.result.* +import androidx.activity.result.contract.ActivityResultContracts.* +import androidx.annotation.* import androidx.appcompat.widget.SearchView -import androidx.core.content.edit -import anki.collection.OpChanges -import com.afollestad.materialdialogs.list.SingleChoiceListener -import com.google.android.material.floatingactionbutton.FloatingActionButton -import com.google.android.material.snackbar.Snackbar -import com.ichi2.anim.ActivityTransitionAnimation +import androidx.core.content.* +import anki.collection.* +import com.afollestad.materialdialogs.list.* +import com.google.android.material.floatingactionbutton.* +import com.google.android.material.snackbar.* +import com.ichi2.anim.* import com.ichi2.anki.AnkiFont.Companion.getTypeface import com.ichi2.anki.CardUtils.getAllCards import com.ichi2.anki.CardUtils.getNotes import com.ichi2.anki.CollectionManager.withCol import com.ichi2.anki.UIUtils.showThemedToast import com.ichi2.anki.dialogs.* +import com.ichi2.anki.dialogs.CardBrowserMySearchesDialog.* import com.ichi2.anki.dialogs.CardBrowserMySearchesDialog.Companion.newInstance -import com.ichi2.anki.dialogs.CardBrowserMySearchesDialog.MySearchesDialogListener import com.ichi2.anki.dialogs.CardBrowserOrderDialog.Companion.newInstance +import com.ichi2.anki.dialogs.DeckSelectionDialog.* import com.ichi2.anki.dialogs.DeckSelectionDialog.Companion.newInstance -import com.ichi2.anki.dialogs.DeckSelectionDialog.DeckSelectionListener -import com.ichi2.anki.dialogs.DeckSelectionDialog.SelectableDeck import com.ichi2.anki.dialogs.RescheduleDialog.rescheduleMultipleCards import com.ichi2.anki.dialogs.RescheduleDialog.rescheduleSingleCard -import com.ichi2.anki.dialogs.tags.TagsDialog -import com.ichi2.anki.dialogs.tags.TagsDialogFactory -import com.ichi2.anki.dialogs.tags.TagsDialogListener -import com.ichi2.anki.receiver.SdCardReceiver +import com.ichi2.anki.dialogs.tags.* +import com.ichi2.anki.receiver.* +import com.ichi2.anki.servicelayer.* import com.ichi2.anki.servicelayer.NoteService.isMarked -import com.ichi2.anki.servicelayer.SchedulerService.NextCard -import com.ichi2.anki.servicelayer.SchedulerService.RepositionCards -import com.ichi2.anki.servicelayer.SchedulerService.RescheduleCards -import com.ichi2.anki.servicelayer.SchedulerService.ResetCards -import com.ichi2.anki.servicelayer.UndoService.Undo -import com.ichi2.anki.servicelayer.avgIntervalOfNote -import com.ichi2.anki.servicelayer.totalLapsesOfNote -import com.ichi2.anki.servicelayer.totalReviewsForNote -import com.ichi2.anki.snackbar.showSnackbar -import com.ichi2.anki.widgets.DeckDropDownAdapter.SubtitleListener +import com.ichi2.anki.servicelayer.SchedulerService.* +import com.ichi2.anki.servicelayer.UndoService.* +import com.ichi2.anki.snackbar.* +import com.ichi2.anki.widgets.DeckDropDownAdapter.* import com.ichi2.async.* -import com.ichi2.async.CollectionTask.ChangeDeckMulti -import com.ichi2.async.CollectionTask.CheckCardSelection -import com.ichi2.async.CollectionTask.DeleteNoteMulti -import com.ichi2.async.CollectionTask.MarkNoteMulti -import com.ichi2.async.CollectionTask.RenderBrowserQA -import com.ichi2.async.CollectionTask.SuspendCardMulti -import com.ichi2.compat.Compat +import com.ichi2.async.CollectionTask.* +import com.ichi2.compat.* import com.ichi2.libanki.* -import com.ichi2.libanki.SortOrder.NoOrdering -import com.ichi2.libanki.SortOrder.UseCollectionOrdering -import com.ichi2.libanki.stats.Stats +import com.ichi2.libanki.SortOrder.* +import com.ichi2.libanki.stats.* import com.ichi2.themes.Themes.getColorFromAttr -import com.ichi2.ui.CardBrowserSearchView -import com.ichi2.ui.FixedTextView +import com.ichi2.ui.* import com.ichi2.upgrade.Upgrade.upgradeJSONIfNecessary import com.ichi2.utils.* import com.ichi2.utils.HandlerUtils.postDelayedOnNewHandler import com.ichi2.utils.Permissions.hasStorageAccessPermission import com.ichi2.utils.TagsUtil.getUpdatedTags import com.ichi2.widget.WidgetStatus.update -import net.ankiweb.rsdroid.BackendFactory -import net.ankiweb.rsdroid.RustCleanup -import timber.log.Timber -import java.lang.Exception -import java.lang.IllegalStateException -import java.lang.StringBuilder +import net.ankiweb.rsdroid.* +import timber.log.* import java.util.* -import java.util.function.Consumer -import kotlin.collections.ArrayList -import kotlin.math.abs -import kotlin.math.ceil -import kotlin.math.max -import kotlin.math.min +import java.util.function.* +import kotlin.Pair +import kotlin.math.* @Suppress("LeakingThis") // The class is only 'open' due to testing @KotlinCleanup("scan through this class and add attributes - not started") diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/CardInfo.kt b/AnkiDroid/src/main/java/com/ichi2/anki/CardInfo.kt index a4d25d7f2576..7adf2037e5fe 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/CardInfo.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/CardInfo.kt @@ -32,8 +32,13 @@ import androidx.core.content.ContextCompat import com.ichi2.anim.ActivityTransitionAnimation import com.ichi2.anki.UIUtils.showThemedToast import com.ichi2.compat.CompatHelper.Companion.getParcelableExtraCompat -import com.ichi2.libanki.* +import com.ichi2.libanki.Card +import com.ichi2.libanki.CardId import com.ichi2.libanki.Collection +import com.ichi2.libanki.Consts +import com.ichi2.libanki.Model +import com.ichi2.libanki.NoteId +import com.ichi2.libanki.Utils import com.ichi2.libanki.stats.Stats import com.ichi2.ui.FixedTextView import com.ichi2.utils.LanguageUtil @@ -41,7 +46,8 @@ import com.ichi2.utils.UiUtil.makeColored import net.ankiweb.rsdroid.RustCleanup import timber.log.Timber import java.text.DateFormat -import java.util.* +import java.util.Date +import java.util.Locale import java.util.function.Function @RustCleanup("Remove this whole activity and use the new Anki page once the new backend is the default") diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/CardTemplateEditor.kt b/AnkiDroid/src/main/java/com/ichi2/anki/CardTemplateEditor.kt index 5c810e491671..79086cce3226 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/CardTemplateEditor.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/CardTemplateEditor.kt @@ -23,7 +23,14 @@ import android.os.Build import android.os.Bundle import android.text.Editable import android.text.TextWatcher -import android.view.* +import android.view.ActionMode +import android.view.KeyEvent +import android.view.LayoutInflater +import android.view.Menu +import android.view.MenuInflater +import android.view.MenuItem +import android.view.View +import android.view.ViewGroup import androidx.activity.result.ActivityResult import androidx.activity.result.contract.ActivityResultContracts import androidx.annotation.CheckResult @@ -41,21 +48,33 @@ import com.afollestad.materialdialogs.MaterialDialog import com.google.android.material.bottomnavigation.BottomNavigationView import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayoutMediator -import com.ichi2.anim.ActivityTransitionAnimation.Direction.* -import com.ichi2.anki.dialogs.* +import com.ichi2.anim.ActivityTransitionAnimation.Direction.END +import com.ichi2.anki.dialogs.ConfirmationDialog +import com.ichi2.anki.dialogs.DeckSelectionDialog import com.ichi2.anki.dialogs.DeckSelectionDialog.DeckSelectionListener import com.ichi2.anki.dialogs.DeckSelectionDialog.SelectableDeck +import com.ichi2.anki.dialogs.DiscardChangesDialog +import com.ichi2.anki.dialogs.InsertFieldDialog import com.ichi2.anki.dialogs.InsertFieldDialog.Companion.REQUEST_FIELD_INSERT import com.ichi2.anki.exception.ConfirmModSchemaException import com.ichi2.annotations.NeedsTest import com.ichi2.async.TaskListenerWithContext -import com.ichi2.libanki.* import com.ichi2.libanki.Collection +import com.ichi2.libanki.Deck +import com.ichi2.libanki.Decks +import com.ichi2.libanki.Model +import com.ichi2.libanki.Models import com.ichi2.libanki.Models.Companion.NOT_FOUND_NOTE_TYPE +import com.ichi2.libanki.NoteId +import com.ichi2.libanki.NoteTypeId import com.ichi2.themes.StyledProgressDialog import com.ichi2.ui.FixedEditText import com.ichi2.ui.FixedTextView -import com.ichi2.utils.* +import com.ichi2.utils.FunctionalInterfaces +import com.ichi2.utils.JSONArray +import com.ichi2.utils.JSONException +import com.ichi2.utils.JSONObject +import com.ichi2.utils.KotlinCleanup import timber.log.Timber import java.util.regex.Pattern import kotlin.math.max diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/CardTemplatePreviewer.kt b/AnkiDroid/src/main/java/com/ichi2/anki/CardTemplatePreviewer.kt index efff0d54988f..6e15ae24ba6d 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/CardTemplatePreviewer.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/CardTemplatePreviewer.kt @@ -23,15 +23,19 @@ import com.ichi2.anki.UIUtils.showThemedToast import com.ichi2.anki.cardviewer.PreviewLayout import com.ichi2.anki.cardviewer.PreviewLayout.Companion.createAndDisplay import com.ichi2.annotations.NeedsTest -import com.ichi2.libanki.* +import com.ichi2.libanki.Card import com.ichi2.libanki.Collection +import com.ichi2.libanki.Model +import com.ichi2.libanki.Note +import com.ichi2.libanki.TemplateManager import com.ichi2.libanki.TemplateManager.TemplateRenderContext.TemplateRenderOutput import com.ichi2.libanki.utils.NoteUtils import com.ichi2.utils.JSONObject import net.ankiweb.rsdroid.BackendFactory import timber.log.Timber import java.io.IOException -import java.util.* +import java.util.ArrayList +import java.util.Arrays /** * The card template previewer intent must supply one or more cards to show and the index in the list from where diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/CardUtils.kt b/AnkiDroid/src/main/java/com/ichi2/anki/CardUtils.kt index 68411f856e01..7875fc8b1e8a 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/CardUtils.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/CardUtils.kt @@ -5,7 +5,6 @@ import com.ichi2.anki.servicelayer.NoteService.isMarked import com.ichi2.libanki.Card import com.ichi2.libanki.Note import com.ichi2.utils.HashUtil.HashSetInit -import java.util.* /** * Utilities for working on multiple cards diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/CollectionHelper.kt b/AnkiDroid/src/main/java/com/ichi2/anki/CollectionHelper.kt index 1517fbabfe78..e9a935449e6f 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/CollectionHelper.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/CollectionHelper.kt @@ -34,8 +34,6 @@ import net.ankiweb.rsdroid.BackendFactory import timber.log.Timber import java.io.File import java.io.IOException -import java.lang.Exception -import kotlin.Throws /** * Singleton which opens, stores, and closes the reference to the Collection. diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/CollectionManager.kt b/AnkiDroid/src/main/java/com/ichi2/anki/CollectionManager.kt index 27e9bd41af1d..c6dfbe108528 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/CollectionManager.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/CollectionManager.kt @@ -25,7 +25,10 @@ import com.ichi2.libanki.CollectionV16 import com.ichi2.libanki.Storage.collection import com.ichi2.libanki.importCollectionPackage import com.ichi2.utils.Threads -import kotlinx.coroutines.* +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.runBlocking +import kotlinx.coroutines.withContext import net.ankiweb.rsdroid.Backend import net.ankiweb.rsdroid.BackendException import net.ankiweb.rsdroid.BackendFactory diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/CoroutineHelpers.kt b/AnkiDroid/src/main/java/com/ichi2/anki/CoroutineHelpers.kt index d1aed867ec17..8f6e3be38c0f 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/CoroutineHelpers.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/CoroutineHelpers.kt @@ -26,7 +26,16 @@ import androidx.lifecycle.coroutineScope import anki.collection.Progress import com.ichi2.anki.snackbar.showSnackbar import com.ichi2.libanki.Collection -import kotlinx.coroutines.* +import kotlinx.coroutines.CancellationException +import kotlinx.coroutines.CoroutineExceptionHandler +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking +import kotlinx.coroutines.withContext import net.ankiweb.rsdroid.Backend import net.ankiweb.rsdroid.BackendException import net.ankiweb.rsdroid.exceptions.BackendInterruptedException diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/CrashReportService.kt b/AnkiDroid/src/main/java/com/ichi2/anki/CrashReportService.kt index 676f1320e9f4..45fee78cba87 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/CrashReportService.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/CrashReportService.kt @@ -32,11 +32,15 @@ import com.ichi2.utils.KotlinCleanup import com.ichi2.utils.WebViewDebugging.setDataDirectorySuffix import org.acra.ACRA import org.acra.ReportField -import org.acra.config.* +import org.acra.config.CoreConfigurationBuilder +import org.acra.config.DialogConfigurationBuilder +import org.acra.config.HttpSenderConfigurationBuilder +import org.acra.config.LimiterConfigurationBuilder +import org.acra.config.LimiterData +import org.acra.config.ToastConfigurationBuilder import org.acra.sender.HttpSender import timber.log.Timber -import java.util.* -import kotlin.collections.HashMap +import java.util.Calendar object CrashReportService { diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/DeckOptions.kt b/AnkiDroid/src/main/java/com/ichi2/anki/DeckOptions.kt index 01623ede9ec7..2aadabe7f533 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/DeckOptions.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/DeckOptions.kt @@ -19,7 +19,9 @@ package com.ichi2.anki import android.app.AlarmManager -import android.content.* +import android.content.Context +import android.content.Intent +import android.content.SharedPreferences import android.content.res.Configuration import android.os.Bundle import android.preference.CheckBoxPreference @@ -50,10 +52,17 @@ import com.ichi2.themes.Themes import com.ichi2.themes.Themes.themeFollowsSystem import com.ichi2.themes.Themes.updateCurrentTheme import com.ichi2.ui.AppCompatPreferenceActivity -import com.ichi2.utils.* +import com.ichi2.utils.JSONArray +import com.ichi2.utils.JSONException +import com.ichi2.utils.JSONObject +import com.ichi2.utils.KotlinCleanup +import com.ichi2.utils.NamedJSONComparator import kotlinx.coroutines.launch import timber.log.Timber -import java.util.* +import java.util.Calendar +import java.util.Collections +import java.util.LinkedList +import java.util.Locale @NeedsTest("onCreate - to be done after preference migration (5019)") @KotlinCleanup("lateinit wherever possible") diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/DeckPicker.kt b/AnkiDroid/src/main/java/com/ichi2/anki/DeckPicker.kt index 5f996702fa58..ec72903c7630 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/DeckPicker.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/DeckPicker.kt @@ -25,20 +25,34 @@ package com.ichi2.anki import android.Manifest -import android.content.* +import android.content.BroadcastReceiver +import android.content.Context +import android.content.DialogInterface +import android.content.Intent +import android.content.IntentFilter +import android.content.SharedPreferences import android.content.pm.PackageManager import android.database.SQLException import android.graphics.PixelFormat import android.graphics.drawable.Drawable import android.net.Uri -import android.os.* +import android.os.Build +import android.os.Bundle +import android.os.Message import android.provider.Settings import android.text.TextUtils import android.util.TypedValue -import android.view.* +import android.view.KeyEvent +import android.view.Menu +import android.view.MenuItem +import android.view.View import android.view.View.OnLongClickListener +import android.view.ViewPropertyAnimator import android.view.WindowManager.BadTokenException -import android.widget.* +import android.widget.Filterable +import android.widget.LinearLayout +import android.widget.RelativeLayout +import android.widget.TextView import androidx.annotation.StringRes import androidx.annotation.VisibleForTesting import androidx.appcompat.app.AlertDialog @@ -58,21 +72,44 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import anki.collection.OpChanges import com.afollestad.materialdialogs.MaterialDialog import com.google.android.material.snackbar.Snackbar -import com.ichi2.anim.ActivityTransitionAnimation.Direction.* +import com.ichi2.anim.ActivityTransitionAnimation.Direction.DEFAULT +import com.ichi2.anim.ActivityTransitionAnimation.Direction.FADE +import com.ichi2.anim.ActivityTransitionAnimation.Direction.START import com.ichi2.anki.CollectionHelper.CollectionIntegrityStorageCheck import com.ichi2.anki.CollectionManager.TR import com.ichi2.anki.CollectionManager.withCol import com.ichi2.anki.CollectionManager.withOpenColOrNull import com.ichi2.anki.InitialActivity.StartupFailure -import com.ichi2.anki.InitialActivity.StartupFailure.* +import com.ichi2.anki.InitialActivity.StartupFailure.DATABASE_LOCKED +import com.ichi2.anki.InitialActivity.StartupFailure.DB_ERROR +import com.ichi2.anki.InitialActivity.StartupFailure.DIRECTORY_NOT_ACCESSIBLE +import com.ichi2.anki.InitialActivity.StartupFailure.FUTURE_ANKIDROID_VERSION +import com.ichi2.anki.InitialActivity.StartupFailure.SD_CARD_NOT_MOUNTED +import com.ichi2.anki.InitialActivity.StartupFailure.WEBVIEW_FAILED +import com.ichi2.anki.R.string import com.ichi2.anki.StudyOptionsFragment.DeckStudyData import com.ichi2.anki.StudyOptionsFragment.StudyOptionsListener import com.ichi2.anki.UIUtils.showThemedToast import com.ichi2.anki.analytics.UsageAnalytics -import com.ichi2.anki.dialogs.* +import com.ichi2.anki.dialogs.AsyncDialogFragment +import com.ichi2.anki.dialogs.ConfirmationDialog +import com.ichi2.anki.dialogs.CreateDeckDialog +import com.ichi2.anki.dialogs.CreateDeckDialog.DeckDialogType.FILTERED_DECK +import com.ichi2.anki.dialogs.DatabaseErrorDialog +import com.ichi2.anki.dialogs.DeckPickerAnalyticsOptInDialog +import com.ichi2.anki.dialogs.DeckPickerBackupNoSpaceLeftDialog +import com.ichi2.anki.dialogs.DeckPickerConfirmDeleteDeckDialog +import com.ichi2.anki.dialogs.DeckPickerContextMenu +import com.ichi2.anki.dialogs.DeckPickerNoSpaceLeftDialog +import com.ichi2.anki.dialogs.DeckPickerNoSpaceToDowngradeDialog import com.ichi2.anki.dialogs.DeckPickerNoSpaceToDowngradeDialog.FileSizeFormatter +import com.ichi2.anki.dialogs.DialogHandler +import com.ichi2.anki.dialogs.ImportDialog import com.ichi2.anki.dialogs.ImportDialog.ImportDialogListener +import com.ichi2.anki.dialogs.ImportFileSelectionFragment +import com.ichi2.anki.dialogs.MediaCheckDialog import com.ichi2.anki.dialogs.MediaCheckDialog.MediaCheckDialogListener +import com.ichi2.anki.dialogs.SyncErrorDialog import com.ichi2.anki.dialogs.SyncErrorDialog.Companion.newInstance import com.ichi2.anki.dialogs.SyncErrorDialog.SyncErrorDialogListener import com.ichi2.anki.dialogs.customstudy.CustomStudyDialog @@ -92,14 +129,30 @@ import com.ichi2.anki.web.CustomSyncServer import com.ichi2.anki.web.HostNumFactory import com.ichi2.anki.widgets.DeckAdapter import com.ichi2.annotations.NeedsTest -import com.ichi2.async.* -import com.ichi2.async.CollectionTask.* +import com.ichi2.async.Cancellable +import com.ichi2.async.CollectionTask.CheckDatabase +import com.ichi2.async.CollectionTask.EmptyCram +import com.ichi2.async.CollectionTask.FindEmptyCards +import com.ichi2.async.CollectionTask.ImportAdd +import com.ichi2.async.CollectionTask.ImportReplace +import com.ichi2.async.CollectionTask.LoadDeckCounts +import com.ichi2.async.CollectionTask.RebuildCram +import com.ichi2.async.CollectionTask.RepairCollection +import com.ichi2.async.Connection import com.ichi2.async.Connection.CancellableTaskListener import com.ichi2.async.Connection.ConflictResolution +import com.ichi2.async.TaskListener +import com.ichi2.async.TaskListenerWithContext +import com.ichi2.async.TaskManager +import com.ichi2.async.deleteMedia import com.ichi2.compat.CompatHelper.Companion.sdkVersion -import com.ichi2.libanki.* +import com.ichi2.libanki.ChangeManager import com.ichi2.libanki.Collection import com.ichi2.libanki.Collection.CheckDatabaseResult +import com.ichi2.libanki.Consts +import com.ichi2.libanki.DeckId +import com.ichi2.libanki.Decks +import com.ichi2.libanki.Utils import com.ichi2.libanki.importer.AnkiPackageImporter import com.ichi2.libanki.sched.AbstractDeckTreeNode import com.ichi2.libanki.sched.DeckDueTreeNode @@ -107,12 +160,21 @@ import com.ichi2.libanki.sched.TreeNode import com.ichi2.libanki.sched.findInDeckTree import com.ichi2.libanki.sync.CustomSyncServerUrlException import com.ichi2.libanki.sync.Syncer.ConnectionResultType +import com.ichi2.libanki.undoableOp import com.ichi2.libanki.utils.TimeManager import com.ichi2.themes.StyledProgressDialog import com.ichi2.ui.BadgeDrawableBuilder -import com.ichi2.utils.* +import com.ichi2.utils.AdaptionUtil +import com.ichi2.utils.Computation +import com.ichi2.utils.HandlerUtils +import com.ichi2.utils.ImportUtils +import com.ichi2.utils.JSONException +import com.ichi2.utils.KotlinCleanup +import com.ichi2.utils.NetworkUtils import com.ichi2.utils.NetworkUtils.isActiveNetworkMetered import com.ichi2.utils.Permissions.hasStorageAccessPermission +import com.ichi2.utils.SyncStatus +import com.ichi2.utils.VersionUtils import com.ichi2.widget.WidgetStatus import kotlinx.coroutines.Job import net.ankiweb.rsdroid.BackendFactory @@ -778,7 +840,7 @@ open class DeckPicker : return true } R.id.action_new_filtered_deck -> { - val createFilteredDeckDialog = CreateDeckDialog(this@DeckPicker, R.string.new_deck, CreateDeckDialog.DeckDialogType.FILTERED_DECK, null) + val createFilteredDeckDialog = CreateDeckDialog(this@DeckPicker, string.new_deck, FILTERED_DECK, null) createFilteredDeckDialog.setOnNewDeckCreated { // a filtered deck was created openStudyOptions(true) diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/DeckSpinnerSelection.kt b/AnkiDroid/src/main/java/com/ichi2/anki/DeckSpinnerSelection.kt index 39e0ecfd38e4..e83bb556de9f 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/DeckSpinnerSelection.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/DeckSpinnerSelection.kt @@ -19,7 +19,6 @@ import android.view.MotionEvent import android.view.View import android.view.ViewGroup import android.widget.ArrayAdapter -import android.widget.Filter import android.widget.Spinner import android.widget.TextView import androidx.appcompat.app.ActionBar @@ -29,8 +28,12 @@ import com.ichi2.anki.dialogs.DeckSelectionDialog.SelectableDeck import com.ichi2.anki.dialogs.DeckSelectionDialog.SelectableDeck.Companion.fromCollection import com.ichi2.anki.servicelayer.DeckService.shouldShowDefaultDeck import com.ichi2.anki.widgets.DeckDropDownAdapter -import com.ichi2.libanki.* +import com.ichi2.libanki.Card import com.ichi2.libanki.Collection +import com.ichi2.libanki.Consts +import com.ichi2.libanki.Deck +import com.ichi2.libanki.DeckId +import com.ichi2.libanki.Decks import com.ichi2.utils.FragmentManagerSupplier import com.ichi2.utils.FunctionalInterfaces import com.ichi2.utils.asFragmentManagerSupplier diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/FieldEditLine.kt b/AnkiDroid/src/main/java/com/ichi2/anki/FieldEditLine.kt index 48e3d3c2ec27..ed8324dbb607 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/FieldEditLine.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/FieldEditLine.kt @@ -40,7 +40,7 @@ import com.ichi2.anki.UIUtils.getDensityAdjustedValue import com.ichi2.ui.AnimationUtil.collapseView import com.ichi2.ui.AnimationUtil.expandView import com.ichi2.utils.KotlinCleanup -import java.util.* +import java.util.Locale @KotlinCleanup("check which properties could be made not nullable") class FieldEditLine : FrameLayout { diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/FieldEditText.kt b/AnkiDroid/src/main/java/com/ichi2/anki/FieldEditText.kt index 6412abc8333a..901a3b7e7f36 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/FieldEditText.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/FieldEditText.kt @@ -46,7 +46,8 @@ import com.ichi2.utils.ClipboardUtil.getPlainText import com.ichi2.utils.ClipboardUtil.hasImage import com.ichi2.utils.KotlinCleanup import timber.log.Timber -import java.util.* +import java.util.Locale +import java.util.Objects import kotlin.math.max import kotlin.math.min diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/FilterSheetBottomFragment.kt b/AnkiDroid/src/main/java/com/ichi2/anki/FilterSheetBottomFragment.kt index fd56e810756b..20c43d00abd5 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/FilterSheetBottomFragment.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/FilterSheetBottomFragment.kt @@ -22,7 +22,10 @@ import android.os.SystemClock import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.* +import android.widget.Button +import android.widget.ImageView +import android.widget.LinearLayout +import android.widget.TextView import androidx.annotation.DrawableRes import androidx.annotation.StringRes import androidx.core.view.isVisible diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/FilteredDeckOptions.kt b/AnkiDroid/src/main/java/com/ichi2/anki/FilteredDeckOptions.kt index 53af56b583e4..ea830dc10a8e 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/FilteredDeckOptions.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/FilteredDeckOptions.kt @@ -1,3 +1,5 @@ +@file:Suppress("DEPRECATION") // conversion to fragments tracked in github as #5019 + package com.ichi2.anki /**************************************************************************************** @@ -20,7 +22,11 @@ package com.ichi2.anki import android.content.SharedPreferences import android.content.res.Configuration import android.os.Bundle -import android.preference.* +import android.preference.CheckBoxPreference +import android.preference.EditTextPreference +import android.preference.ListPreference +import android.preference.Preference +import android.preference.PreferenceCategory import com.ichi2.anim.ActivityTransitionAnimation import com.ichi2.anim.ActivityTransitionAnimation.slide import com.ichi2.anki.analytics.UsageAnalytics @@ -284,7 +290,6 @@ class FilteredDeckOptions : slide(this, ActivityTransitionAnimation.Direction.FADE) } - @Suppress("deprecation") // conversion to fragments tracked in github as #5019 override fun updateSummaries() { mAllowCommit = false // for all text preferences, set summary as current database value diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/IntroductionActivity.kt b/AnkiDroid/src/main/java/com/ichi2/anki/IntroductionActivity.kt index 75e64efcb388..3a4ef0f3d91e 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/IntroductionActivity.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/IntroductionActivity.kt @@ -28,7 +28,7 @@ import com.github.appintro.AppIntro import com.github.appintro.AppIntroPageTransformerType import com.ichi2.anki.InitialActivity.StartupFailure import com.ichi2.anki.introduction.SetupCollectionFragment -import com.ichi2.anki.introduction.SetupCollectionFragment.* +import com.ichi2.anki.introduction.SetupCollectionFragment.CollectionSetupOption import com.ichi2.anki.introduction.SetupCollectionFragment.Companion.handleCollectionSetupOption import com.ichi2.anki.workarounds.AppLoadedFromBackupWorkaround.showedActivityFailedScreen import com.ichi2.themes.Themes diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/LanguageUtils.kt b/AnkiDroid/src/main/java/com/ichi2/anki/LanguageUtils.kt index abab4317f178..dd60651db4e7 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/LanguageUtils.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/LanguageUtils.kt @@ -16,7 +16,7 @@ package com.ichi2.anki -import java.util.* +import java.util.Locale object LanguageUtils { /** diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/MediaRegistration.kt b/AnkiDroid/src/main/java/com/ichi2/anki/MediaRegistration.kt index 711deff40d1b..cea989350527 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/MediaRegistration.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/MediaRegistration.kt @@ -27,7 +27,11 @@ import com.ichi2.libanki.exception.EmptyMediaException import com.ichi2.utils.ContentResolverUtil.getFileName import com.ichi2.utils.FileUtil.getFileNameAndExtension import timber.log.Timber -import java.io.* +import java.io.File +import java.io.FileNotFoundException +import java.io.FileOutputStream +import java.io.IOException +import java.io.InputStream /** * RegisterMediaForWebView is used for registering media in temp path, diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/MetaDB.kt b/AnkiDroid/src/main/java/com/ichi2/anki/MetaDB.kt index 793305ffd26e..ceec2f197bfd 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/MetaDB.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/MetaDB.kt @@ -11,8 +11,6 @@ import com.ichi2.libanki.DeckId import com.ichi2.libanki.Sound.SoundSide import com.ichi2.utils.KotlinCleanup import timber.log.Timber -import java.lang.Exception -import java.lang.IllegalStateException import java.util.regex.Pattern /** diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/ModelBrowser.kt b/AnkiDroid/src/main/java/com/ichi2/anki/ModelBrowser.kt index d89d20545d15..4860e298b367 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/ModelBrowser.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/ModelBrowser.kt @@ -19,9 +19,18 @@ package com.ichi2.anki import android.content.Context import android.content.Intent import android.os.Bundle -import android.view.* -import android.widget.* +import android.view.LayoutInflater +import android.view.Menu +import android.view.MenuItem +import android.view.View +import android.view.ViewGroup +import android.widget.AdapterView import android.widget.AdapterView.OnItemLongClickListener +import android.widget.ArrayAdapter +import android.widget.EditText +import android.widget.ListView +import android.widget.Spinner +import android.widget.TextView import androidx.activity.result.ActivityResult import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.ActionBar @@ -48,7 +57,6 @@ import com.ichi2.utils.KotlinCleanup import com.ichi2.utils.displayKeyboard import com.ichi2.widget.WidgetStatus.update import timber.log.Timber -import java.util.ArrayList @KotlinCleanup("Try converting variables to be non-null wherever possible + Standard in-IDE cleanup") @NeedsTest("add tests to ensure changes(renames & deletions) to the list of note types are visible in the UI") diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/ModelFieldEditor.kt b/AnkiDroid/src/main/java/com/ichi2/anki/ModelFieldEditor.kt index 3072e54fcdd3..2707993b487d 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/ModelFieldEditor.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/ModelFieldEditor.kt @@ -51,13 +51,13 @@ import com.ichi2.libanki.Collection import com.ichi2.libanki.Model import com.ichi2.themes.StyledProgressDialog.Companion.show import com.ichi2.ui.FixedEditText -import com.ichi2.utils.* +import com.ichi2.utils.JSONArray +import com.ichi2.utils.JSONException +import com.ichi2.utils.KotlinCleanup +import com.ichi2.utils.displayKeyboard import com.ichi2.widget.WidgetStatus import timber.log.Timber -import java.lang.NumberFormatException -import java.lang.RuntimeException -import java.util.* -import kotlin.Throws +import java.util.Locale class ModelFieldEditor : AnkiActivity(), LocaleSelectionDialogHandler { // Position of the current field selected @@ -420,7 +420,7 @@ class ModelFieldEditor : AnkiActivity(), LocaleSelectionDialogHandler { private suspend fun changeSortField(model: Model, idx: Int) { withProgress(resources.getString(R.string.model_field_editor_changing)) { - CollectionManager.withCol { + withCol { Timber.d("doInBackgroundChangeSortField") models.setSortIdx(model, idx) save() diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/MyAccount.kt b/AnkiDroid/src/main/java/com/ichi2/anki/MyAccount.kt index 8dfdb7561dae..5f2242b7b85a 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/MyAccount.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/MyAccount.kt @@ -39,7 +39,6 @@ import com.ichi2.utils.AdaptionUtil.isUserATestClient import com.ichi2.utils.KotlinCleanup import net.ankiweb.rsdroid.BackendFactory import timber.log.Timber -import java.lang.Exception import java.net.UnknownHostException /** diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/NavigationDrawerActivity.kt b/AnkiDroid/src/main/java/com/ichi2/anki/NavigationDrawerActivity.kt index 2d83778f04e4..e720866158da 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/NavigationDrawerActivity.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/NavigationDrawerActivity.kt @@ -40,7 +40,9 @@ import androidx.core.view.GravityCompat import androidx.drawerlayout.widget.ClosableDrawerLayout import androidx.drawerlayout.widget.DrawerLayout import com.google.android.material.navigation.NavigationView -import com.ichi2.anim.ActivityTransitionAnimation.Direction.* +import com.ichi2.anim.ActivityTransitionAnimation.Direction.END +import com.ichi2.anim.ActivityTransitionAnimation.Direction.FADE +import com.ichi2.anim.ActivityTransitionAnimation.Direction.START import com.ichi2.anki.dialogs.HelpDialog import com.ichi2.anki.preferences.Preferences import com.ichi2.anki.workarounds.FullDraggableContainerFix @@ -50,7 +52,7 @@ import com.ichi2.utils.HandlerUtils import com.ichi2.utils.KotlinCleanup import net.ankiweb.rsdroid.BackendFactory import timber.log.Timber -import java.util.* +import java.util.Arrays @KotlinCleanup("lateinit if possible") @KotlinCleanup("IDE-lint") diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/NoteEditor.kt b/AnkiDroid/src/main/java/com/ichi2/anki/NoteEditor.kt index cfea16d8d698..b49977509f25 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/NoteEditor.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/NoteEditor.kt @@ -32,11 +32,21 @@ import android.os.Bundle import android.text.Editable import android.text.TextUtils import android.text.TextWatcher -import android.view.* +import android.view.ActionMode +import android.view.KeyEvent +import android.view.Menu +import android.view.MenuItem +import android.view.View import android.view.View.OnFocusChangeListener import android.view.ViewGroup.MarginLayoutParams -import android.widget.* +import android.view.WindowManager +import android.widget.AdapterView import android.widget.AdapterView.OnItemSelectedListener +import android.widget.EditText +import android.widget.ImageButton +import android.widget.LinearLayout +import android.widget.Spinner +import android.widget.TextView import androidx.annotation.CheckResult import androidx.annotation.RequiresApi import androidx.annotation.StringRes @@ -48,7 +58,9 @@ import androidx.core.text.HtmlCompat import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.customview.customView import com.ichi2.anim.ActivityTransitionAnimation -import com.ichi2.anim.ActivityTransitionAnimation.Direction.* +import com.ichi2.anim.ActivityTransitionAnimation.Direction.END +import com.ichi2.anim.ActivityTransitionAnimation.Direction.NONE +import com.ichi2.anim.ActivityTransitionAnimation.Direction.START import com.ichi2.anki.dialogs.ConfirmationDialog import com.ichi2.anki.dialogs.DeckSelectionDialog.DeckSelectionListener import com.ichi2.anki.dialogs.DeckSelectionDialog.SelectableDeck @@ -60,7 +72,12 @@ import com.ichi2.anki.dialogs.tags.TagsDialogListener import com.ichi2.anki.exception.ConfirmModSchemaException import com.ichi2.anki.multimediacard.IMultimediaEditableNote import com.ichi2.anki.multimediacard.activity.MultimediaEditFieldActivity -import com.ichi2.anki.multimediacard.fields.* +import com.ichi2.anki.multimediacard.fields.AudioRecordingField +import com.ichi2.anki.multimediacard.fields.EFieldType +import com.ichi2.anki.multimediacard.fields.IField +import com.ichi2.anki.multimediacard.fields.ImageField +import com.ichi2.anki.multimediacard.fields.MediaClipField +import com.ichi2.anki.multimediacard.fields.TextField import com.ichi2.anki.multimediacard.impl.MultimediaEditableNote import com.ichi2.anki.noteeditor.CustomToolbarButton import com.ichi2.anki.noteeditor.FieldState @@ -79,18 +96,34 @@ import com.ichi2.annotations.NeedsTest import com.ichi2.compat.Compat import com.ichi2.compat.CompatHelper import com.ichi2.compat.CompatHelper.Companion.getParcelableExtraCompat -import com.ichi2.libanki.* +import com.ichi2.libanki.Card import com.ichi2.libanki.Collection +import com.ichi2.libanki.Consts +import com.ichi2.libanki.DeckId import com.ichi2.libanki.Decks.Companion.CURRENT_DECK +import com.ichi2.libanki.Model +import com.ichi2.libanki.Models import com.ichi2.libanki.Models.Companion.NOT_FOUND_NOTE_TYPE +import com.ichi2.libanki.Note import com.ichi2.libanki.Note.ClozeUtils import com.ichi2.libanki.Note.DupeOrEmpty +import com.ichi2.libanki.NoteTypeId +import com.ichi2.libanki.Utils import com.ichi2.themes.Themes -import com.ichi2.utils.* +import com.ichi2.utils.AdaptionUtil +import com.ichi2.utils.HashUtil +import com.ichi2.utils.JSONArray +import com.ichi2.utils.JSONObject +import com.ichi2.utils.KeyUtils +import com.ichi2.utils.KotlinCleanup +import com.ichi2.utils.MapUtil +import com.ichi2.utils.NoteFieldDecorator +import com.ichi2.utils.TextViewUtil import com.ichi2.widget.WidgetStatus import net.ankiweb.rsdroid.BackendFactory import timber.log.Timber -import java.util.* +import java.util.LinkedList +import java.util.Locale import java.util.function.Consumer import kotlin.math.max import kotlin.math.min diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/OnboardingUtils.kt b/AnkiDroid/src/main/java/com/ichi2/anki/OnboardingUtils.kt index cfc59ba1dfe8..4160960d6c85 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/OnboardingUtils.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/OnboardingUtils.kt @@ -22,8 +22,7 @@ import androidx.annotation.VisibleForTesting import androidx.core.content.edit import com.ichi2.anki.IntroductionActivity.Companion.INTRODUCTION_SLIDES_SHOWN import timber.log.Timber -import java.util.* -import kotlin.collections.HashSet +import java.util.BitSet class OnboardingUtils { diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/ReadText.kt b/AnkiDroid/src/main/java/com/ichi2/anki/ReadText.kt index f8622a7e9ce1..d7a19acc1a87 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/ReadText.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/ReadText.kt @@ -35,7 +35,7 @@ import com.ichi2.utils.HandlerUtils.postDelayedOnNewHandler import com.ichi2.utils.iconAttr import timber.log.Timber import java.lang.ref.WeakReference -import java.util.* +import java.util.Locale object ReadText { @get:VisibleForTesting(otherwise = VisibleForTesting.NONE) diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/Reviewer.kt b/AnkiDroid/src/main/java/com/ichi2/anki/Reviewer.kt index d828d642ad02..1a6bf9309436 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/Reviewer.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/Reviewer.kt @@ -33,11 +33,27 @@ import android.os.Message import android.os.Parcelable import android.text.SpannableString import android.text.style.UnderlineSpan -import android.view.* +import android.view.KeyEvent +import android.view.Menu +import android.view.MenuItem +import android.view.MotionEvent +import android.view.SubMenu +import android.view.View +import android.view.ViewGroup import android.webkit.JavascriptInterface import android.webkit.WebView -import android.widget.* -import androidx.annotation.* +import android.widget.FrameLayout +import android.widget.ImageButton +import android.widget.ImageView +import android.widget.LinearLayout +import android.widget.PopupMenu +import android.widget.TextView +import androidx.annotation.CheckResult +import androidx.annotation.DrawableRes +import androidx.annotation.IdRes +import androidx.annotation.MenuRes +import androidx.annotation.PluralsRes +import androidx.annotation.VisibleForTesting import androidx.appcompat.view.menu.MenuBuilder import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.TooltipCompat @@ -64,20 +80,33 @@ import com.ichi2.anki.dialogs.RescheduleDialog.rescheduleSingleCard import com.ichi2.anki.multimediacard.AudioView import com.ichi2.anki.multimediacard.AudioView.Companion.createRecorderInstance import com.ichi2.anki.multimediacard.AudioView.Companion.generateTempAudioFile -import com.ichi2.anki.reviewer.* +import com.ichi2.anki.reviewer.ActionButtons import com.ichi2.anki.reviewer.AnswerButtons.Companion.getBackgroundColors import com.ichi2.anki.reviewer.AnswerButtons.Companion.getTextColors +import com.ichi2.anki.reviewer.AnswerTimer +import com.ichi2.anki.reviewer.AutomaticAnswerAction +import com.ichi2.anki.reviewer.CardMarker import com.ichi2.anki.reviewer.CardMarker.FlagDef +import com.ichi2.anki.reviewer.FullScreenMode import com.ichi2.anki.reviewer.FullScreenMode.Companion.fromPreference import com.ichi2.anki.reviewer.FullScreenMode.Companion.isFullScreenReview +import com.ichi2.anki.reviewer.PeripheralKeymap +import com.ichi2.anki.reviewer.ReviewerUi import com.ichi2.anki.servicelayer.NoteService.isMarked import com.ichi2.anki.servicelayer.NoteService.toggleMark -import com.ichi2.anki.servicelayer.SchedulerService.* +import com.ichi2.anki.servicelayer.SchedulerService.GetCard +import com.ichi2.anki.servicelayer.SchedulerService.NextCard +import com.ichi2.anki.servicelayer.SchedulerService.RescheduleCards +import com.ichi2.anki.servicelayer.SchedulerService.ResetCards import com.ichi2.anki.servicelayer.TaskListenerBuilder import com.ichi2.anki.workarounds.FirefoxSnackbarWorkaround.handledLaunchFromWebBrowser import com.ichi2.annotations.NeedsTest -import com.ichi2.libanki.* +import com.ichi2.libanki.Card +import com.ichi2.libanki.CardId import com.ichi2.libanki.Collection +import com.ichi2.libanki.Consts +import com.ichi2.libanki.Decks +import com.ichi2.libanki.Utils import com.ichi2.libanki.sched.Counts import com.ichi2.libanki.utils.TimeManager import com.ichi2.themes.Themes diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/SharedDecksActivity.kt b/AnkiDroid/src/main/java/com/ichi2/anki/SharedDecksActivity.kt index 1fdfed3b86f1..f8139a151a7d 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/SharedDecksActivity.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/SharedDecksActivity.kt @@ -18,11 +18,14 @@ package com.ichi2.anki import android.app.DownloadManager -import android.content.* +import android.content.Context import android.os.Bundle import android.view.Menu import android.view.MenuItem -import android.webkit.* +import android.webkit.WebResourceError +import android.webkit.WebResourceRequest +import android.webkit.WebView +import android.webkit.WebViewClient import androidx.appcompat.widget.SearchView import androidx.appcompat.widget.Toolbar import androidx.core.content.ContextCompat diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/SharedDecksDownloadFragment.kt b/AnkiDroid/src/main/java/com/ichi2/anki/SharedDecksDownloadFragment.kt index e9dabf4c06e1..40ca7ac03fd0 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/SharedDecksDownloadFragment.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/SharedDecksDownloadFragment.kt @@ -18,7 +18,11 @@ package com.ichi2.anki import android.app.DownloadManager -import android.content.* +import android.content.ActivityNotFoundException +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter import android.net.Uri import android.os.Bundle import android.os.Environment diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/StudyOptionsFragment.kt b/AnkiDroid/src/main/java/com/ichi2/anki/StudyOptionsFragment.kt index 259ffde2cf3f..d42eca51aaef 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/StudyOptionsFragment.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/StudyOptionsFragment.kt @@ -39,7 +39,9 @@ import com.ichi2.anki.servicelayer.ComputeResult import com.ichi2.anki.servicelayer.UndoService.Undo import com.ichi2.anki.snackbar.showSnackbar import com.ichi2.annotations.NeedsTest -import com.ichi2.async.CollectionTask.* +import com.ichi2.async.CollectionTask.EmptyCram +import com.ichi2.async.CollectionTask.RebuildCram +import com.ichi2.async.CollectionTask.UpdateValuesFromDeck import com.ichi2.async.TaskListener import com.ichi2.async.TaskManager import com.ichi2.libanki.Collection diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/Sync.kt b/AnkiDroid/src/main/java/com/ichi2/anki/Sync.kt index 4d7d899f6195..0144bde09e57 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/Sync.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/Sync.kt @@ -37,7 +37,11 @@ import com.ichi2.anki.dialogs.SyncErrorDialog import com.ichi2.anki.web.HostNumFactory import com.ichi2.async.Connection import com.ichi2.libanki.createBackup -import com.ichi2.libanki.sync.* +import com.ichi2.libanki.sync.fullDownload +import com.ichi2.libanki.sync.fullUpload +import com.ichi2.libanki.sync.syncCollection +import com.ichi2.libanki.sync.syncLogin +import com.ichi2.libanki.sync.syncMedia import net.ankiweb.rsdroid.Backend import net.ankiweb.rsdroid.exceptions.BackendSyncException import timber.log.Timber diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/TtsParser.kt b/AnkiDroid/src/main/java/com/ichi2/anki/TtsParser.kt index 4aa2db581a2b..2603febf590c 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/TtsParser.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/TtsParser.kt @@ -5,7 +5,6 @@ import com.ichi2.libanki.TTSTag import com.ichi2.libanki.template.TemplateFilters import org.jsoup.Jsoup import org.jsoup.nodes.Element -import java.util.* /** * Parse card sides, extracting text snippets that should be read using a text-to-speech engine. diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/UIUtils.kt b/AnkiDroid/src/main/java/com/ichi2/anki/UIUtils.kt index a676bb5c8ac7..ac0b1f1b7c68 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/UIUtils.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/UIUtils.kt @@ -7,7 +7,7 @@ import android.util.DisplayMetrics import android.widget.Toast import androidx.annotation.StringRes import com.ichi2.libanki.utils.Time -import java.util.* +import java.util.Calendar object UIUtils { fun showThemedToast(context: Context?, text: String?, shortLength: Boolean) { diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/Whiteboard.kt b/AnkiDroid/src/main/java/com/ichi2/anki/Whiteboard.kt index 80a7e9ff588b..f7d0dc8ef8ca 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/Whiteboard.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/Whiteboard.kt @@ -19,7 +19,16 @@ package com.ichi2.anki import android.annotation.SuppressLint -import android.graphics.* +import android.graphics.Bitmap +import android.graphics.Canvas +import android.graphics.Color +import android.graphics.Paint +import android.graphics.Path +import android.graphics.PathMeasure +import android.graphics.Point +import android.graphics.Rect +import android.graphics.RectF +import android.graphics.Region import android.graphics.drawable.VectorDrawable import android.net.Uri import android.view.MotionEvent diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/analytics/UsageAnalytics.kt b/AnkiDroid/src/main/java/com/ichi2/anki/analytics/UsageAnalytics.kt index 4b1eeb6ec330..caea5f4417dd 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/analytics/UsageAnalytics.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/analytics/UsageAnalytics.kt @@ -34,7 +34,6 @@ import com.ichi2.utils.WebViewDebugging.hasSetDataDirectory import org.acra.ACRA import org.acra.util.Installation import timber.log.Timber -import java.lang.RuntimeException @KotlinCleanup("see if we can make variables lazy, or properties without the `s` prefix") object UsageAnalytics { diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/cardviewer/CardHtml.kt b/AnkiDroid/src/main/java/com/ichi2/anki/cardviewer/CardHtml.kt index eac50c3892bf..ab220b8079a2 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/cardviewer/CardHtml.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/cardviewer/CardHtml.kt @@ -20,7 +20,11 @@ import android.content.Context import com.ichi2.anki.R import com.ichi2.anki.TtsParser import com.ichi2.anki.cardviewer.CardAppearance.Companion.hasUserDefinedNightMode -import com.ichi2.libanki.* +import com.ichi2.libanki.Card +import com.ichi2.libanki.Media +import com.ichi2.libanki.Sound +import com.ichi2.libanki.SoundOrVideoTag +import com.ichi2.libanki.TTSTag import com.ichi2.libanki.template.MathJax import com.ichi2.themes.HtmlColors import com.ichi2.themes.Themes.currentTheme diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/cardviewer/CardTemplate.kt b/AnkiDroid/src/main/java/com/ichi2/anki/cardviewer/CardTemplate.kt index 497cf4accbaa..a24c5d60b098 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/cardviewer/CardTemplate.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/cardviewer/CardTemplate.kt @@ -16,7 +16,6 @@ package com.ichi2.anki.cardviewer import androidx.annotation.CheckResult -import java.lang.IllegalStateException class CardTemplate(template: String) { private var mPreStyle: String? = null diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/cardviewer/ViewerCommand.kt b/AnkiDroid/src/main/java/com/ichi2/anki/cardviewer/ViewerCommand.kt index 2469f882219f..7a73db4a9a34 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/cardviewer/ViewerCommand.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/cardviewer/ViewerCommand.kt @@ -28,7 +28,7 @@ import com.ichi2.anki.reviewer.CardSide import com.ichi2.anki.reviewer.MappableBinding import com.ichi2.anki.reviewer.MappableBinding.Companion.fromPreference import com.ichi2.anki.reviewer.MappableBinding.Companion.toPreferenceString -import java.util.* +import java.util.Arrays import java.util.function.BiFunction import java.util.stream.Collectors diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/contextmenu/SystemContextMenu.kt b/AnkiDroid/src/main/java/com/ichi2/anki/contextmenu/SystemContextMenu.kt index ebae2b7915bd..f6a189861c2b 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/contextmenu/SystemContextMenu.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/contextmenu/SystemContextMenu.kt @@ -20,7 +20,6 @@ import android.content.Context import android.content.pm.PackageManager import androidx.annotation.CheckResult import timber.log.Timber -import java.lang.Exception abstract class SystemContextMenu(private val context: Context) { /** We use an activity alias as the name so we can disable the context menu without disabling the activity */ diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/DatabaseErrorDialog.kt b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/DatabaseErrorDialog.kt index 97c3cac7bb47..3161a38c8e61 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/DatabaseErrorDialog.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/DatabaseErrorDialog.kt @@ -27,7 +27,11 @@ import com.afollestad.materialdialogs.WhichButton import com.afollestad.materialdialogs.actions.setActionButtonEnabled import com.afollestad.materialdialogs.list.listItems import com.afollestad.materialdialogs.list.listItemsSingleChoice -import com.ichi2.anki.* +import com.ichi2.anki.AnkiActivity +import com.ichi2.anki.BackupManager +import com.ichi2.anki.CollectionHelper +import com.ichi2.anki.DeckPicker +import com.ichi2.anki.R import com.ichi2.async.Connection import com.ichi2.libanki.Consts import com.ichi2.libanki.utils.TimeManager @@ -40,7 +44,7 @@ import timber.log.Timber import java.io.File import java.io.IOException import java.text.SimpleDateFormat -import java.util.* +import java.util.Locale class DatabaseErrorDialog : AsyncDialogFragment() { private lateinit var mRepairValues: IntArray diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/DeckPickerContextMenu.kt b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/DeckPickerContextMenu.kt index 7dbb3256376c..1fa9645f4278 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/DeckPickerContextMenu.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/DeckPickerContextMenu.kt @@ -23,7 +23,11 @@ import androidx.fragment.app.Fragment import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.list.listItems import com.ichi2.anim.ActivityTransitionAnimation -import com.ichi2.anki.* +import com.ichi2.anki.AnkiActivity +import com.ichi2.anki.CardBrowser +import com.ichi2.anki.DeckPicker +import com.ichi2.anki.NavigationDrawerActivity +import com.ichi2.anki.R import com.ichi2.anki.StudyOptionsFragment.StudyOptionsListener import com.ichi2.anki.analytics.AnalyticsDialogFragment import com.ichi2.anki.dialogs.customstudy.CustomStudyDialog diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/DeckSelectionDialog.kt b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/DeckSelectionDialog.kt index 4fdb43c5eb99..e12b45d50eca 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/DeckSelectionDialog.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/DeckSelectionDialog.kt @@ -39,8 +39,11 @@ import com.ichi2.anki.analytics.AnalyticsDialogFragment import com.ichi2.anki.dialogs.DeckSelectionDialog.DecksArrayAdapter.DecksFilter import com.ichi2.anki.dialogs.DeckSelectionDialog.SelectableDeck import com.ichi2.annotations.NeedsTest -import com.ichi2.libanki.* import com.ichi2.libanki.Collection +import com.ichi2.libanki.CollectionGetter +import com.ichi2.libanki.Deck +import com.ichi2.libanki.DeckId +import com.ichi2.libanki.DeckManager import com.ichi2.libanki.backend.exception.DeckRenameException import com.ichi2.libanki.stats.Stats import com.ichi2.utils.DeckNameComparator @@ -50,7 +53,7 @@ import com.ichi2.utils.TypedFilter import kotlinx.parcelize.IgnoredOnParcel import kotlinx.parcelize.Parcelize import timber.log.Timber -import java.util.* +import java.util.Locale import java.util.Objects.requireNonNull /** diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/DialogHandler.kt b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/DialogHandler.kt index 3eb3deeaaca9..3173c4ac0900 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/DialogHandler.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/DialogHandler.kt @@ -19,7 +19,12 @@ package com.ichi2.anki.dialogs import android.os.Handler import android.os.Message import androidx.annotation.VisibleForTesting -import com.ichi2.anki.* +import com.ichi2.anki.AnkiActivity +import com.ichi2.anki.AnkiDroidApp +import com.ichi2.anki.CollectionHelper +import com.ichi2.anki.DeckPicker +import com.ichi2.anki.NotificationChannels +import com.ichi2.anki.R import com.ichi2.anki.analytics.UsageAnalytics import com.ichi2.libanki.utils.TimeManager import com.ichi2.utils.HandlerUtils.getDefaultLooper diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/HelpDialog.kt b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/HelpDialog.kt index 033bdce9d431..8745a2d058fe 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/HelpDialog.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/HelpDialog.kt @@ -36,7 +36,6 @@ import com.ichi2.utils.IntentUtil.canOpenIntent import com.ichi2.utils.IntentUtil.tryOpenIntent import com.ichi2.utils.KotlinCleanup import java.io.Serializable -import java.util.* object HelpDialog { private fun openManual(ankiActivity: AnkiActivity) { diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/InsertFieldDialog.kt b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/InsertFieldDialog.kt index 055041275c6c..e7818b473af2 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/InsertFieldDialog.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/InsertFieldDialog.kt @@ -26,7 +26,6 @@ import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.list.customListAdapter import com.ichi2.anki.CardTemplateEditor import com.ichi2.anki.R -import java.util.* /** * Dialog fragment used to show the fields that the user can insert in the card editor. This diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/LocaleSelectionDialog.kt b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/LocaleSelectionDialog.kt index 1302c47ecf07..8f4ab4489b65 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/LocaleSelectionDialog.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/LocaleSelectionDialog.kt @@ -38,7 +38,7 @@ import com.ichi2.anki.dialogs.LocaleSelectionDialog.LocaleListAdapter.TextViewHo import com.ichi2.ui.RecyclerSingleTouchAdapter import com.ichi2.utils.DisplayUtils.resizeWhenSoftInputShown import com.ichi2.utils.TypedFilter -import java.util.* +import java.util.Locale /** Locale selection dialog. Note: this must be dismissed onDestroy if not called from an activity implementing LocaleSelectionDialogHandler */ class LocaleSelectionDialog : AnalyticsDialogFragment() { diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/MediaCheckDialog.kt b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/MediaCheckDialog.kt index 90eca9b79758..5bb9bea21b4d 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/MediaCheckDialog.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/MediaCheckDialog.kt @@ -13,7 +13,6 @@ import android.widget.TextView import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.customview.customView import com.ichi2.anki.R -import java.util.* class MediaCheckDialog : AsyncDialogFragment() { interface MediaCheckDialogListener { diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/RecursivePictureMenu.kt b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/RecursivePictureMenu.kt index 064931d1325d..8d6075e78a8f 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/RecursivePictureMenu.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/RecursivePictureMenu.kt @@ -33,7 +33,6 @@ import com.afollestad.materialdialogs.list.getRecyclerView import com.ichi2.anki.AnkiActivity import com.ichi2.anki.R import com.ichi2.anki.analytics.UsageAnalytics -import java.util.* /** A Dialog displaying The various options for "Help" in a nested structure */ class RecursivePictureMenu : DialogFragment() { diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/ScopedStorageMigrationDialog.kt b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/ScopedStorageMigrationDialog.kt index d210021e8b71..e59b03a3c180 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/ScopedStorageMigrationDialog.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/ScopedStorageMigrationDialog.kt @@ -27,7 +27,10 @@ import android.widget.CheckBox import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.customview.customView import com.afollestad.materialdialogs.utils.MDUtil -import com.ichi2.anki.* +import com.ichi2.anki.AnkiActivity +import com.ichi2.anki.AnkiDroidApp +import com.ichi2.anki.R +import com.ichi2.anki.UIUtils import com.ichi2.anki.preferences.Preferences import com.ichi2.themes.Themes import com.ichi2.ui.FixedTextView diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/customstudy/CustomStudyDialog.kt b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/customstudy/CustomStudyDialog.kt index e96d1a36fbdc..ce7a8fecfda4 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/customstudy/CustomStudyDialog.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/customstudy/CustomStudyDialog.kt @@ -36,11 +36,26 @@ import com.afollestad.materialdialogs.WhichButton import com.afollestad.materialdialogs.actions.getActionButton import com.afollestad.materialdialogs.customview.customView import com.afollestad.materialdialogs.list.listItems -import com.ichi2.anki.* +import com.ichi2.anki.AnkiActivity +import com.ichi2.anki.AnkiDroidApp +import com.ichi2.anki.CrashReportService +import com.ichi2.anki.DeckOptions +import com.ichi2.anki.R +import com.ichi2.anki.Reviewer import com.ichi2.anki.UIUtils.showThemedToast import com.ichi2.anki.analytics.AnalyticsDialogFragment -import com.ichi2.anki.dialogs.customstudy.CustomStudyDialog.ContextMenuConfiguration.* -import com.ichi2.anki.dialogs.customstudy.CustomStudyDialog.ContextMenuOption.* +import com.ichi2.anki.dialogs.customstudy.CustomStudyDialog.ContextMenuConfiguration.EMPTY_SCHEDULE +import com.ichi2.anki.dialogs.customstudy.CustomStudyDialog.ContextMenuConfiguration.LIMITS +import com.ichi2.anki.dialogs.customstudy.CustomStudyDialog.ContextMenuConfiguration.STANDARD +import com.ichi2.anki.dialogs.customstudy.CustomStudyDialog.ContextMenuOption.DECK_OPTIONS +import com.ichi2.anki.dialogs.customstudy.CustomStudyDialog.ContextMenuOption.MORE_OPTIONS +import com.ichi2.anki.dialogs.customstudy.CustomStudyDialog.ContextMenuOption.STUDY_AHEAD +import com.ichi2.anki.dialogs.customstudy.CustomStudyDialog.ContextMenuOption.STUDY_FORGOT +import com.ichi2.anki.dialogs.customstudy.CustomStudyDialog.ContextMenuOption.STUDY_NEW +import com.ichi2.anki.dialogs.customstudy.CustomStudyDialog.ContextMenuOption.STUDY_PREVIEW +import com.ichi2.anki.dialogs.customstudy.CustomStudyDialog.ContextMenuOption.STUDY_RANDOM +import com.ichi2.anki.dialogs.customstudy.CustomStudyDialog.ContextMenuOption.STUDY_REV +import com.ichi2.anki.dialogs.customstudy.CustomStudyDialog.ContextMenuOption.STUDY_TAGS import com.ichi2.anki.dialogs.tags.TagsDialog import com.ichi2.anki.dialogs.tags.TagsDialogListener import com.ichi2.async.CollectionTask.RebuildCram @@ -56,7 +71,7 @@ import com.ichi2.utils.JSONArray import com.ichi2.utils.JSONObject import com.ichi2.utils.KotlinCleanup import timber.log.Timber -import java.util.* +import java.util.Locale class CustomStudyDialog(private val collection: Collection, private val customStudyListener: CustomStudyListener?) : AnalyticsDialogFragment(), TagsDialogListener { interface CustomStudyListener : CreateCustomStudySessionListener.Callback { diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/tags/TagsArrayAdapter.kt b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/tags/TagsArrayAdapter.kt index 028d11ba8f87..dae0411f86e8 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/tags/TagsArrayAdapter.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/tags/TagsArrayAdapter.kt @@ -19,16 +19,23 @@ import android.content.res.Resources import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.* +import android.widget.Filterable +import android.widget.ImageButton +import android.widget.LinearLayout +import android.widget.TextView import androidx.annotation.VisibleForTesting import androidx.recyclerview.widget.RecyclerView import com.ichi2.anki.R import com.ichi2.annotations.NeedsTest import com.ichi2.ui.CheckBoxTriStates -import com.ichi2.ui.CheckBoxTriStates.State.* +import com.ichi2.ui.CheckBoxTriStates.State.CHECKED +import com.ichi2.ui.CheckBoxTriStates.State.INDETERMINATE +import com.ichi2.ui.CheckBoxTriStates.State.UNCHECKED import com.ichi2.utils.TagsUtil import com.ichi2.utils.TypedFilter -import java.util.* +import java.util.Locale +import java.util.Stack +import java.util.TreeSet /** * @param tags A reference to the {@link TagsList} passed. diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/tags/TagsDialogListener.kt b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/tags/TagsDialogListener.kt index 82aecb80a5b8..b7010f964932 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/tags/TagsDialogListener.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/tags/TagsDialogListener.kt @@ -20,7 +20,6 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentResultListener import com.ichi2.utils.KotlinCleanup -import java.util.ArrayList @KotlinCleanup("make selectedTags and indeterminateTags non-null") interface TagsDialogListener { diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/tags/TagsList.kt b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/tags/TagsList.kt index f83f569f5ef2..b1eecf5bd11a 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/tags/TagsList.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/dialogs/tags/TagsList.kt @@ -21,7 +21,7 @@ import com.ichi2.utils.TagsUtil.getTagAncestors import com.ichi2.utils.TagsUtil.getTagRoot import com.ichi2.utils.UniqueArrayList import com.ichi2.utils.UniqueArrayList.Companion.from -import java.util.* +import java.util.TreeSet /** * A container class that keeps track of tags and their status, handling of tags are done in a case insensitive matter diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/exception/ConfirmModSchemaException.kt b/AnkiDroid/src/main/java/com/ichi2/anki/exception/ConfirmModSchemaException.kt index 296750f99286..7f20b2901088 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/exception/ConfirmModSchemaException.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/exception/ConfirmModSchemaException.kt @@ -17,7 +17,6 @@ package com.ichi2.anki.exception import timber.log.Timber -import java.lang.Exception class ConfirmModSchemaException : Exception() { /** diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/exception/ImportExportException.kt b/AnkiDroid/src/main/java/com/ichi2/anki/exception/ImportExportException.kt index 082f1f691774..6d54e16fde13 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/exception/ImportExportException.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/exception/ImportExportException.kt @@ -1,6 +1,4 @@ //noinspection MissingCopyrightHeader #8659 package com.ichi2.anki.exception -import java.lang.Exception - class ImportExportException(msg: String?) : Exception(msg) diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/exception/ManuallyReportedException.kt b/AnkiDroid/src/main/java/com/ichi2/anki/exception/ManuallyReportedException.kt index 27b4c67d2edf..e78a86856430 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/exception/ManuallyReportedException.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/exception/ManuallyReportedException.kt @@ -16,7 +16,5 @@ package com.ichi2.anki.exception -import java.lang.RuntimeException - /** An exception for manual reporting to ACRA */ class ManuallyReportedException(message: String?) : RuntimeException(message) diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/exception/MediaSyncException.kt b/AnkiDroid/src/main/java/com/ichi2/anki/exception/MediaSyncException.kt index cf515562f472..dcbf7977aea3 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/exception/MediaSyncException.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/exception/MediaSyncException.kt @@ -1,6 +1,4 @@ //noinspection MissingCopyrightHeader #8659 package com.ichi2.anki.exception -import java.lang.Exception - class MediaSyncException(msg: String?) : Exception(msg) diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/exception/UnknownHttpResponseException.kt b/AnkiDroid/src/main/java/com/ichi2/anki/exception/UnknownHttpResponseException.kt index 4797513fb5b0..282518343d69 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/exception/UnknownHttpResponseException.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/exception/UnknownHttpResponseException.kt @@ -16,6 +16,4 @@ package com.ichi2.anki.exception -import java.lang.Exception - class UnknownHttpResponseException(message: String?, val responseCode: Int) : Exception(message) diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/exception/UserSubmittedException.kt b/AnkiDroid/src/main/java/com/ichi2/anki/exception/UserSubmittedException.kt index eeab3e0d8997..d23f6aa9192f 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/exception/UserSubmittedException.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/exception/UserSubmittedException.kt @@ -1,7 +1,5 @@ //noinspection MissingCopyrightHeader #8659 package com.ichi2.anki.exception -import java.lang.RuntimeException - /** An exception sent by user for sending report manually */ class UserSubmittedException(message: String?) : RuntimeException(message) diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/export/ActivityExportingDelegate.kt b/AnkiDroid/src/main/java/com/ichi2/anki/export/ActivityExportingDelegate.kt index 086aed249c7c..0717d6722d3e 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/export/ActivityExportingDelegate.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/export/ActivityExportingDelegate.kt @@ -27,10 +27,15 @@ import androidx.activity.result.contract.ActivityResultContracts import androidx.core.app.ShareCompat.IntentBuilder import androidx.core.content.FileProvider import com.google.android.material.snackbar.Snackbar -import com.ichi2.anki.* +import com.ichi2.anki.AnkiActivity +import com.ichi2.anki.BuildConfig +import com.ichi2.anki.R import com.ichi2.anki.UIUtils.showThemedToast import com.ichi2.anki.dialogs.ExportCompleteDialog.ExportCompleteDialogListener import com.ichi2.anki.dialogs.ExportDialog.ExportDialogListener +import com.ichi2.anki.exportApkg +import com.ichi2.anki.exportColpkg +import com.ichi2.anki.launchCatchingTask import com.ichi2.anki.snackbar.showSnackbar import com.ichi2.async.CollectionTask.ExportApkg import com.ichi2.async.TaskManager diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/introduction/SetupCollectionFragment.kt b/AnkiDroid/src/main/java/com/ichi2/anki/introduction/SetupCollectionFragment.kt index 4242ed6de028..a0f5a492b8ed 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/introduction/SetupCollectionFragment.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/introduction/SetupCollectionFragment.kt @@ -43,7 +43,8 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentActivity import androidx.fragment.app.setFragmentResult import com.ichi2.anki.R -import com.ichi2.anki.introduction.SetupCollectionFragment.CollectionSetupOption.* +import com.ichi2.anki.introduction.SetupCollectionFragment.CollectionSetupOption.DeckPickerWithNewCollection +import com.ichi2.anki.introduction.SetupCollectionFragment.CollectionSetupOption.SyncFromExistingAccount /** * Allows a user multiple choices for setting up the collection: diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/jsaddons/AddonData.kt b/AnkiDroid/src/main/java/com/ichi2/anki/jsaddons/AddonData.kt index 8c5d2316a9e5..350b8e5a8e6d 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/jsaddons/AddonData.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/jsaddons/AddonData.kt @@ -28,7 +28,6 @@ import timber.log.Timber import java.io.File import java.io.IOException import java.net.URL -import kotlin.jvm.Throws /** * When package.json fetched from https://registry.npmjs.org/some-addon/latest, diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/jsaddons/NpmUtils.kt b/AnkiDroid/src/main/java/com/ichi2/anki/jsaddons/NpmUtils.kt index 2e91797191fb..263cbeaf80e9 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/jsaddons/NpmUtils.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/jsaddons/NpmUtils.kt @@ -18,7 +18,7 @@ package com.ichi2.anki.jsaddons import timber.log.Timber import java.net.URLEncoder -import java.util.* +import java.util.Locale import java.util.regex.Pattern object NpmUtils { diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/jsaddons/TgzPackageExtract.kt b/AnkiDroid/src/main/java/com/ichi2/anki/jsaddons/TgzPackageExtract.kt index 2a447e0b40fc..e8c1d865fbfc 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/jsaddons/TgzPackageExtract.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/jsaddons/TgzPackageExtract.kt @@ -45,7 +45,12 @@ import org.apache.commons.compress.archivers.ArchiveStreamFactory import org.apache.commons.compress.archivers.tar.TarArchiveEntry import org.apache.commons.compress.archivers.tar.TarArchiveInputStream import timber.log.Timber -import java.io.* +import java.io.BufferedOutputStream +import java.io.File +import java.io.FileInputStream +import java.io.FileNotFoundException +import java.io.FileOutputStream +import java.io.IOException import java.util.zip.GZIPInputStream /** diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/model/Directory.kt b/AnkiDroid/src/main/java/com/ichi2/anki/model/Directory.kt index 5359c38873d2..ecb8a1c6bd3e 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/model/Directory.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/model/Directory.kt @@ -20,7 +20,6 @@ import com.ichi2.compat.CompatHelper import java.io.File import java.io.IOException import java.nio.file.NotDirectoryException -import kotlin.jvm.Throws /** * A directory which is assumed to exist (existed when class was instantiated) diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/AudioPlayer.kt b/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/AudioPlayer.kt index 166487935796..b489100b88b6 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/AudioPlayer.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/AudioPlayer.kt @@ -19,7 +19,8 @@ */ package com.ichi2.anki.multimediacard -import com.ichi2.anki.multimediacard.MediaPlayer.MediaPlayerState.* +import com.ichi2.anki.multimediacard.MediaPlayer.MediaPlayerState.INITIALIZED +import com.ichi2.anki.multimediacard.MediaPlayer.MediaPlayerState.STOPPED import timber.log.Timber import java.io.IOException diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/MediaPlayer.kt b/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/MediaPlayer.kt index 97251266bebd..1854f722da82 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/MediaPlayer.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/MediaPlayer.kt @@ -22,7 +22,16 @@ import android.media.MediaDataSource import android.media.MediaPlayer import android.media.MediaPlayer.OnPreparedListener import android.net.Uri -import com.ichi2.anki.multimediacard.MediaPlayer.MediaPlayerState.* +import com.ichi2.anki.multimediacard.MediaPlayer.MediaPlayerState.END +import com.ichi2.anki.multimediacard.MediaPlayer.MediaPlayerState.ERROR +import com.ichi2.anki.multimediacard.MediaPlayer.MediaPlayerState.IDLE +import com.ichi2.anki.multimediacard.MediaPlayer.MediaPlayerState.INITIALIZED +import com.ichi2.anki.multimediacard.MediaPlayer.MediaPlayerState.PAUSED +import com.ichi2.anki.multimediacard.MediaPlayer.MediaPlayerState.PLAYBACK_COMPLETE +import com.ichi2.anki.multimediacard.MediaPlayer.MediaPlayerState.PREPARED +import com.ichi2.anki.multimediacard.MediaPlayer.MediaPlayerState.PREPARING +import com.ichi2.anki.multimediacard.MediaPlayer.MediaPlayerState.STARTED +import com.ichi2.anki.multimediacard.MediaPlayer.MediaPlayerState.STOPPED import java.io.FileDescriptor import java.net.HttpCookie diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/activity/MultimediaEditFieldActivity.kt b/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/activity/MultimediaEditFieldActivity.kt index eeeb2f4d827e..8cad5b6f97d3 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/activity/MultimediaEditFieldActivity.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/activity/MultimediaEditFieldActivity.kt @@ -33,7 +33,17 @@ import com.ichi2.anki.AnkiActivity import com.ichi2.anki.R import com.ichi2.anki.UIUtils import com.ichi2.anki.multimediacard.IMultimediaEditableNote -import com.ichi2.anki.multimediacard.fields.* +import com.ichi2.anki.multimediacard.fields.AudioRecordingField +import com.ichi2.anki.multimediacard.fields.BasicAudioRecordingFieldController +import com.ichi2.anki.multimediacard.fields.BasicImageFieldController +import com.ichi2.anki.multimediacard.fields.BasicMediaClipFieldController +import com.ichi2.anki.multimediacard.fields.BasicTextFieldController +import com.ichi2.anki.multimediacard.fields.EFieldType +import com.ichi2.anki.multimediacard.fields.IField +import com.ichi2.anki.multimediacard.fields.IFieldController +import com.ichi2.anki.multimediacard.fields.ImageField +import com.ichi2.anki.multimediacard.fields.MediaClipField +import com.ichi2.anki.multimediacard.fields.TextField import com.ichi2.compat.CompatHelper.Companion.getSerializableExtraCompat import com.ichi2.utils.CheckCameraPermission import com.ichi2.utils.KotlinCleanup diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/activity/PickStringDialogFragment.kt b/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/activity/PickStringDialogFragment.kt index 84b0fbdb47bf..1a6e15379b03 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/activity/PickStringDialogFragment.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/activity/PickStringDialogFragment.kt @@ -27,7 +27,6 @@ import android.os.Bundle import android.widget.ArrayAdapter import androidx.fragment.app.DialogFragment import com.ichi2.utils.KotlinCleanup -import java.util.* /** * This dialog fragment support a choice from a list of strings. diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/fields/BasicImageFieldController.kt b/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/fields/BasicImageFieldController.kt index bdb88ed0837d..75015ecb81fc 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/fields/BasicImageFieldController.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/fields/BasicImageFieldController.kt @@ -52,7 +52,10 @@ import androidx.core.content.ContentResolverCompat import androidx.core.content.FileProvider import androidx.core.content.getSystemService import com.afollestad.materialdialogs.MaterialDialog -import com.canhub.cropper.* +import com.canhub.cropper.CropImageContract +import com.canhub.cropper.CropImageContractOptions +import com.canhub.cropper.CropImageOptions +import com.canhub.cropper.CropImageView import com.ichi2.anki.AnkiDroidApp import com.ichi2.anki.CrashReportService import com.ichi2.anki.DrawingActivity diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/impl/MultimediaEditableNote.kt b/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/impl/MultimediaEditableNote.kt index 0e8d5fc290dc..8a307ab274b7 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/impl/MultimediaEditableNote.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/impl/MultimediaEditableNote.kt @@ -23,7 +23,6 @@ import com.ichi2.anki.multimediacard.IMultimediaEditableNote import com.ichi2.anki.multimediacard.fields.IField import com.ichi2.libanki.NoteTypeId import org.acra.util.IOUtils -import java.util.* /** * Implementation of the editable note. diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/language/LanguageListerBase.kt b/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/language/LanguageListerBase.kt index 1c955456e77a..106c66202c05 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/language/LanguageListerBase.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/language/LanguageListerBase.kt @@ -19,7 +19,7 @@ package com.ichi2.anki.multimediacard.language -import java.util.* +import java.util.Collections /** * This is some sort of tool, which translates from languages in a user readable form to a code, used to invoke some diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/language/LanguageListerBeolingus.kt b/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/language/LanguageListerBeolingus.kt index b5189dcddbe2..dfc0692379ed 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/language/LanguageListerBeolingus.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/language/LanguageListerBeolingus.kt @@ -18,7 +18,7 @@ ****************************************************************************************/ package com.ichi2.anki.multimediacard.language -import java.util.* +import java.util.Locale /** * This one lister services in beolingus. It is used to load pronunciation. diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/noteeditor/CustomToolbarButton.kt b/AnkiDroid/src/main/java/com/ichi2/anki/noteeditor/CustomToolbarButton.kt index dc302b97ada0..990f6967128f 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/noteeditor/CustomToolbarButton.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/noteeditor/CustomToolbarButton.kt @@ -20,7 +20,6 @@ import com.ichi2.anki.noteeditor.Toolbar.TextWrapper import com.ichi2.libanki.Consts import com.ichi2.utils.HashUtil.HashSetInit import timber.log.Timber -import java.util.* typealias ButtonText = String diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/noteeditor/FieldState.kt b/AnkiDroid/src/main/java/com/ichi2/anki/noteeditor/FieldState.kt index 7b37ee857805..2c7da32db94e 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/noteeditor/FieldState.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/noteeditor/FieldState.kt @@ -28,7 +28,6 @@ import com.ichi2.libanki.Models import com.ichi2.utils.JSONObject import com.ichi2.utils.KotlinCleanup import com.ichi2.utils.MapUtil.getKeyByValue -import java.util.* /** Responsible for recreating EditFieldLines after NoteEditor operations * This primarily exists so we can use saved instance state to repopulate the dynamically created FieldEditLine diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/noteeditor/Toolbar.kt b/AnkiDroid/src/main/java/com/ichi2/anki/noteeditor/Toolbar.kt index 68d2b38ecca2..2e63327db903 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/noteeditor/Toolbar.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/noteeditor/Toolbar.kt @@ -26,7 +26,12 @@ import android.graphics.drawable.BitmapDrawable import android.graphics.drawable.Drawable import android.util.AttributeSet import android.util.DisplayMetrics -import android.view.* +import android.view.ContextThemeWrapper +import android.view.Gravity +import android.view.KeyEvent +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup import android.widget.FrameLayout import android.widget.LinearLayout import androidx.annotation.ColorInt @@ -44,7 +49,6 @@ import com.ichi2.libanki.Utils import com.ichi2.utils.ViewGroupUtils import com.ichi2.utils.ViewGroupUtils.getAllChildrenRecursive import timber.log.Timber -import java.util.* import kotlin.math.ceil /** diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/pages/AnkiServer.kt b/AnkiDroid/src/main/java/com/ichi2/anki/pages/AnkiServer.kt index 1e55b2ea0f36..0d197a3f913a 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/pages/AnkiServer.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/pages/AnkiServer.kt @@ -20,9 +20,14 @@ package com.ichi2.anki.pages import com.ichi2.anki.CollectionManager.withCol import com.ichi2.anki.importCsvRaw import com.ichi2.anki.runBlockingCatching -import com.ichi2.libanki.* +import com.ichi2.libanki.getDeckNamesRaw +import com.ichi2.libanki.getFieldNamesRaw +import com.ichi2.libanki.getNotetypeNamesRaw import com.ichi2.libanki.importer.getCsvMetadataRaw -import com.ichi2.libanki.stats.* +import com.ichi2.libanki.stats.cardStatsRaw +import com.ichi2.libanki.stats.getGraphPreferencesRaw +import com.ichi2.libanki.stats.graphsRaw +import com.ichi2.libanki.stats.setGraphPreferencesRaw import fi.iki.elonen.NanoHTTPD import timber.log.Timber import java.io.ByteArrayInputStream diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/pages/PagesActivity.kt b/AnkiDroid/src/main/java/com/ichi2/anki/pages/PagesActivity.kt index 04d93fdc3806..addbf74b86de 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/pages/PagesActivity.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/pages/PagesActivity.kt @@ -20,7 +20,9 @@ import android.content.Intent import android.os.Bundle import android.webkit.WebView import androidx.fragment.app.commit -import com.ichi2.anki.* +import com.ichi2.anki.AnkiActivity +import com.ichi2.anki.BuildConfig +import com.ichi2.anki.R import com.ichi2.utils.getInstanceFromClassName import timber.log.Timber import java.net.ServerSocket diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/preferences/AboutFragment.kt b/AnkiDroid/src/main/java/com/ichi2/anki/preferences/AboutFragment.kt index f008383117b1..444f4c16d11d 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/preferences/AboutFragment.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/preferences/AboutFragment.kt @@ -31,7 +31,11 @@ import android.widget.TextView import androidx.core.text.parseAsHtml import androidx.fragment.app.Fragment import com.afollestad.materialdialogs.MaterialDialog -import com.ichi2.anki.* +import com.ichi2.anki.AnkiActivity +import com.ichi2.anki.AnkiDroidApp +import com.ichi2.anki.Info +import com.ichi2.anki.R +import com.ichi2.anki.UIUtils import com.ichi2.anki.servicelayer.DebugInfoService import com.ichi2.utils.IntentUtil import com.ichi2.utils.VersionUtils.appName diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/preferences/AdvancedSettingsFragment.kt b/AnkiDroid/src/main/java/com/ichi2/anki/preferences/AdvancedSettingsFragment.kt index f1dffd21029b..6ceb55b973f8 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/preferences/AdvancedSettingsFragment.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/preferences/AdvancedSettingsFragment.kt @@ -24,9 +24,15 @@ import androidx.preference.EditTextPreference import androidx.preference.Preference import androidx.preference.SwitchPreference import com.afollestad.materialdialogs.MaterialDialog -import com.ichi2.anki.* +import com.ichi2.anki.AnkiActivity +import com.ichi2.anki.AnkiDroidApp +import com.ichi2.anki.BuildConfig +import com.ichi2.anki.CollectionHelper import com.ichi2.anki.CollectionManager.withCol +import com.ichi2.anki.MetaDB +import com.ichi2.anki.R import com.ichi2.anki.exception.StorageAccessException +import com.ichi2.anki.launchCatchingTask import com.ichi2.anki.provider.CardContentProvider import com.ichi2.anki.snackbar.showSnackbar import com.ichi2.compat.CompatHelper diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/preferences/DevOptionsFragment.kt b/AnkiDroid/src/main/java/com/ichi2/anki/preferences/DevOptionsFragment.kt index cfc092705bf3..4fe8c5671095 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/preferences/DevOptionsFragment.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/preferences/DevOptionsFragment.kt @@ -19,7 +19,11 @@ import android.content.Context import androidx.preference.Preference import androidx.preference.SwitchPreference import com.afollestad.materialdialogs.MaterialDialog -import com.ichi2.anki.* +import com.ichi2.anki.AnkiDroidApp +import com.ichi2.anki.BuildConfig +import com.ichi2.anki.CollectionHelper +import com.ichi2.anki.OnboardingUtils +import com.ichi2.anki.R import com.ichi2.anki.analytics.UsageAnalytics import com.ichi2.anki.snackbar.showSnackbar import timber.log.Timber diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/preferences/GeneralSettingsFragment.kt b/AnkiDroid/src/main/java/com/ichi2/anki/preferences/GeneralSettingsFragment.kt index a94a7305c54b..f35aeb92311c 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/preferences/GeneralSettingsFragment.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/preferences/GeneralSettingsFragment.kt @@ -26,7 +26,7 @@ import com.ichi2.annotations.NeedsTest import com.ichi2.utils.LanguageUtil import com.ichi2.utils.LanguageUtil.getSystemLocale import kotlinx.coroutines.runBlocking -import java.util.* +import java.util.TreeMap class GeneralSettingsFragment : SettingsFragment() { override val preferenceResource: Int diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/preferences/Preferences.kt b/AnkiDroid/src/main/java/com/ichi2/anki/preferences/Preferences.kt index af0eb0451a23..cff654de4f39 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/preferences/Preferences.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/preferences/Preferences.kt @@ -37,8 +37,14 @@ import com.bytehamster.lib.preferencesearch.SearchConfiguration import com.bytehamster.lib.preferencesearch.SearchPreferenceFragment import com.bytehamster.lib.preferencesearch.SearchPreferenceResult import com.bytehamster.lib.preferencesearch.SearchPreferenceResultListener -import com.ichi2.anki.* +import com.ichi2.anki.AnkiActivity +import com.ichi2.anki.AnkiDroidApp +import com.ichi2.anki.BuildConfig +import com.ichi2.anki.CollectionManager +import com.ichi2.anki.DeckPicker +import com.ichi2.anki.R import com.ichi2.anki.cardviewer.ViewerCommand +import com.ichi2.anki.launchCatchingTask import com.ichi2.anki.services.BootService.Companion.scheduleNotification import com.ichi2.compat.CompatHelper import com.ichi2.libanki.Collection @@ -47,7 +53,7 @@ import com.ichi2.themes.Themes.setThemeLegacy import com.ichi2.utils.AdaptionUtil import com.ichi2.utils.getInstanceFromClassName import timber.log.Timber -import java.util.* +import java.util.Calendar /** * Preferences dialog. diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/provider/CardContentProvider.kt b/AnkiDroid/src/main/java/com/ichi2/anki/provider/CardContentProvider.kt index 9dfb550d0ad6..e3c40d1383bb 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/provider/CardContentProvider.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/provider/CardContentProvider.kt @@ -18,7 +18,10 @@ ****************************************************************************************/ package com.ichi2.anki.provider -import android.content.* +import android.content.ContentProvider +import android.content.ContentUris +import android.content.ContentValues +import android.content.UriMatcher import android.content.pm.PackageManager import android.database.Cursor import android.database.MatrixCursor @@ -26,13 +29,29 @@ import android.database.sqlite.SQLiteQueryBuilder import android.net.Uri import android.text.TextUtils import android.webkit.MimeTypeMap -import com.ichi2.anki.* +import com.ichi2.anki.BuildConfig +import com.ichi2.anki.CollectionHelper +import com.ichi2.anki.CrashReportService +import com.ichi2.anki.FlashCardsContract +import com.ichi2.anki.R import com.ichi2.anki.exception.ConfirmModSchemaException import com.ichi2.compat.CompatHelper.Companion.isMarshmallow -import com.ichi2.libanki.* +import com.ichi2.libanki.Card import com.ichi2.libanki.Collection +import com.ichi2.libanki.Consts import com.ichi2.libanki.Consts.BUTTON_TYPE +import com.ichi2.libanki.DB +import com.ichi2.libanki.Deck +import com.ichi2.libanki.DeckId +import com.ichi2.libanki.Decks +import com.ichi2.libanki.Model +import com.ichi2.libanki.ModelManager +import com.ichi2.libanki.Models import com.ichi2.libanki.Models.AllowEmpty +import com.ichi2.libanki.Note +import com.ichi2.libanki.NoteId +import com.ichi2.libanki.NoteTypeId +import com.ichi2.libanki.Utils import com.ichi2.libanki.backend.exception.DeckRenameException import com.ichi2.libanki.exception.EmptyMediaException import com.ichi2.libanki.sched.AbstractSched @@ -48,8 +67,7 @@ import com.ichi2.utils.KotlinCleanup import timber.log.Timber import java.io.File import java.io.IOException -import java.util.* -import kotlin.collections.ArrayList +import java.util.Locale /** * Supported URIs: diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/reviewer/AutomaticAnswer.kt b/AnkiDroid/src/main/java/com/ichi2/anki/reviewer/AutomaticAnswer.kt index efb32f1e42af..60c5e0c31268 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/reviewer/AutomaticAnswer.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/reviewer/AutomaticAnswer.kt @@ -22,7 +22,10 @@ import androidx.annotation.VisibleForTesting import com.ichi2.anki.R import com.ichi2.anki.Reviewer import com.ichi2.anki.cardviewer.ViewerCommand -import com.ichi2.anki.reviewer.AnswerButtons.* +import com.ichi2.anki.reviewer.AnswerButtons.AGAIN +import com.ichi2.anki.reviewer.AnswerButtons.EASY +import com.ichi2.anki.reviewer.AnswerButtons.GOOD +import com.ichi2.anki.reviewer.AnswerButtons.HARD import com.ichi2.libanki.Collection import com.ichi2.libanki.DeckId import com.ichi2.utils.HandlerUtils diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/reviewer/Binding.kt b/AnkiDroid/src/main/java/com/ichi2/anki/reviewer/Binding.kt index 38d8addcd6e6..23f1ddcd4021 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/reviewer/Binding.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/reviewer/Binding.kt @@ -23,7 +23,7 @@ import com.ichi2.anki.cardviewer.Gesture import com.ichi2.compat.CompatHelper import com.ichi2.utils.StringUtil import timber.log.Timber -import java.util.* +import java.util.Objects class Binding private constructor(val modifierKeys: ModifierKeys?, val keycode: Int?, val unicodeCharacter: Char?, val gesture: Gesture?) { constructor(gesture: Gesture?) : this(null, null, null, gesture) diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/reviewer/MappableBinding.kt b/AnkiDroid/src/main/java/com/ichi2/anki/reviewer/MappableBinding.kt index a73e2c2b79c7..3b3082159ed6 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/reviewer/MappableBinding.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/reviewer/MappableBinding.kt @@ -23,8 +23,7 @@ import com.ichi2.anki.R import com.ichi2.anki.cardviewer.Gesture import com.ichi2.anki.cardviewer.ViewerCommand import timber.log.Timber -import java.util.* -import kotlin.collections.ArrayList +import java.util.Objects /** * Binding + additional contextual information diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/reviewer/PeripheralKeymap.kt b/AnkiDroid/src/main/java/com/ichi2/anki/reviewer/PeripheralKeymap.kt index 1ed8593b439c..ab9f6377cfa5 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/reviewer/PeripheralKeymap.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/reviewer/PeripheralKeymap.kt @@ -23,7 +23,6 @@ import com.ichi2.anki.cardviewer.ViewerCommand import com.ichi2.anki.reviewer.Binding.Companion.key import com.ichi2.anki.reviewer.CardSide.Companion.fromAnswer import com.ichi2.anki.reviewer.MappableBinding.Companion.fromPreference -import java.util.HashMap /** Accepts peripheral input, mapping via various keybinding strategies, * and converting them to commands for the Reviewer. */ diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/servicelayer/DeckService.kt b/AnkiDroid/src/main/java/com/ichi2/anki/servicelayer/DeckService.kt index 69faffddd9db..5ded282209d0 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/servicelayer/DeckService.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/servicelayer/DeckService.kt @@ -20,7 +20,7 @@ import com.ichi2.libanki.Collection import com.ichi2.libanki.Consts import com.ichi2.libanki.DeckId import com.ichi2.libanki.Utils -import java.util.* +import java.util.TreeMap object DeckService { fun shouldShowDefaultDeck(col: Collection): Boolean = diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/servicelayer/LanguageHintService.kt b/AnkiDroid/src/main/java/com/ichi2/anki/servicelayer/LanguageHintService.kt index 93ff6d8f6ccc..bb946ad1b3f2 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/servicelayer/LanguageHintService.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/servicelayer/LanguageHintService.kt @@ -24,7 +24,7 @@ import com.ichi2.libanki.Model import com.ichi2.libanki.ModelManager import com.ichi2.utils.JSONObject import timber.log.Timber -import java.util.* +import java.util.Locale /** * The language that a keyboard should open with when an [EditText] is selected diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/servicelayer/NoteService.kt b/AnkiDroid/src/main/java/com/ichi2/anki/servicelayer/NoteService.kt index 33343b0b7dda..aa03ffbf8307 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/servicelayer/NoteService.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/servicelayer/NoteService.kt @@ -26,7 +26,12 @@ import com.ichi2.anki.CollectionManager.withCol import com.ichi2.anki.CrashReportService import com.ichi2.anki.FieldEditText import com.ichi2.anki.multimediacard.IMultimediaEditableNote -import com.ichi2.anki.multimediacard.fields.* +import com.ichi2.anki.multimediacard.fields.AudioRecordingField +import com.ichi2.anki.multimediacard.fields.EFieldType +import com.ichi2.anki.multimediacard.fields.IField +import com.ichi2.anki.multimediacard.fields.ImageField +import com.ichi2.anki.multimediacard.fields.MediaClipField +import com.ichi2.anki.multimediacard.fields.TextField import com.ichi2.anki.multimediacard.impl.MultimediaEditableNote import com.ichi2.libanki.Card import com.ichi2.libanki.Consts diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/servicelayer/SchedulerService.kt b/AnkiDroid/src/main/java/com/ichi2/anki/servicelayer/SchedulerService.kt index 555f62e7e22e..58a75004fc88 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/servicelayer/SchedulerService.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/servicelayer/SchedulerService.kt @@ -20,14 +20,17 @@ import androidx.annotation.StringRes import com.ichi2.anki.CrashReportService import com.ichi2.anki.R import com.ichi2.anki.servicelayer.SchedulerService.NextCard -import com.ichi2.libanki.* +import com.ichi2.libanki.Card +import com.ichi2.libanki.Consts +import com.ichi2.libanki.Note +import com.ichi2.libanki.UndoAction import com.ichi2.libanki.UndoAction.Companion.revertCardToProvidedState import com.ichi2.libanki.UndoAction.UndoNameId +import com.ichi2.libanki.Utils import com.ichi2.utils.Computation import timber.log.Timber -import java.util.* +import java.util.Optional import java.util.concurrent.CancellationException -import kotlin.collections.ArrayList import com.ichi2.libanki.Collection as AnkiCollection typealias NextCardAnd = Computation> diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/servicelayer/scopedstorage/MigrateEssentialFiles.kt b/AnkiDroid/src/main/java/com/ichi2/anki/servicelayer/scopedstorage/MigrateEssentialFiles.kt index 9b644cfd6e50..48831d2612d4 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/servicelayer/scopedstorage/MigrateEssentialFiles.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/servicelayer/scopedstorage/MigrateEssentialFiles.kt @@ -24,9 +24,17 @@ import com.ichi2.anki.CollectionHelper import com.ichi2.anki.CollectionManager import com.ichi2.anki.exception.RetryableException import com.ichi2.anki.model.Directory -import com.ichi2.anki.servicelayer.* +import com.ichi2.anki.servicelayer.AnkiDroidDirectory +import com.ichi2.anki.servicelayer.CollectionFilePath +import com.ichi2.anki.servicelayer.ScopedAnkiDroidDirectory +import com.ichi2.anki.servicelayer.ScopedStorageService import com.ichi2.anki.servicelayer.ScopedStorageService.PREF_MIGRATION_DESTINATION import com.ichi2.anki.servicelayer.ScopedStorageService.PREF_MIGRATION_SOURCE +import com.ichi2.anki.servicelayer.execute +import com.ichi2.anki.servicelayer.getCollectionAnki2Path +import com.ichi2.anki.servicelayer.scopedstorage.MigrateEssentialFiles.Companion.PRIORITY_FILES +import com.ichi2.anki.servicelayer.scopedstorage.MigrateEssentialFiles.Companion.SAFETY_MARGIN_BYTES +import com.ichi2.anki.servicelayer.scopedstorage.MigrateEssentialFiles.Companion.migrateEssentialFiles import com.ichi2.anki.servicelayer.scopedstorage.MigrateEssentialFiles.UserActionRequiredException import com.ichi2.annotations.NeedsTest import com.ichi2.compat.CompatHelper diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/servicelayer/scopedstorage/MoveConflictedFile.kt b/AnkiDroid/src/main/java/com/ichi2/anki/servicelayer/scopedstorage/MoveConflictedFile.kt index e5b337c20068..2a5623ea81b7 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/servicelayer/scopedstorage/MoveConflictedFile.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/servicelayer/scopedstorage/MoveConflictedFile.kt @@ -21,10 +21,13 @@ import androidx.annotation.VisibleForTesting import com.ichi2.anki.model.Directory import com.ichi2.anki.model.DiskFile import com.ichi2.anki.model.RelativeFilePath -import com.ichi2.anki.servicelayer.scopedstorage.MigrateUserData.* +import com.ichi2.anki.servicelayer.scopedstorage.MigrateUserData.FileConflictException +import com.ichi2.anki.servicelayer.scopedstorage.MigrateUserData.FileConflictResolutionFailedException +import com.ichi2.anki.servicelayer.scopedstorage.MigrateUserData.FileDirectoryConflictException +import com.ichi2.anki.servicelayer.scopedstorage.MigrateUserData.MigrationContext +import com.ichi2.anki.servicelayer.scopedstorage.MigrateUserData.Operation import com.ichi2.compat.CompatHelper import java.io.File -import java.lang.IllegalStateException /** * Moves a file from [sourceFile] to [proposedDestinationFile]. diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/servicelayer/scopedstorage/MoveDirectoryContent.kt b/AnkiDroid/src/main/java/com/ichi2/anki/servicelayer/scopedstorage/MoveDirectoryContent.kt index de4b24d5c132..1defdd593a07 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/servicelayer/scopedstorage/MoveDirectoryContent.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/servicelayer/scopedstorage/MoveDirectoryContent.kt @@ -18,6 +18,7 @@ package com.ichi2.anki.servicelayer.scopedstorage import androidx.annotation.VisibleForTesting import com.ichi2.anki.model.Directory +import com.ichi2.anki.servicelayer.scopedstorage.MoveDirectoryContent.Companion.createInstance import com.ichi2.compat.CompatHelper import com.ichi2.compat.FileStream import java.io.File diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/services/BootService.kt b/AnkiDroid/src/main/java/com/ichi2/anki/services/BootService.kt index 1dde03fc1519..4a3fb12f43fa 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/services/BootService.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/services/BootService.kt @@ -5,7 +5,10 @@ import android.app.AlarmManager import android.content.BroadcastReceiver import android.content.Context import android.content.Intent -import com.ichi2.anki.* +import com.ichi2.anki.AnkiDroidApp +import com.ichi2.anki.CollectionHelper +import com.ichi2.anki.DeckOptions +import com.ichi2.anki.R import com.ichi2.anki.UIUtils.showThemedToast import com.ichi2.anki.preferences.Preferences import com.ichi2.compat.CompatHelper diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/stats/ChartBuilder.kt b/AnkiDroid/src/main/java/com/ichi2/anki/stats/ChartBuilder.kt index 4da61bad6551..aa435ab130c7 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/stats/ChartBuilder.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/stats/ChartBuilder.kt @@ -23,11 +23,23 @@ import com.ichi2.libanki.stats.Stats import com.ichi2.libanki.stats.Stats.AxisType import com.ichi2.libanki.stats.Stats.ChartType import com.ichi2.themes.Themes.getColorFromAttr -import com.wildplot.android.rendering.* +import com.wildplot.android.rendering.BarGraph +import com.wildplot.android.rendering.LegendDrawable +import com.wildplot.android.rendering.Lines +import com.wildplot.android.rendering.PieChart +import com.wildplot.android.rendering.PlotSheet +import com.wildplot.android.rendering.XAxis +import com.wildplot.android.rendering.XGrid +import com.wildplot.android.rendering.YAxis +import com.wildplot.android.rendering.YGrid import com.wildplot.android.rendering.graphics.wrapper.ColorWrap import com.wildplot.android.rendering.graphics.wrapper.RectangleWrap import timber.log.Timber -import kotlin.math.* +import kotlin.math.floor +import kotlin.math.ln +import kotlin.math.log10 +import kotlin.math.pow +import kotlin.math.roundToInt class ChartBuilder(private val chartView: ChartView, private val collectionData: Collection, private val deckId: DeckId, private val chartType: ChartType) { private var mMaxCards = 0 diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/stats/OverviewStatsBuilder.kt b/AnkiDroid/src/main/java/com/ichi2/anki/stats/OverviewStatsBuilder.kt index 48ff6da44445..c3558be6e0c1 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/stats/OverviewStatsBuilder.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/stats/OverviewStatsBuilder.kt @@ -17,7 +17,41 @@ package com.ichi2.anki.stats import android.R import android.webkit.WebView -import com.ichi2.anki.R.string.* +import com.ichi2.anki.R.string.stats_added +import com.ichi2.anki.R.string.stats_answer_buttons +import com.ichi2.anki.R.string.stats_forecast +import com.ichi2.anki.R.string.stats_overview_answer_buttons_learn +import com.ichi2.anki.R.string.stats_overview_answer_buttons_mature +import com.ichi2.anki.R.string.stats_overview_answer_buttons_young +import com.ichi2.anki.R.string.stats_overview_average_answer_time +import com.ichi2.anki.R.string.stats_overview_average_interval +import com.ichi2.anki.R.string.stats_overview_card_types_average_ease +import com.ichi2.anki.R.string.stats_overview_card_types_highest_ease +import com.ichi2.anki.R.string.stats_overview_card_types_lowest_ease +import com.ichi2.anki.R.string.stats_overview_card_types_total_cards +import com.ichi2.anki.R.string.stats_overview_card_types_total_notes +import com.ichi2.anki.R.string.stats_overview_days_studied +import com.ichi2.anki.R.string.stats_overview_forecast_average +import com.ichi2.anki.R.string.stats_overview_forecast_due_tomorrow +import com.ichi2.anki.R.string.stats_overview_forecast_total +import com.ichi2.anki.R.string.stats_overview_longest_interval +import com.ichi2.anki.R.string.stats_overview_new_cards_per_day +import com.ichi2.anki.R.string.stats_overview_reviews_per_day_all +import com.ichi2.anki.R.string.stats_overview_reviews_per_day_studydays +import com.ichi2.anki.R.string.stats_overview_time_per_day_all +import com.ichi2.anki.R.string.stats_overview_time_per_day_studydays +import com.ichi2.anki.R.string.stats_overview_total_new_cards +import com.ichi2.anki.R.string.stats_overview_total_time_in_period +import com.ichi2.anki.R.string.stats_review_count +import com.ichi2.anki.R.string.stats_review_intervals +import com.ichi2.anki.R.string.stats_review_time +import com.ichi2.anki.R.string.stats_today +import com.ichi2.anki.R.string.stats_today_again_count +import com.ichi2.anki.R.string.stats_today_correct_count +import com.ichi2.anki.R.string.stats_today_mature_cards +import com.ichi2.anki.R.string.stats_today_no_mature_cards +import com.ichi2.anki.R.string.stats_today_type_breakdown +import com.ichi2.anki.R.string.title_activity_template_editor import com.ichi2.libanki.Collection import com.ichi2.libanki.Consts import com.ichi2.libanki.DeckId @@ -25,7 +59,7 @@ import com.ichi2.libanki.Utils import com.ichi2.libanki.stats.Stats import com.ichi2.libanki.stats.Stats.AxisType import com.ichi2.themes.Themes.getColorFromAttr -import java.util.* +import java.util.Locale import kotlin.math.roundToInt import kotlin.math.roundToLong diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/ui/NoteTypeSpinnerUtils.kt b/AnkiDroid/src/main/java/com/ichi2/anki/ui/NoteTypeSpinnerUtils.kt index 69a5f3039beb..259d2e2301ea 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/ui/NoteTypeSpinnerUtils.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/ui/NoteTypeSpinnerUtils.kt @@ -27,7 +27,7 @@ import com.ichi2.anki.R import com.ichi2.libanki.Model import com.ichi2.themes.Themes.getColorFromAttr import com.ichi2.utils.NamedJSONComparator -import java.util.* +import java.util.Collections /** Setup for a spinner which displays all note types */ object NoteTypeSpinnerUtils { diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/web/HttpFetcher.kt b/AnkiDroid/src/main/java/com/ichi2/anki/web/HttpFetcher.kt index e2ec26066ba6..f442628adc3b 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/web/HttpFetcher.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/web/HttpFetcher.kt @@ -19,6 +19,7 @@ ****************************************************************************************/ package com.ichi2.anki.web + import android.content.Context import com.ichi2.async.Connection import com.ichi2.compat.CompatHelper diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/widgets/DeckAdapter.kt b/AnkiDroid/src/main/java/com/ichi2/anki/widgets/DeckAdapter.kt index 001f730fe125..fa51ce9f6220 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/widgets/DeckAdapter.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/widgets/DeckAdapter.kt @@ -24,7 +24,12 @@ import android.view.LayoutInflater import android.view.View import android.view.View.OnLongClickListener import android.view.ViewGroup -import android.widget.* +import android.widget.Filter +import android.widget.Filterable +import android.widget.ImageButton +import android.widget.LinearLayout +import android.widget.RelativeLayout +import android.widget.TextView import androidx.annotation.VisibleForTesting import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView @@ -38,7 +43,7 @@ import com.ichi2.libanki.sched.TreeNode import com.ichi2.utils.KotlinCleanup import com.ichi2.utils.TypedFilter import net.ankiweb.rsdroid.BackendFactory -import java.util.* +import java.util.Locale @KotlinCleanup("lots to do") class DeckAdapter(private val layoutInflater: LayoutInflater, context: Context) : RecyclerView.Adapter(), Filterable { diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/widgets/PopupMenuWithIcons.kt b/AnkiDroid/src/main/java/com/ichi2/anki/widgets/PopupMenuWithIcons.kt index 2e308cdc859c..e91787a179a4 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/widgets/PopupMenuWithIcons.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/widgets/PopupMenuWithIcons.kt @@ -20,7 +20,6 @@ import android.content.Context import android.view.View import androidx.appcompat.widget.PopupMenu import timber.log.Timber -import java.lang.Exception /** * A simple little hack to force the icons to display in the PopupMenu diff --git a/AnkiDroid/src/main/java/com/ichi2/async/CollectionOperations.kt b/AnkiDroid/src/main/java/com/ichi2/async/CollectionOperations.kt index b1a12300b663..1eefa6dd6fe5 100644 --- a/AnkiDroid/src/main/java/com/ichi2/async/CollectionOperations.kt +++ b/AnkiDroid/src/main/java/com/ichi2/async/CollectionOperations.kt @@ -15,6 +15,7 @@ ****************************************************************************************/ package com.ichi2.async + import com.ichi2.libanki.Card import com.ichi2.libanki.Collection import com.ichi2.libanki.Note diff --git a/AnkiDroid/src/main/java/com/ichi2/async/CollectionTask.kt b/AnkiDroid/src/main/java/com/ichi2/async/CollectionTask.kt index 27e54f23e28f..265e0b2783cd 100644 --- a/AnkiDroid/src/main/java/com/ichi2/async/CollectionTask.kt +++ b/AnkiDroid/src/main/java/com/ichi2/async/CollectionTask.kt @@ -21,27 +21,52 @@ package com.ichi2.async import android.content.Context import androidx.annotation.VisibleForTesting import com.fasterxml.jackson.core.JsonToken -import com.ichi2.anki.* +import com.ichi2.anki.AnkiDroidApp import com.ichi2.anki.AnkiSerialization.factory +import com.ichi2.anki.BackupManager import com.ichi2.anki.CardBrowser.CardCache import com.ichi2.anki.CardBrowser.CardCollection +import com.ichi2.anki.CardUtils +import com.ichi2.anki.CollectionHelper +import com.ichi2.anki.CrashReportService +import com.ichi2.anki.R import com.ichi2.anki.StudyOptionsFragment.DeckStudyData +import com.ichi2.anki.TemporaryModel import com.ichi2.anki.exception.ConfirmModSchemaException import com.ichi2.anki.exception.ImportExportException import com.ichi2.anki.servicelayer.NoteService -import com.ichi2.libanki.* +import com.ichi2.libanki.AnkiPackageExporter +import com.ichi2.libanki.Card import com.ichi2.libanki.Collection import com.ichi2.libanki.Collection.CheckDatabaseResult +import com.ichi2.libanki.Consts +import com.ichi2.libanki.DB +import com.ichi2.libanki.Deck +import com.ichi2.libanki.DeckConfig +import com.ichi2.libanki.DeckId +import com.ichi2.libanki.Decks +import com.ichi2.libanki.Media +import com.ichi2.libanki.Model +import com.ichi2.libanki.Note +import com.ichi2.libanki.Storage +import com.ichi2.libanki.UndoAction +import com.ichi2.libanki.Utils +import com.ichi2.libanki.WrongId import com.ichi2.libanki.importer.AnkiPackageImporter import com.ichi2.libanki.sched.DeckDueTreeNode import com.ichi2.libanki.sched.TreeNode -import com.ichi2.utils.* +import com.ichi2.utils.Computation +import com.ichi2.utils.JSONException +import com.ichi2.utils.JSONObject +import com.ichi2.utils.KotlinCleanup import org.apache.commons.compress.archivers.zip.ZipFile import timber.log.Timber import java.io.File import java.io.FileNotFoundException import java.io.IOException -import java.util.* +import java.util.Arrays +import java.util.Collections +import java.util.Objects import java.util.concurrent.CancellationException import java.util.concurrent.ExecutionException diff --git a/AnkiDroid/src/main/java/com/ichi2/async/Connection.kt b/AnkiDroid/src/main/java/com/ichi2/async/Connection.kt index bc6b4a18d264..7a3697e19a73 100644 --- a/AnkiDroid/src/main/java/com/ichi2/async/Connection.kt +++ b/AnkiDroid/src/main/java/com/ichi2/async/Connection.kt @@ -28,7 +28,8 @@ import com.ichi2.anki.CrashReportService import com.ichi2.anki.R import com.ichi2.anki.exception.MediaSyncException import com.ichi2.anki.exception.UnknownHttpResponseException -import com.ichi2.async.Connection.ConflictResolution.* +import com.ichi2.async.Connection.ConflictResolution.FULL_DOWNLOAD +import com.ichi2.async.Connection.ConflictResolution.FULL_UPLOAD import com.ichi2.libanki.Collection import com.ichi2.libanki.sync.CustomSyncServerUrlException import com.ichi2.libanki.sync.FullSyncer @@ -38,7 +39,20 @@ import com.ichi2.libanki.sync.MediaSyncer import com.ichi2.libanki.sync.RemoteMediaServer import com.ichi2.libanki.sync.RemoteServer import com.ichi2.libanki.sync.Syncer -import com.ichi2.libanki.sync.Syncer.ConnectionResultType.* +import com.ichi2.libanki.sync.Syncer.ConnectionResultType.ARBITRARY_STRING +import com.ichi2.libanki.sync.Syncer.ConnectionResultType.CONNECTION_ERROR +import com.ichi2.libanki.sync.Syncer.ConnectionResultType.CORRUPT +import com.ichi2.libanki.sync.Syncer.ConnectionResultType.CUSTOM_SYNC_SERVER_URL +import com.ichi2.libanki.sync.Syncer.ConnectionResultType.ERROR +import com.ichi2.libanki.sync.Syncer.ConnectionResultType.GENERIC_ERROR +import com.ichi2.libanki.sync.Syncer.ConnectionResultType.IO_EXCEPTION +import com.ichi2.libanki.sync.Syncer.ConnectionResultType.MEDIA_SANITY_FAILED +import com.ichi2.libanki.sync.Syncer.ConnectionResultType.MEDIA_SYNC_SERVER_ERROR +import com.ichi2.libanki.sync.Syncer.ConnectionResultType.NO_CHANGES +import com.ichi2.libanki.sync.Syncer.ConnectionResultType.OUT_OF_MEMORY_ERROR +import com.ichi2.libanki.sync.Syncer.ConnectionResultType.SANITY_CHECK_ERROR +import com.ichi2.libanki.sync.Syncer.ConnectionResultType.SUCCESS +import com.ichi2.libanki.sync.Syncer.ConnectionResultType.USER_ABORTED_SYNC import com.ichi2.utils.JSONException import com.ichi2.utils.JSONObject import com.ichi2.utils.KotlinCleanup diff --git a/AnkiDroid/src/main/java/com/ichi2/async/SingleTaskManager.kt b/AnkiDroid/src/main/java/com/ichi2/async/SingleTaskManager.kt index e69ba0d75ebf..faeb5c7f61fc 100644 --- a/AnkiDroid/src/main/java/com/ichi2/async/SingleTaskManager.kt +++ b/AnkiDroid/src/main/java/com/ichi2/async/SingleTaskManager.kt @@ -18,7 +18,8 @@ package com.ichi2.async import com.ichi2.utils.KotlinCleanup import com.ichi2.utils.ThreadUtil.sleep import timber.log.Timber -import java.util.* +import java.util.Collections +import java.util.LinkedList import java.util.concurrent.TimeUnit /** diff --git a/AnkiDroid/src/main/java/com/ichi2/compat/Compat.kt b/AnkiDroid/src/main/java/com/ichi2/compat/Compat.kt index 59a79fd272a5..f771524c2cd1 100644 --- a/AnkiDroid/src/main/java/com/ichi2/compat/Compat.kt +++ b/AnkiDroid/src/main/java/com/ichi2/compat/Compat.kt @@ -30,7 +30,12 @@ import android.net.Uri import android.os.Parcelable import android.widget.TimePicker import androidx.annotation.IntDef -import java.io.* +import java.io.File +import java.io.FileNotFoundException +import java.io.IOException +import java.io.InputStream +import java.io.OutputStream +import java.io.Serializable /** * This interface defines a set of functions that are not available on all platforms. diff --git a/AnkiDroid/src/main/java/com/ichi2/compat/CompatHelper.kt b/AnkiDroid/src/main/java/com/ichi2/compat/CompatHelper.kt index 46a38b765cf4..1429a5b5009a 100644 --- a/AnkiDroid/src/main/java/com/ichi2/compat/CompatHelper.kt +++ b/AnkiDroid/src/main/java/com/ichi2/compat/CompatHelper.kt @@ -19,7 +19,10 @@ import android.content.Intent import android.os.Build import android.os.Parcelable import android.view.KeyCharacterMap.deviceHasKey -import android.view.KeyEvent.* +import android.view.KeyEvent.KEYCODE_PAGE_DOWN +import android.view.KeyEvent.KEYCODE_PAGE_UP +import android.view.KeyEvent.KEYCODE_PICTSYMBOLS +import android.view.KeyEvent.KEYCODE_SWITCH_CHARSET import com.ichi2.compat.CompatHelper.Companion.compat import java.io.Serializable diff --git a/AnkiDroid/src/main/java/com/ichi2/compat/CompatV21.kt b/AnkiDroid/src/main/java/com/ichi2/compat/CompatV21.kt index ffd0af001a97..ee207d254157 100644 --- a/AnkiDroid/src/main/java/com/ichi2/compat/CompatV21.kt +++ b/AnkiDroid/src/main/java/com/ichi2/compat/CompatV21.kt @@ -35,7 +35,14 @@ import android.provider.MediaStore import android.widget.TimePicker import com.ichi2.utils.KotlinCleanup import timber.log.Timber -import java.io.* +import java.io.File +import java.io.FileInputStream +import java.io.FileNotFoundException +import java.io.FileOutputStream +import java.io.IOException +import java.io.InputStream +import java.io.OutputStream +import java.io.Serializable /** Baseline implementation of [Compat]. Check [Compat]'s for more detail. */ @KotlinCleanup("add extension method logging file.delete() failure" + "Fix Deprecation") diff --git a/AnkiDroid/src/main/java/com/ichi2/compat/CompatV26.kt b/AnkiDroid/src/main/java/com/ichi2/compat/CompatV26.kt index b4ed20093db9..931c53a594b9 100644 --- a/AnkiDroid/src/main/java/com/ichi2/compat/CompatV26.kt +++ b/AnkiDroid/src/main/java/com/ichi2/compat/CompatV26.kt @@ -29,8 +29,18 @@ import androidx.annotation.VisibleForTesting import androidx.core.app.NotificationCompat import com.ichi2.utils.KotlinCleanup import timber.log.Timber -import java.io.* -import java.nio.file.* +import java.io.File +import java.io.FileNotFoundException +import java.io.IOException +import java.io.InputStream +import java.io.OutputStream +import java.nio.file.DirectoryIteratorException +import java.nio.file.DirectoryStream +import java.nio.file.Files +import java.nio.file.NoSuchFileException +import java.nio.file.Path +import java.nio.file.Paths +import java.nio.file.StandardCopyOption /** Implementation of [Compat] for SDK level 26 and higher. Check [Compat]'s for more detail. */ @TargetApi(26) diff --git a/AnkiDroid/src/main/java/com/ichi2/exceptions/AggregateException.kt b/AnkiDroid/src/main/java/com/ichi2/exceptions/AggregateException.kt index f2c8e08ee651..4a789da38ab6 100644 --- a/AnkiDroid/src/main/java/com/ichi2/exceptions/AggregateException.kt +++ b/AnkiDroid/src/main/java/com/ichi2/exceptions/AggregateException.kt @@ -16,9 +16,6 @@ package com.ichi2.exceptions -import java.lang.Exception -import java.lang.RuntimeException - /** * An exception which describes separate failures. * For example: if an operation should continue after some errors, but those errors would stop diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/AnkiPackageExporter.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/AnkiPackageExporter.kt index d9c93300cf3c..1eb2838e9bd6 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/AnkiPackageExporter.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/AnkiPackageExporter.kt @@ -29,7 +29,14 @@ import com.ichi2.utils.KotlinCleanup import org.apache.commons.compress.archivers.zip.ZipArchiveEntry import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream import timber.log.Timber -import java.io.* +import java.io.BufferedInputStream +import java.io.BufferedOutputStream +import java.io.ByteArrayInputStream +import java.io.File +import java.io.FileInputStream +import java.io.FileOutputStream +import java.io.IOException +import java.io.InputStream @KotlinCleanup("lots in this file") open class Exporter(protected val col: Collection, protected val did: DeckId?) { diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/Card.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/Card.kt index c8b7616e9a9a..72ec200b81d7 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/Card.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/Card.kt @@ -36,7 +36,7 @@ import com.ichi2.utils.JSONObject import com.ichi2.utils.LanguageUtil import net.ankiweb.rsdroid.RustCleanup import timber.log.Timber -import java.util.* +import java.util.Arrays import java.util.concurrent.CancellationException /** diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/Collection.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/Collection.kt index e65b237a8f44..062f384e842e 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/Collection.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/Collection.kt @@ -55,13 +55,26 @@ import com.ichi2.libanki.template.TemplateError import com.ichi2.libanki.utils.Time import com.ichi2.libanki.utils.TimeManager import com.ichi2.upgrade.Upgrade -import com.ichi2.utils.* +import com.ichi2.utils.BlocksSchemaUpgrade +import com.ichi2.utils.FunctionalInterfaces +import com.ichi2.utils.HashUtil +import com.ichi2.utils.JSONArray +import com.ichi2.utils.JSONException +import com.ichi2.utils.JSONObject +import com.ichi2.utils.KotlinCleanup +import com.ichi2.utils.VersionUtils import net.ankiweb.rsdroid.Backend import net.ankiweb.rsdroid.RustCleanup import org.jetbrains.annotations.Contract import timber.log.Timber -import java.io.* -import java.util.* +import java.io.BufferedWriter +import java.io.File +import java.io.FileWriter +import java.io.IOException +import java.io.PrintWriter +import java.util.Arrays +import java.util.GregorianCalendar +import java.util.Locale import java.util.concurrent.LinkedBlockingDeque import java.util.function.Consumer import java.util.regex.Pattern diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/CollectionV16.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/CollectionV16.kt index 3eb847ed71b7..5918591bbd71 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/CollectionV16.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/CollectionV16.kt @@ -18,7 +18,7 @@ package com.ichi2.libanki import android.content.Context import android.content.res.Resources import anki.config.ConfigKey -import com.ichi2.libanki.backend.* +import com.ichi2.libanki.backend.RustConfigBackend import com.ichi2.libanki.backend.model.toBackendNote import com.ichi2.libanki.backend.model.toProtoBuf import com.ichi2.libanki.exception.InvalidSearchException diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/Consts.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/Consts.kt index e3efefdfd1d1..78e69ee29ff9 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/Consts.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/Consts.kt @@ -16,7 +16,6 @@ package com.ichi2.libanki import androidx.annotation.IntDef -import kotlin.annotation.Retention object Consts { // whether new cards should be mixed with reviews, or shown first or last diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/DB.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/DB.kt index 53675d06abab..b15a34eb1d1d 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/DB.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/DB.kt @@ -35,10 +35,6 @@ import net.ankiweb.rsdroid.Backend import net.ankiweb.rsdroid.database.AnkiSupportSQLiteDatabase import org.intellij.lang.annotations.Language import timber.log.Timber -import java.lang.Exception -import java.lang.RuntimeException -import java.util.ArrayList -import kotlin.Throws /** * Database layer for AnkiDroid. Wraps an SupportSQLiteDatabase (provided by either the Rust backend diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/DeckManager.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/DeckManager.kt index 6acf659914c0..e67bd1829256 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/DeckManager.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/DeckManager.kt @@ -25,7 +25,9 @@ import com.ichi2.utils.DeckNameComparator import com.ichi2.utils.KotlinCleanup import net.ankiweb.rsdroid.RustCleanup import org.intellij.lang.annotations.Language -import java.util.* +import java.util.Collections +import java.util.LinkedList +import java.util.TreeMap abstract class DeckManager { diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/Decks.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/Decks.kt index 1147277fa152..7ed85d167821 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/Decks.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/Decks.kt @@ -30,14 +30,21 @@ import com.ichi2.anki.exception.ConfirmModSchemaException import com.ichi2.libanki.Consts.DECK_STD import com.ichi2.libanki.backend.exception.DeckRenameException import com.ichi2.libanki.utils.TimeManager.time -import com.ichi2.utils.* import com.ichi2.utils.CollectionUtils.addAll +import com.ichi2.utils.DeckComparator import com.ichi2.utils.HashUtil.HashMapInit +import com.ichi2.utils.JSONArray +import com.ichi2.utils.JSONObject +import com.ichi2.utils.KotlinCleanup +import com.ichi2.utils.SyncStatus import net.ankiweb.rsdroid.RustCleanup import org.intellij.lang.annotations.Language import timber.log.Timber import java.text.Normalizer -import java.util.* +import java.util.Arrays +import java.util.Collections +import java.util.LinkedList +import java.util.TreeMap import java.util.regex.Pattern // fixmes: diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/DecksV16.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/DecksV16.kt index 4823ae4a623a..7577c0c32517 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/DecksV16.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/DecksV16.kt @@ -42,8 +42,16 @@ import com.ichi2.libanki.Decks.Companion.ACTIVE_DECKS import com.ichi2.libanki.Utils.ids2str import com.ichi2.libanki.backend.BackendUtils import com.ichi2.libanki.backend.exception.DeckRenameException -import com.ichi2.libanki.utils.* import com.ichi2.libanki.utils.TimeManager.time +import com.ichi2.libanki.utils.append +import com.ichi2.libanki.utils.extend +import com.ichi2.libanki.utils.isNotNullOrEmpty +import com.ichi2.libanki.utils.isNullOrEmpty +import com.ichi2.libanki.utils.items +import com.ichi2.libanki.utils.join +import com.ichi2.libanki.utils.len +import com.ichi2.libanki.utils.pop +import com.ichi2.libanki.utils.toJsonArray import com.ichi2.utils.CollectionUtils import com.ichi2.utils.JSONArray import com.ichi2.utils.JSONObject @@ -52,7 +60,11 @@ import net.ankiweb.rsdroid.RustCleanup import net.ankiweb.rsdroid.exceptions.BackendDeckIsFilteredException import net.ankiweb.rsdroid.exceptions.BackendNotFoundException import timber.log.Timber -import java.util.* +import java.util.LinkedList +import java.util.TreeMap +import kotlin.collections.component1 +import kotlin.collections.component2 +import kotlin.collections.set data class DeckNameId(val name: String, val id: DeckId) diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/Finder.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/Finder.kt index 2d88cbf184e9..741e2f4063af 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/Finder.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/Finder.kt @@ -21,7 +21,9 @@ package com.ichi2.libanki import android.database.SQLException import android.text.TextUtils import androidx.annotation.CheckResult -import com.ichi2.libanki.SortOrder.* +import com.ichi2.libanki.SortOrder.AfterSqlOrderBy +import com.ichi2.libanki.SortOrder.NoOrdering +import com.ichi2.libanki.SortOrder.UseCollectionOrdering import com.ichi2.libanki.stats.Stats import com.ichi2.libanki.utils.TimeManager.time import com.ichi2.utils.HashUtil.HashMapInit @@ -30,7 +32,9 @@ import com.ichi2.utils.KotlinCleanup import net.ankiweb.rsdroid.RustCleanup import timber.log.Timber import java.text.Normalizer -import java.util.* +import java.util.Arrays +import java.util.Collections +import java.util.LinkedList import java.util.regex.Pattern @RustCleanup("remove this once Java backend is gone") diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/Media.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/Media.kt index cbc7e79d1340..37788affc4ca 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/Media.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/Media.kt @@ -23,11 +23,26 @@ import android.text.TextUtils import com.ichi2.anki.CrashReportService import com.ichi2.libanki.exception.EmptyMediaException import com.ichi2.libanki.template.TemplateFilters -import com.ichi2.utils.* +import com.ichi2.utils.Assert +import com.ichi2.utils.ExceptionUtil import com.ichi2.utils.HashUtil.HashMapInit +import com.ichi2.utils.JSONArray +import com.ichi2.utils.JSONObject +import com.ichi2.utils.KotlinCleanup import timber.log.Timber -import java.io.* -import java.util.* +import java.io.BufferedInputStream +import java.io.BufferedOutputStream +import java.io.File +import java.io.FileInputStream +import java.io.FileNotFoundException +import java.io.FileOutputStream +import java.io.IOException +import java.io.PrintWriter +import java.io.StringWriter +import java.util.Arrays +import java.util.Collections +import java.util.Locale +import java.util.TreeSet import java.util.regex.Matcher import java.util.regex.Pattern import java.util.zip.ZipEntry diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/Models.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/Models.kt index 6beff1cf94a6..2d43a509cb5c 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/Models.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/Models.kt @@ -29,7 +29,8 @@ import com.ichi2.utils.JSONArray import com.ichi2.utils.JSONObject import com.ichi2.utils.KotlinCleanup import timber.log.Timber -import java.util.* +import java.util.Arrays +import java.util.WeakHashMap import java.util.regex.Pattern @KotlinCleanup("IDE Lint") diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/ModelsV16.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/ModelsV16.kt index f4e94b3f3acd..1ce61047399a 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/ModelsV16.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/ModelsV16.kt @@ -29,9 +29,15 @@ import anki.notetypes.StockNotetype import com.ichi2.anki.R import com.ichi2.libanki.Consts.MODEL_CLOZE import com.ichi2.libanki.Utils.checksum -import com.ichi2.libanki.backend.* +import com.ichi2.libanki.backend.BackendUtils import com.ichi2.libanki.backend.BackendUtils.to_json_bytes -import com.ichi2.libanki.utils.* +import com.ichi2.libanki.utils.TimeManager +import com.ichi2.libanki.utils.append +import com.ichi2.libanki.utils.index +import com.ichi2.libanki.utils.insert +import com.ichi2.libanki.utils.len +import com.ichi2.libanki.utils.remove +import com.ichi2.libanki.utils.set import com.ichi2.utils.JSONArray import com.ichi2.utils.JSONObject import net.ankiweb.rsdroid.RustCleanup diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/Note.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/Note.kt index 7d1aaa6390e8..18dabaf758e4 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/Note.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/Note.kt @@ -24,7 +24,7 @@ import com.ichi2.utils.JSONObject import com.ichi2.utils.KotlinCleanup import net.ankiweb.rsdroid.BackendFactory.defaultLegacySchema import timber.log.Timber -import java.util.* +import java.util.AbstractSet import java.util.regex.Pattern @KotlinCleanup("lots to do") diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/PythonTypes.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/PythonTypes.kt index d21d39a77715..2787865c1646 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/PythonTypes.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/PythonTypes.kt @@ -16,8 +16,6 @@ package com.ichi2.libanki -import java.util.* - /* * We can't use private typealiases until * https://youtrack.jetbrains.com/issue/KT-24700 is fixed diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/Sound.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/Sound.kt index 2946b295878c..6eaaf5e80549 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/Sound.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/Sound.kt @@ -19,8 +19,12 @@ package com.ichi2.libanki import android.app.Activity import android.content.Context -import android.media.* +import android.media.AudioAttributes +import android.media.AudioFocusRequest +import android.media.AudioManager import android.media.AudioManager.OnAudioFocusChangeListener +import android.media.MediaMetadataRetriever +import android.media.MediaPlayer import android.media.MediaPlayer.OnCompletionListener import android.net.Uri import android.os.Build @@ -32,13 +36,15 @@ import com.ichi2.anki.AbstractFlashcardViewer import com.ichi2.anki.AnkiDroidApp import com.ichi2.anki.ReadText import com.ichi2.compat.CompatHelper +import com.ichi2.libanki.Sound.OnErrorListener import com.ichi2.utils.DisplayUtils import com.ichi2.utils.KotlinCleanup import com.ichi2.utils.StringUtil.trimRight import net.ankiweb.rsdroid.BackendFactory.defaultLegacySchema import timber.log.Timber import java.lang.ref.WeakReference -import java.util.* +import java.util.Arrays +import java.util.Locale import java.util.regex.Pattern @KotlinCleanup("IDE Lint") diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/Storage.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/Storage.kt index b088bd07dd09..d78f1f9318d3 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/Storage.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/Storage.kt @@ -31,8 +31,6 @@ import net.ankiweb.rsdroid.BackendFactory import timber.log.Timber import java.io.File import java.io.FileNotFoundException -import java.lang.Exception -import kotlin.Throws object Storage { var isInMemory = false diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/Tags.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/Tags.kt index 81b15ae7fb14..e5a9cfcf55a3 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/Tags.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/Tags.kt @@ -22,7 +22,9 @@ import android.text.TextUtils import com.ichi2.libanki.backend.model.TagUsnTuple import com.ichi2.libanki.utils.TimeManager import com.ichi2.utils.JSONObject -import java.util.* +import java.util.Locale +import java.util.TreeMap +import java.util.TreeSet import java.util.regex.Pattern /** diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/TemplateManager.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/TemplateManager.kt index 3c7590225188..9a0711bc9685 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/TemplateManager.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/TemplateManager.kt @@ -31,7 +31,7 @@ import com.ichi2.utils.JSONObject import net.ankiweb.rsdroid.RustCleanup import net.ankiweb.rsdroid.exceptions.BackendTemplateException import timber.log.Timber -import java.util.* +import java.util.HashMap private typealias Union = Pair private typealias TemplateReplacementList = MutableList> diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/TextCardExporter.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/TextCardExporter.kt index ab11e3cbb59c..59fe964f06be 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/TextCardExporter.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/TextCardExporter.kt @@ -17,7 +17,7 @@ import java.io.FileOutputStream import java.io.IOException import java.io.OutputStreamWriter import java.nio.charset.StandardCharsets -import java.util.* +import java.util.Arrays class TextCardExporter(col: Collection, did: DeckId?, includeHTML: Boolean) : Exporter(col, did) { init { diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/UndoAction.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/UndoAction.kt index c9a7c64fc92a..31b6b11c117d 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/UndoAction.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/UndoAction.kt @@ -22,7 +22,7 @@ import androidx.annotation.StringRes import com.ichi2.anki.R import com.ichi2.utils.LanguageUtil.getLocaleCompat import timber.log.Timber -import java.util.* +import java.util.Locale abstract class UndoAction /** diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/Utils.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/Utils.kt index cdfad7a974d3..2506e9387b37 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/Utils.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/Utils.kt @@ -43,12 +43,21 @@ import com.ichi2.utils.JSONObject import com.ichi2.utils.KotlinCleanup import org.apache.commons.compress.archivers.zip.ZipFile import timber.log.Timber -import java.io.* +import java.io.BufferedReader +import java.io.File +import java.io.FileInputStream +import java.io.FileNotFoundException +import java.io.IOException +import java.io.InputStream +import java.io.InputStreamReader +import java.io.UnsupportedEncodingException import java.math.BigInteger import java.security.MessageDigest import java.security.NoSuchAlgorithmException import java.text.Normalizer -import java.util.* +import java.util.Arrays +import java.util.Locale +import java.util.Random import java.util.regex.Matcher import java.util.regex.Pattern import kotlin.collections.Collection diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/WrongId.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/WrongId.kt index c4752a57e62e..2728fc0d3ced 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/WrongId.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/WrongId.kt @@ -15,6 +15,4 @@ ****************************************************************************************/ package com.ichi2.libanki -import java.lang.RuntimeException - class WrongId(id: Long, kind: String) : RuntimeException(" No $kind with id $id") diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/hooks/ChessFilter.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/hooks/ChessFilter.kt index fe356a53a7c2..ec4ac4362136 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/hooks/ChessFilter.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/hooks/ChessFilter.kt @@ -19,7 +19,7 @@ package com.ichi2.libanki.hooks import android.content.Context import com.ichi2.anki.AnkiDroidApp import timber.log.Timber -import java.util.* +import java.util.Locale import java.util.regex.Pattern object ChessFilter { diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/importer/Anki2Importer.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/importer/Anki2Importer.kt index 55d836d8734f..3bc19ba12f28 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/importer/Anki2Importer.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/importer/Anki2Importer.kt @@ -21,7 +21,6 @@ import android.text.TextUtils import com.ichi2.anki.R import com.ichi2.anki.exception.ConfirmModSchemaException import com.ichi2.anki.exception.ImportExportException -import com.ichi2.libanki.* import com.ichi2.libanki.Collection import com.ichi2.libanki.Consts.CARD_QUEUE import com.ichi2.libanki.Consts.CARD_TYPE @@ -31,7 +30,14 @@ import com.ichi2.libanki.Consts.CARD_TYPE_REV import com.ichi2.libanki.Consts.QUEUE_TYPE_DAY_LEARN_RELEARN import com.ichi2.libanki.Consts.QUEUE_TYPE_NEW import com.ichi2.libanki.Consts.QUEUE_TYPE_REV +import com.ichi2.libanki.DB +import com.ichi2.libanki.DeckId +import com.ichi2.libanki.Decks +import com.ichi2.libanki.Media +import com.ichi2.libanki.NoteId +import com.ichi2.libanki.NoteTypeId import com.ichi2.libanki.Storage.collection +import com.ichi2.libanki.Utils import com.ichi2.libanki.utils.TimeManager import com.ichi2.utils.HashUtil import com.ichi2.utils.KotlinCleanup diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/importer/AnkiPackageImporter.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/importer/AnkiPackageImporter.kt index 257879a702a2..c34db15d80bb 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/importer/AnkiPackageImporter.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/importer/AnkiPackageImporter.kt @@ -35,7 +35,6 @@ import java.io.BufferedInputStream import java.io.File import java.io.FileNotFoundException import java.io.IOException -import java.util.* class AnkiPackageImporter(col: Collection?, file: String?) : Anki2Importer(col!!, file!!) { @KotlinCleanup("lateinit") diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/sched/AbstractDeckTreeNode.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/sched/AbstractDeckTreeNode.kt index 7325aa35405e..f1165f7813a0 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/sched/AbstractDeckTreeNode.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/sched/AbstractDeckTreeNode.kt @@ -18,8 +18,7 @@ package com.ichi2.libanki.sched import com.ichi2.libanki.Collection import com.ichi2.libanki.DeckId import com.ichi2.libanki.Decks -import java.lang.UnsupportedOperationException -import java.util.* +import java.util.Locale /** * Holds the data for a single node (row) in the deck due tree (the user-visible list diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/sched/AbstractSched.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/sched/AbstractSched.kt index 01d4f91fff03..20ca3e116f6c 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/sched/AbstractSched.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/sched/AbstractSched.kt @@ -21,9 +21,10 @@ import com.google.android.material.snackbar.Snackbar import com.ichi2.anki.R import com.ichi2.anki.snackbar.showSnackbar import com.ichi2.async.CancelListener -import com.ichi2.libanki.* +import com.ichi2.libanki.Card import com.ichi2.libanki.Collection import com.ichi2.libanki.Consts.BUTTON_TYPE +import com.ichi2.libanki.DeckId import timber.log.Timber import java.lang.ref.WeakReference diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/sched/BaseSched.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/sched/BaseSched.kt index f80b92bf0483..8b8214b33372 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/sched/BaseSched.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/sched/BaseSched.kt @@ -25,14 +25,23 @@ import android.text.style.StyleSpan import androidx.annotation.VisibleForTesting import anki.ankidroid.schedTimingTodayLegacyRequest import anki.decks.DeckTreeNode -import anki.scheduler.* +import anki.scheduler.BuryOrSuspendCardsRequest +import anki.scheduler.SchedTimingTodayResponse +import anki.scheduler.UnburyDeckRequest +import anki.scheduler.scheduleCardsAsNewRequest +import anki.scheduler.setDueDateRequest import com.ichi2.anki.R import com.ichi2.async.CancelListener -import com.ichi2.libanki.* +import com.ichi2.libanki.Card import com.ichi2.libanki.Collection +import com.ichi2.libanki.Consts import com.ichi2.libanki.Consts.BUTTON_TYPE import com.ichi2.libanki.Consts.CARD_TYPE_RELEARNING import com.ichi2.libanki.Consts.QUEUE_TYPE_DAY_LEARN_RELEARN +import com.ichi2.libanki.DeckConfig +import com.ichi2.libanki.DeckId +import com.ichi2.libanki.NoteId +import com.ichi2.libanki.Utils import com.ichi2.libanki.stats.Stats import com.ichi2.libanki.utils.TimeManager import com.ichi2.libanki.utils.TimeManager.time diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/sched/CardQueue.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/sched/CardQueue.kt index 1df01e95b82c..f0d3df26e966 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/sched/CardQueue.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/sched/CardQueue.kt @@ -20,7 +20,9 @@ import com.ichi2.libanki.Card import com.ichi2.libanki.CardId import com.ichi2.libanki.Collection import com.ichi2.utils.KotlinCleanup -import java.util.* +import java.util.Collections +import java.util.LinkedList +import java.util.Random abstract class CardQueue( // We need to store mSched and not queue, because during initialization of sched, when CardQueues are initialized // sched.getCol is null. diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/sched/DeckDueTreeNode.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/sched/DeckDueTreeNode.kt index 0b302dbe031d..257ff9e0e513 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/sched/DeckDueTreeNode.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/sched/DeckDueTreeNode.kt @@ -20,7 +20,7 @@ import com.ichi2.libanki.DeckId import com.ichi2.libanki.Decks import com.ichi2.utils.KotlinCleanup import net.ankiweb.rsdroid.RustCleanup -import java.util.* +import java.util.Locale import kotlin.math.max import kotlin.math.min diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/sched/Sched.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/sched/Sched.kt index b7dcd170acf7..f35214182bb4 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/sched/Sched.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/sched/Sched.kt @@ -23,20 +23,33 @@ import android.text.TextUtils import androidx.annotation.VisibleForTesting import com.ichi2.async.CancelListener import com.ichi2.async.CancelListener.Companion.isCancelled -import com.ichi2.libanki.* +import com.ichi2.libanki.Card import com.ichi2.libanki.Collection +import com.ichi2.libanki.Consts import com.ichi2.libanki.Consts.BUTTON_TYPE import com.ichi2.libanki.Consts.CARD_QUEUE import com.ichi2.libanki.Consts.DECK_STD import com.ichi2.libanki.Consts.REVLOG_TYPE +import com.ichi2.libanki.Deck +import com.ichi2.libanki.Decks +import com.ichi2.libanki.SortOrder import com.ichi2.libanki.SortOrder.AfterSqlOrderBy +import com.ichi2.libanki.Utils import com.ichi2.libanki.sched.Counts.Queue -import com.ichi2.libanki.sched.Counts.Queue.* +import com.ichi2.libanki.sched.Counts.Queue.LRN +import com.ichi2.libanki.sched.Counts.Queue.NEW +import com.ichi2.libanki.sched.Counts.Queue.REV import com.ichi2.libanki.stats.Stats.Companion.SECONDS_PER_DAY -import com.ichi2.utils.* +import com.ichi2.utils.Assert +import com.ichi2.utils.HashUtil +import com.ichi2.utils.JSONException +import com.ichi2.utils.JSONObject +import com.ichi2.utils.KotlinCleanup import com.ichi2.utils.SyncStatus.Companion.ignoreDatabaseModification import timber.log.Timber -import java.util.* +import java.util.LinkedList +import java.util.Locale +import java.util.Random @KotlinCleanup("IDE Lint") @KotlinCleanup("cleanup: use formatted string for all queries") diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/sched/SchedV2.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/sched/SchedV2.kt index f69e91f67f45..5add30271efe 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/sched/SchedV2.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/sched/SchedV2.kt @@ -29,24 +29,41 @@ import com.ichi2.async.CancelListener import com.ichi2.async.CancelListener.Companion.isCancelled import com.ichi2.async.CollectionTask.Reset import com.ichi2.async.TaskManager -import com.ichi2.libanki.* +import com.ichi2.libanki.Card import com.ichi2.libanki.Collection +import com.ichi2.libanki.Consts import com.ichi2.libanki.Consts.BUTTON_TYPE import com.ichi2.libanki.Consts.CARD_QUEUE import com.ichi2.libanki.Consts.DYN_PRIORITY import com.ichi2.libanki.Consts.NEW_CARD_ORDER import com.ichi2.libanki.Consts.REVLOG_TYPE +import com.ichi2.libanki.Deck +import com.ichi2.libanki.Decks import com.ichi2.libanki.SortOrder.AfterSqlOrderBy -import com.ichi2.libanki.sched.Counts.Queue.* +import com.ichi2.libanki.Utils +import com.ichi2.libanki.sched.Counts.Queue.LRN +import com.ichi2.libanki.sched.Counts.Queue.NEW +import com.ichi2.libanki.sched.Counts.Queue.REV +import com.ichi2.libanki.sched.SchedV2.CountMethod +import com.ichi2.libanki.sched.SchedV2.LimitMethod import com.ichi2.libanki.stats.Stats import com.ichi2.libanki.utils.Time import com.ichi2.libanki.utils.TimeManager -import com.ichi2.utils.* +import com.ichi2.utils.Assert +import com.ichi2.utils.HashUtil +import com.ichi2.utils.JSONArray +import com.ichi2.utils.JSONException +import com.ichi2.utils.JSONObject +import com.ichi2.utils.KotlinCleanup +import com.ichi2.utils.SyncStatus import net.ankiweb.rsdroid.BackendFactory import net.ankiweb.rsdroid.RustCleanup import timber.log.Timber import java.lang.ref.WeakReference -import java.util.* +import java.util.Collections +import java.util.LinkedList +import java.util.Locale +import java.util.Random @KotlinCleanup("IDE Lint") @KotlinCleanup("much to do - keep in line with libAnki") diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/sched/SchedV3.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/sched/SchedV3.kt index 10bfea9dc4f1..7ebdaa6430a8 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/sched/SchedV3.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/sched/SchedV3.kt @@ -17,7 +17,11 @@ package com.ichi2.libanki.sched import android.app.Activity -import anki.scheduler.* +import anki.scheduler.CardAnswer +import anki.scheduler.NextCardStates +import anki.scheduler.QueuedCards +import anki.scheduler.SchedulingState +import anki.scheduler.cardAnswer import com.ichi2.async.CancelListener import com.ichi2.libanki.Card import com.ichi2.libanki.CollectionV16 diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/stats/AdvancedStatistics.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/stats/AdvancedStatistics.kt index 9de017cdbc09..5bdd35e9a9ac 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/stats/AdvancedStatistics.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/stats/AdvancedStatistics.kt @@ -31,7 +31,9 @@ import com.ichi2.libanki.utils.Time import com.ichi2.libanki.utils.TimeManager.time import com.ichi2.utils.HashUtil.HashMapInit import timber.log.Timber -import java.util.* +import java.util.Arrays +import java.util.Random +import java.util.Stack /** * Display forecast statistics based on a simulation of future reviews. diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/stats/Stats.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/stats/Stats.kt index 12c3633f50a8..e4870898625f 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/stats/Stats.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/stats/Stats.kt @@ -29,7 +29,9 @@ import com.ichi2.libanki.Utils import com.ichi2.libanki.utils.Time.Companion.gregorianCalendar import com.ichi2.utils.KotlinCleanup import timber.log.Timber -import java.util.* +import java.util.Calendar +import java.util.Collections +import java.util.Vector class Stats(private val col: com.ichi2.libanki.Collection, did: Long) { enum class AxisType(val days: Int, val descriptionId: Int) { diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/sync/MediaSyncer.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/sync/MediaSyncer.kt index c629aa35ca47..0378d891a3b5 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/sync/MediaSyncer.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/sync/MediaSyncer.kt @@ -28,7 +28,7 @@ import com.ichi2.libanki.Consts import com.ichi2.libanki.sync.Syncer.ConnectionResultType import timber.log.Timber import java.io.IOException -import java.util.* +import java.util.Locale /** * About conflicts: diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/sync/RemoteMediaServer.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/sync/RemoteMediaServer.kt index a0695a168838..5bd4c9a2e60f 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/sync/RemoteMediaServer.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/sync/RemoteMediaServer.kt @@ -32,7 +32,7 @@ import timber.log.Timber import java.io.File import java.io.FileInputStream import java.io.IOException -import java.util.* +import java.util.Locale import java.util.zip.ZipFile class RemoteMediaServer( diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/sync/RemoteServer.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/sync/RemoteServer.kt index c9f85076ab80..db5eb8046ea3 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/sync/RemoteServer.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/sync/RemoteServer.kt @@ -28,7 +28,7 @@ import com.ichi2.utils.VersionUtils.pkgVersionName import okhttp3.Response import timber.log.Timber import java.io.IOException -import java.util.* +import java.util.Locale class RemoteServer( con: Connection, diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/sync/Syncer.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/sync/Syncer.kt index 0e7858626c93..88bb12da1027 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/sync/Syncer.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/sync/Syncer.kt @@ -26,10 +26,25 @@ import com.ichi2.anki.analytics.UsageAnalytics.sendAnalyticsEvent import com.ichi2.anki.exception.UnknownHttpResponseException import com.ichi2.async.Connection import com.ichi2.async.Connection.Companion.isCancelled -import com.ichi2.libanki.* import com.ichi2.libanki.Collection +import com.ichi2.libanki.Consts +import com.ichi2.libanki.DB +import com.ichi2.libanki.Deck +import com.ichi2.libanki.DeckConfig +import com.ichi2.libanki.Model +import com.ichi2.libanki.Utils import com.ichi2.libanki.sched.AbstractDeckTreeNode -import com.ichi2.libanki.sync.Syncer.ConnectionResultType.* +import com.ichi2.libanki.sync.Syncer.ConnectionResultType.BAD_AUTH +import com.ichi2.libanki.sync.Syncer.ConnectionResultType.BASIC_CHECK_FAILED +import com.ichi2.libanki.sync.Syncer.ConnectionResultType.CLOCK_OFF +import com.ichi2.libanki.sync.Syncer.ConnectionResultType.FINISH_ERROR +import com.ichi2.libanki.sync.Syncer.ConnectionResultType.FULL_SYNC +import com.ichi2.libanki.sync.Syncer.ConnectionResultType.IO_EXCEPTION +import com.ichi2.libanki.sync.Syncer.ConnectionResultType.NO_CHANGES +import com.ichi2.libanki.sync.Syncer.ConnectionResultType.OUT_OF_MEMORY_ERROR +import com.ichi2.libanki.sync.Syncer.ConnectionResultType.SANITY_CHECK_ERROR +import com.ichi2.libanki.sync.Syncer.ConnectionResultType.SERVER_ABORT +import com.ichi2.libanki.sync.Syncer.ConnectionResultType.SUCCESS import com.ichi2.libanki.utils.TimeManager.time import com.ichi2.utils.HashUtil.HashMapInit import com.ichi2.utils.JSONArray @@ -38,7 +53,8 @@ import com.ichi2.utils.JSONObject import com.ichi2.utils.KotlinCleanup import timber.log.Timber import java.io.IOException -import java.util.* +import java.util.Arrays +import java.util.LinkedList @KotlinCleanup("IDE-lint") class Syncer( diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/sync/UnifiedTrustManager.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/sync/UnifiedTrustManager.kt index 7da012f4faec..09bc9ff12504 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/sync/UnifiedTrustManager.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/sync/UnifiedTrustManager.kt @@ -21,7 +21,7 @@ import java.security.KeyStoreException import java.security.NoSuchAlgorithmException import java.security.cert.CertificateException import java.security.cert.X509Certificate -import java.util.* +import java.util.Arrays import javax.net.ssl.TrustManagerFactory import javax.net.ssl.X509TrustManager @@ -73,7 +73,8 @@ internal class UnifiedTrustManager(localKeyStore: KeyStore?) : X509TrustManager mLocalTrustManager = createTrustManager(localKeyStore) val first = mDefaultTrustManager.acceptedIssuers val second = mLocalTrustManager.acceptedIssuers - mAcceptedIssuers = Arrays.copyOf(first, first.size + second.size) + mAcceptedIssuers = + Arrays.copyOf(first, first.size + second.size) System.arraycopy(second, 0, mAcceptedIssuers, first.size, second.size) } } diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/template/ParsedNode.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/template/ParsedNode.kt index c8681acbf443..ad93a345f154 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/template/ParsedNode.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/template/ParsedNode.kt @@ -19,10 +19,13 @@ import android.content.Context import androidx.annotation.VisibleForTesting import com.ichi2.anki.R import com.ichi2.libanki.Utils -import com.ichi2.libanki.template.TemplateError.* +import com.ichi2.libanki.template.TemplateError.ConditionalNotClosed +import com.ichi2.libanki.template.TemplateError.ConditionalNotOpen +import com.ichi2.libanki.template.TemplateError.WrongConditionalClosed import com.ichi2.utils.KotlinCleanup import timber.log.Timber -import java.util.* +import java.util.Arrays +import java.util.WeakHashMap /** * Represents a template, allow to check in linear time which card is empty/render card. diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/template/ParsedNodes.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/template/ParsedNodes.kt index c314db087112..f1afb45453f1 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/template/ParsedNodes.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/template/ParsedNodes.kt @@ -17,7 +17,7 @@ package com.ichi2.libanki.template import androidx.annotation.VisibleForTesting import com.ichi2.utils.KotlinCleanup -import java.util.* +import java.util.Arrays @KotlinCleanup("fix hashCode issue suppression") @Suppress("EqualsOrHashCode") diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/template/Replacement.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/template/Replacement.kt index 152429c700f5..47808109c997 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/template/Replacement.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/template/Replacement.kt @@ -22,9 +22,7 @@ import com.ichi2.anki.R import com.ichi2.libanki.template.TemplateError.FieldNotFound import com.ichi2.libanki.template.TemplateFilters.apply_filter import com.ichi2.utils.KotlinCleanup -import java.lang.StringBuilder -import java.util.* -import kotlin.Throws +import java.util.Arrays @KotlinCleanup("IDE Lint") class Replacement( diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/template/TemplateFilters.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/template/TemplateFilters.kt index 327016555596..2e210d6be2f1 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/template/TemplateFilters.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/template/TemplateFilters.kt @@ -25,8 +25,7 @@ import com.ichi2.libanki.template.FuriganaFilters.kanaFilter import com.ichi2.libanki.template.FuriganaFilters.kanjiFilter import com.ichi2.utils.KotlinCleanup import timber.log.Timber -import java.lang.Exception -import java.util.* +import java.util.Locale import java.util.regex.Matcher import java.util.regex.Pattern diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/template/Text.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/template/Text.kt index f4ee3deb8f7e..92bc150c59a1 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/template/Text.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/template/Text.kt @@ -16,8 +16,6 @@ package com.ichi2.libanki.template -import java.lang.StringBuilder - class Text(private val text: String) : ParsedNode() { override fun template_is_empty(nonempty_fields: Set): Boolean { return true diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/template/Tokenizer.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/template/Tokenizer.kt index 616102d7e3b5..a760c7cc16ea 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/template/Tokenizer.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/template/Tokenizer.kt @@ -17,8 +17,6 @@ package com.ichi2.libanki.template import androidx.annotation.VisibleForTesting import com.ichi2.libanki.template.TemplateError.NoClosingBrackets -import java.util.NoSuchElementException -import kotlin.Throws /** * This class encodes template.rs's file creating template. diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/utils/PythonExtensions.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/utils/PythonExtensions.kt index 3b2c03d4f8e6..7c184e8f96e9 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/utils/PythonExtensions.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/utils/PythonExtensions.kt @@ -19,7 +19,7 @@ package com.ichi2.libanki.utils import android.text.TextUtils import com.ichi2.utils.JSONArray import com.ichi2.utils.JSONObject -import java.util.* +import java.util.Optional fun MutableList.append(value: T) { this.add(value) diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/utils/TimeManager.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/utils/TimeManager.kt index f07ea1a1fcc6..9c709d713aff 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/utils/TimeManager.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/utils/TimeManager.kt @@ -18,7 +18,7 @@ package com.ichi2.libanki.utils import android.annotation.SuppressLint import androidx.annotation.VisibleForTesting -import java.util.* +import java.util.Stack /** Singleton providing an instance of [Time]. * Used for tests to mock the time provider diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/utils/TimeUtils.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/utils/TimeUtils.kt index 3e1a168c0e7a..9fe697fe5701 100644 --- a/AnkiDroid/src/main/java/com/ichi2/libanki/utils/TimeUtils.kt +++ b/AnkiDroid/src/main/java/com/ichi2/libanki/utils/TimeUtils.kt @@ -16,7 +16,7 @@ package com.ichi2.libanki.utils import java.text.SimpleDateFormat -import java.util.* +import java.util.Locale object TimeUtils { fun getTimestamp(time: Time): String { diff --git a/AnkiDroid/src/main/java/com/ichi2/preferences/ControlPreference.kt b/AnkiDroid/src/main/java/com/ichi2/preferences/ControlPreference.kt index 1799f5f0f6bd..47f60f3ee01e 100644 --- a/AnkiDroid/src/main/java/com/ichi2/preferences/ControlPreference.kt +++ b/AnkiDroid/src/main/java/com/ichi2/preferences/ControlPreference.kt @@ -36,7 +36,6 @@ import com.ichi2.anki.reviewer.MappableBinding import com.ichi2.anki.reviewer.MappableBinding.Companion.fromGesture import com.ichi2.anki.reviewer.MappableBinding.Companion.toPreferenceString import com.ichi2.ui.KeyPicker -import java.util.* /** * A preference which allows mapping of inputs to actions (example: keys -> commands) diff --git a/AnkiDroid/src/main/java/com/ichi2/preferences/IncrementerNumberRangePreference.kt b/AnkiDroid/src/main/java/com/ichi2/preferences/IncrementerNumberRangePreference.kt index f74df91c725c..8a314a37b341 100644 --- a/AnkiDroid/src/main/java/com/ichi2/preferences/IncrementerNumberRangePreference.kt +++ b/AnkiDroid/src/main/java/com/ichi2/preferences/IncrementerNumberRangePreference.kt @@ -24,7 +24,6 @@ import android.view.ViewGroup import android.widget.Button import android.widget.LinearLayout import com.ichi2.anki.R -import java.lang.NumberFormatException // TODO Tracked in https://github.com/ankidroid/Anki-Android/issues/5019 : use IncrementerNumberRangePreferenceCompat @Suppress("deprecation") diff --git a/AnkiDroid/src/main/java/com/ichi2/themes/HtmlColors.kt b/AnkiDroid/src/main/java/com/ichi2/themes/HtmlColors.kt index 89a728532814..354a2ea8b4ad 100644 --- a/AnkiDroid/src/main/java/com/ichi2/themes/HtmlColors.kt +++ b/AnkiDroid/src/main/java/com/ichi2/themes/HtmlColors.kt @@ -19,7 +19,7 @@ package com.ichi2.themes import com.ichi2.utils.HashUtil.HashMapInit import com.ichi2.utils.KotlinCleanup import timber.log.Timber -import java.util.* +import java.util.Locale import java.util.regex.Matcher import java.util.regex.Pattern diff --git a/AnkiDroid/src/main/java/com/ichi2/ui/AppCompatPreferenceActivity.kt b/AnkiDroid/src/main/java/com/ichi2/ui/AppCompatPreferenceActivity.kt index cfb66e64e535..35a55ad89a3b 100644 --- a/AnkiDroid/src/main/java/com/ichi2/ui/AppCompatPreferenceActivity.kt +++ b/AnkiDroid/src/main/java/com/ichi2/ui/AppCompatPreferenceActivity.kt @@ -18,11 +18,20 @@ package com.ichi2.ui -import android.content.* +import android.content.BroadcastReceiver +import android.content.ContentValues +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.content.SharedPreferences import android.content.res.Configuration import android.os.Bundle import android.preference.PreferenceActivity -import android.view.* +import android.view.KeyEvent +import android.view.MenuInflater +import android.view.MenuItem +import android.view.View +import android.view.ViewGroup import androidx.annotation.LayoutRes import androidx.appcompat.app.ActionBar import androidx.appcompat.app.AppCompatDelegate @@ -38,7 +47,7 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.MainScope import kotlinx.coroutines.cancel import timber.log.Timber -import java.util.* +import java.util.LinkedList /** * A [android.preference.PreferenceActivity] which implements and proxies the necessary calls diff --git a/AnkiDroid/src/main/java/com/ichi2/ui/GestureDisplay.kt b/AnkiDroid/src/main/java/com/ichi2/ui/GestureDisplay.kt index 6318fa6eb117..ea08db09cde1 100644 --- a/AnkiDroid/src/main/java/com/ichi2/ui/GestureDisplay.kt +++ b/AnkiDroid/src/main/java/com/ichi2/ui/GestureDisplay.kt @@ -27,7 +27,19 @@ import android.widget.ImageView import androidx.constraintlayout.widget.ConstraintLayout import com.ichi2.anki.R import com.ichi2.anki.cardviewer.Gesture -import com.ichi2.anki.cardviewer.Gesture.* +import com.ichi2.anki.cardviewer.Gesture.SWIPE_DOWN +import com.ichi2.anki.cardviewer.Gesture.SWIPE_LEFT +import com.ichi2.anki.cardviewer.Gesture.SWIPE_RIGHT +import com.ichi2.anki.cardviewer.Gesture.SWIPE_UP +import com.ichi2.anki.cardviewer.Gesture.TAP_BOTTOM +import com.ichi2.anki.cardviewer.Gesture.TAP_BOTTOM_LEFT +import com.ichi2.anki.cardviewer.Gesture.TAP_BOTTOM_RIGHT +import com.ichi2.anki.cardviewer.Gesture.TAP_CENTER +import com.ichi2.anki.cardviewer.Gesture.TAP_LEFT +import com.ichi2.anki.cardviewer.Gesture.TAP_RIGHT +import com.ichi2.anki.cardviewer.Gesture.TAP_TOP +import com.ichi2.anki.cardviewer.Gesture.TAP_TOP_LEFT +import com.ichi2.anki.cardviewer.Gesture.TAP_TOP_RIGHT import com.ichi2.anki.cardviewer.GestureListener import com.ichi2.anki.cardviewer.TapGestureMode import timber.log.Timber diff --git a/AnkiDroid/src/main/java/com/ichi2/utils/AdaptionUtil.kt b/AnkiDroid/src/main/java/com/ichi2/utils/AdaptionUtil.kt index 12ef1566fea5..72d1e6be982d 100644 --- a/AnkiDroid/src/main/java/com/ichi2/utils/AdaptionUtil.kt +++ b/AnkiDroid/src/main/java/com/ichi2/utils/AdaptionUtil.kt @@ -28,7 +28,7 @@ import android.os.Build import android.provider.Settings import com.ichi2.anki.AnkiDroidApp import timber.log.Timber -import java.util.* +import java.util.Locale object AdaptionUtil { private var sHasRunWebBrowserCheck = false diff --git a/AnkiDroid/src/main/java/com/ichi2/utils/Assert.kt b/AnkiDroid/src/main/java/com/ichi2/utils/Assert.kt index b0899e51082b..9711b75ff79c 100644 --- a/AnkiDroid/src/main/java/com/ichi2/utils/Assert.kt +++ b/AnkiDroid/src/main/java/com/ichi2/utils/Assert.kt @@ -18,7 +18,6 @@ package com.ichi2.utils import org.jetbrains.annotations.Contract -import java.lang.AssertionError object Assert { fun that(condition: Boolean) { diff --git a/AnkiDroid/src/main/java/com/ichi2/utils/BitmapUtil.kt b/AnkiDroid/src/main/java/com/ichi2/utils/BitmapUtil.kt index 5dd1eb8ea171..fca572b7e614 100644 --- a/AnkiDroid/src/main/java/com/ichi2/utils/BitmapUtil.kt +++ b/AnkiDroid/src/main/java/com/ichi2/utils/BitmapUtil.kt @@ -27,7 +27,6 @@ import com.ichi2.anki.CrashReportService import timber.log.Timber import java.io.File import java.io.FileInputStream -import java.lang.Exception object BitmapUtil { fun decodeFile(theFile: File, IMAGE_MAX_SIZE: Int): Bitmap? { diff --git a/AnkiDroid/src/main/java/com/ichi2/utils/CheckCameraPermission.kt b/AnkiDroid/src/main/java/com/ichi2/utils/CheckCameraPermission.kt index 1edbb4c87152..b745ab70a38c 100644 --- a/AnkiDroid/src/main/java/com/ichi2/utils/CheckCameraPermission.kt +++ b/AnkiDroid/src/main/java/com/ichi2/utils/CheckCameraPermission.kt @@ -19,8 +19,7 @@ package com.ichi2.utils import android.content.Context import android.content.pm.PackageManager import timber.log.Timber -import java.lang.Exception -import java.util.* +import java.util.Arrays object CheckCameraPermission { @Suppress("deprecation") // getPackageInfo diff --git a/AnkiDroid/src/main/java/com/ichi2/utils/ContentResolverUtil.kt b/AnkiDroid/src/main/java/com/ichi2/utils/ContentResolverUtil.kt index 93dbc4e3aef1..b890b1dbc169 100644 --- a/AnkiDroid/src/main/java/com/ichi2/utils/ContentResolverUtil.kt +++ b/AnkiDroid/src/main/java/com/ichi2/utils/ContentResolverUtil.kt @@ -23,9 +23,7 @@ import android.webkit.MimeTypeMap import androidx.annotation.CheckResult import timber.log.Timber import java.io.File -import java.lang.Exception -import java.lang.IllegalStateException -import java.util.* +import java.util.Locale object ContentResolverUtil { /** Obtains the filename from the url. Throws if all methods return exception */ diff --git a/AnkiDroid/src/main/java/com/ichi2/utils/DatabaseChangeDecorator.kt b/AnkiDroid/src/main/java/com/ichi2/utils/DatabaseChangeDecorator.kt index 5dfa78d0fda2..faa77aa64e4a 100644 --- a/AnkiDroid/src/main/java/com/ichi2/utils/DatabaseChangeDecorator.kt +++ b/AnkiDroid/src/main/java/com/ichi2/utils/DatabaseChangeDecorator.kt @@ -20,7 +20,7 @@ import android.database.SQLException import androidx.sqlite.db.SupportSQLiteDatabase import androidx.sqlite.db.SupportSQLiteStatement import net.ankiweb.rsdroid.RustCleanup -import java.util.* +import java.util.Locale /** Detects any database modifications and notifies the sync status of the application */ @RustCleanup("After migrating to new backend, can use backend call instead of this class.") diff --git a/AnkiDroid/src/main/java/com/ichi2/utils/DeckComparator.kt b/AnkiDroid/src/main/java/com/ichi2/utils/DeckComparator.kt index 9743e1b318c1..828c87320767 100644 --- a/AnkiDroid/src/main/java/com/ichi2/utils/DeckComparator.kt +++ b/AnkiDroid/src/main/java/com/ichi2/utils/DeckComparator.kt @@ -15,8 +15,6 @@ ****************************************************************************************/ package com.ichi2.utils -import java.util.Comparator - class DeckComparator : Comparator { override fun compare(lhs: JSONObject, rhs: JSONObject): Int { return DeckNameComparator.INSTANCE.compare(lhs.getString("name"), rhs.getString("name")) diff --git a/AnkiDroid/src/main/java/com/ichi2/utils/DeckNameComparator.kt b/AnkiDroid/src/main/java/com/ichi2/utils/DeckNameComparator.kt index 696db52a5cef..94649ebc4851 100644 --- a/AnkiDroid/src/main/java/com/ichi2/utils/DeckNameComparator.kt +++ b/AnkiDroid/src/main/java/com/ichi2/utils/DeckNameComparator.kt @@ -17,7 +17,6 @@ package com.ichi2.utils import com.ichi2.libanki.Decks -import java.util.Comparator class DeckNameComparator : Comparator { override fun compare(lhs: String, rhs: String): Int { diff --git a/AnkiDroid/src/main/java/com/ichi2/utils/DimmedPromptBackgroundDecorator.kt b/AnkiDroid/src/main/java/com/ichi2/utils/DimmedPromptBackgroundDecorator.kt index c36ca5117084..fda2ecb27ae8 100644 --- a/AnkiDroid/src/main/java/com/ichi2/utils/DimmedPromptBackgroundDecorator.kt +++ b/AnkiDroid/src/main/java/com/ichi2/utils/DimmedPromptBackgroundDecorator.kt @@ -38,7 +38,11 @@ package com.ichi2.utils import android.content.res.Resources -import android.graphics.* +import android.graphics.Canvas +import android.graphics.Color +import android.graphics.Paint +import android.graphics.Rect +import android.graphics.RectF import com.ichi2.anki.PromptBackgroundInterface import com.ichi2.anki.PromptBackgroundInterfaceAdapter.Companion.toInterface import uk.co.samuelwall.materialtaptargetprompt.extras.PromptBackground diff --git a/AnkiDroid/src/main/java/com/ichi2/utils/ExifUtil.kt b/AnkiDroid/src/main/java/com/ichi2/utils/ExifUtil.kt index a849e2918418..4f09224fdcce 100644 --- a/AnkiDroid/src/main/java/com/ichi2/utils/ExifUtil.kt +++ b/AnkiDroid/src/main/java/com/ichi2/utils/ExifUtil.kt @@ -24,7 +24,6 @@ import android.graphics.Matrix import androidx.exifinterface.media.ExifInterface import timber.log.Timber import java.io.File -import java.lang.Exception object ExifUtil { fun rotateFromCamera(theFile: File, _bmp: Bitmap): Bitmap { diff --git a/AnkiDroid/src/main/java/com/ichi2/utils/FileUtil.kt b/AnkiDroid/src/main/java/com/ichi2/utils/FileUtil.kt index f4b9fa92e5b5..bd1c8dd5d23e 100644 --- a/AnkiDroid/src/main/java/com/ichi2/utils/FileUtil.kt +++ b/AnkiDroid/src/main/java/com/ichi2/utils/FileUtil.kt @@ -24,7 +24,7 @@ import timber.log.Timber import java.io.File import java.io.IOException import java.io.InputStream -import java.util.* +import java.util.AbstractMap.SimpleEntry object FileUtil { /** Gets the free disk space given a file */ @@ -74,7 +74,7 @@ object FileUtil { val index = fileName.lastIndexOf(".") return if (index < 1) { null - } else AbstractMap.SimpleEntry(fileName.substring(0, index), fileName.substring(index)) + } else SimpleEntry(fileName.substring(0, index), fileName.substring(index)) } /** diff --git a/AnkiDroid/src/main/java/com/ichi2/utils/FunctionalInterfaces.kt b/AnkiDroid/src/main/java/com/ichi2/utils/FunctionalInterfaces.kt index d42d22945bc2..9b4a232710a3 100644 --- a/AnkiDroid/src/main/java/com/ichi2/utils/FunctionalInterfaces.kt +++ b/AnkiDroid/src/main/java/com/ichi2/utils/FunctionalInterfaces.kt @@ -15,7 +15,7 @@ */ package com.ichi2.utils -import kotlin.jvm.Throws +import com.ichi2.utils.FunctionalInterfaces.Filter /** TODO: Move this to standard library in API 24 */ @KotlinCleanup("try to improve the generic code with in/out declarations for generic type parameters") diff --git a/AnkiDroid/src/main/java/com/ichi2/utils/HashUtil.kt b/AnkiDroid/src/main/java/com/ichi2/utils/HashUtil.kt index 7bacc9475529..679721910160 100644 --- a/AnkiDroid/src/main/java/com/ichi2/utils/HashUtil.kt +++ b/AnkiDroid/src/main/java/com/ichi2/utils/HashUtil.kt @@ -15,9 +15,6 @@ ****************************************************************************************/ package com.ichi2.utils -import java.util.HashMap -import java.util.HashSet - object HashUtil { /** * @param size Number of elements expected in the hash structure diff --git a/AnkiDroid/src/main/java/com/ichi2/utils/ImportUtils.kt b/AnkiDroid/src/main/java/com/ichi2/utils/ImportUtils.kt index 9d8bc9c3ff45..8dc9a34f775b 100644 --- a/AnkiDroid/src/main/java/com/ichi2/utils/ImportUtils.kt +++ b/AnkiDroid/src/main/java/com/ichi2/utils/ImportUtils.kt @@ -43,10 +43,9 @@ import java.io.IOException import java.io.InputStream import java.net.URLDecoder import java.net.URLEncoder -import java.util.* +import java.util.Locale import java.util.zip.ZipException import java.util.zip.ZipInputStream -import kotlin.collections.ArrayList object ImportUtils { /* A filename should be shortened if over this threshold */ diff --git a/AnkiDroid/src/main/java/com/ichi2/utils/IntentUtil.kt b/AnkiDroid/src/main/java/com/ichi2/utils/IntentUtil.kt index 5669f2b3db4c..4c348d01f035 100644 --- a/AnkiDroid/src/main/java/com/ichi2/utils/IntentUtil.kt +++ b/AnkiDroid/src/main/java/com/ichi2/utils/IntentUtil.kt @@ -21,7 +21,6 @@ import com.ichi2.anki.AnkiActivity import com.ichi2.anki.R import com.ichi2.anki.UIUtils.showThemedToast import timber.log.Timber -import java.lang.Exception object IntentUtil { @JvmStatic // (fixable) required due to structure of unit tests diff --git a/AnkiDroid/src/main/java/com/ichi2/utils/JSON.kt b/AnkiDroid/src/main/java/com/ichi2/utils/JSON.kt index b05360c8375c..e6dbc0b5bc8f 100644 --- a/AnkiDroid/src/main/java/com/ichi2/utils/JSON.kt +++ b/AnkiDroid/src/main/java/com/ichi2/utils/JSON.kt @@ -17,8 +17,6 @@ package com.ichi2.utils -import kotlin.Throws - object JSON { /** * Returns the input if it is a JSON-permissible value; throws otherwise. diff --git a/AnkiDroid/src/main/java/com/ichi2/utils/JSONException.kt b/AnkiDroid/src/main/java/com/ichi2/utils/JSONException.kt index 69f89ca0695d..119c0feb8e8a 100644 --- a/AnkiDroid/src/main/java/com/ichi2/utils/JSONException.kt +++ b/AnkiDroid/src/main/java/com/ichi2/utils/JSONException.kt @@ -42,9 +42,6 @@ package com.ichi2.utils -import java.lang.RuntimeException -import kotlin.Throws - /** * Similar to JSONException in meaning, but unchecked */ class JSONException : RuntimeException { diff --git a/AnkiDroid/src/main/java/com/ichi2/utils/JSONTokener.kt b/AnkiDroid/src/main/java/com/ichi2/utils/JSONTokener.kt index ff33938a691f..ef8786d38cfe 100644 --- a/AnkiDroid/src/main/java/com/ichi2/utils/JSONTokener.kt +++ b/AnkiDroid/src/main/java/com/ichi2/utils/JSONTokener.kt @@ -43,7 +43,6 @@ package com.ichi2.utils import org.json.JSONException import org.json.JSONTokener -import kotlin.Throws class JSONTokener(s: String) : JSONTokener(s) { @Throws(JSONException::class) diff --git a/AnkiDroid/src/main/java/com/ichi2/utils/LanguageUtil.kt b/AnkiDroid/src/main/java/com/ichi2/utils/LanguageUtil.kt index 5baebe405ff7..809c23162c70 100644 --- a/AnkiDroid/src/main/java/com/ichi2/utils/LanguageUtil.kt +++ b/AnkiDroid/src/main/java/com/ichi2/utils/LanguageUtil.kt @@ -24,7 +24,8 @@ import com.ichi2.anki.preferences.Preferences import net.ankiweb.rsdroid.BackendFactory import timber.log.Timber import java.text.DateFormat -import java.util.* +import java.util.Date +import java.util.Locale /** * Utility call for proving language related functionality. diff --git a/AnkiDroid/src/main/java/com/ichi2/utils/NamedJSONComparator.kt b/AnkiDroid/src/main/java/com/ichi2/utils/NamedJSONComparator.kt index 89cfff4e29d5..4614a8c3b62f 100644 --- a/AnkiDroid/src/main/java/com/ichi2/utils/NamedJSONComparator.kt +++ b/AnkiDroid/src/main/java/com/ichi2/utils/NamedJSONComparator.kt @@ -16,8 +16,6 @@ package com.ichi2.utils -import java.util.Comparator - class NamedJSONComparator : Comparator { override fun compare(lhs: JSONObject, rhs: JSONObject): Int { val o1 = lhs.getString("name") diff --git a/AnkiDroid/src/main/java/com/ichi2/utils/NoteFieldDecorator.kt b/AnkiDroid/src/main/java/com/ichi2/utils/NoteFieldDecorator.kt index d0ce82b0bab8..21af7ecea261 100644 --- a/AnkiDroid/src/main/java/com/ichi2/utils/NoteFieldDecorator.kt +++ b/AnkiDroid/src/main/java/com/ichi2/utils/NoteFieldDecorator.kt @@ -18,7 +18,7 @@ package com.ichi2.utils -import java.util.* +import java.util.Random object NoteFieldDecorator { private val random = Random() diff --git a/AnkiDroid/src/main/java/com/ichi2/utils/StringUtil.kt b/AnkiDroid/src/main/java/com/ichi2/utils/StringUtil.kt index 0c807fa8c74f..49bd428955b9 100644 --- a/AnkiDroid/src/main/java/com/ichi2/utils/StringUtil.kt +++ b/AnkiDroid/src/main/java/com/ichi2/utils/StringUtil.kt @@ -18,7 +18,7 @@ package com.ichi2.utils import org.jetbrains.annotations.Contract -import java.util.* +import java.util.Locale object StringUtil { /** Trims from the right hand side of a string */ diff --git a/AnkiDroid/src/main/java/com/ichi2/utils/Threads.kt b/AnkiDroid/src/main/java/com/ichi2/utils/Threads.kt index 859efb69464f..140b34edc908 100644 --- a/AnkiDroid/src/main/java/com/ichi2/utils/Threads.kt +++ b/AnkiDroid/src/main/java/com/ichi2/utils/Threads.kt @@ -20,7 +20,6 @@ import android.os.Looper import androidx.annotation.UiThread import androidx.annotation.WorkerThread import timber.log.Timber -import java.lang.RuntimeException /** * Helper class for checking for programming errors while using threads. diff --git a/AnkiDroid/src/main/java/com/ichi2/utils/UniqueArrayList.kt b/AnkiDroid/src/main/java/com/ichi2/utils/UniqueArrayList.kt index 99466eb0f68d..f0e41596d2ff 100644 --- a/AnkiDroid/src/main/java/com/ichi2/utils/UniqueArrayList.kt +++ b/AnkiDroid/src/main/java/com/ichi2/utils/UniqueArrayList.kt @@ -17,7 +17,10 @@ package com.ichi2.utils import androidx.annotation.RequiresApi import org.apache.commons.collections4.list.SetUniqueList -import java.util.* +import java.util.Arrays +import java.util.Collections +import java.util.Spliterator +import java.util.TreeSet /** * A collection of items that doesn't allow duplicate items, and allows fast random access, lookup, maintaining order, and sorting. diff --git a/AnkiDroid/src/main/java/com/ichi2/utils/VersionUtils.kt b/AnkiDroid/src/main/java/com/ichi2/utils/VersionUtils.kt index e4b965ad4e9d..e1c32edc5561 100644 --- a/AnkiDroid/src/main/java/com/ichi2/utils/VersionUtils.kt +++ b/AnkiDroid/src/main/java/com/ichi2/utils/VersionUtils.kt @@ -22,7 +22,6 @@ import androidx.core.content.pm.PackageInfoCompat import com.ichi2.anki.AnkiDroidApp import com.ichi2.anki.CrashReportService import timber.log.Timber -import java.lang.NullPointerException /** * Created by Tim on 11/04/2015. diff --git a/AnkiDroid/src/main/java/com/ichi2/utils/ViewGroupUtils.kt b/AnkiDroid/src/main/java/com/ichi2/utils/ViewGroupUtils.kt index b11f08173468..8d542c790689 100644 --- a/AnkiDroid/src/main/java/com/ichi2/utils/ViewGroupUtils.kt +++ b/AnkiDroid/src/main/java/com/ichi2/utils/ViewGroupUtils.kt @@ -22,7 +22,6 @@ import android.view.View import android.view.ViewGroup import com.ichi2.anki.AnkiDroidApp import timber.log.Timber -import java.util.ArrayList object ViewGroupUtils { fun getAllChildren(viewGroup: ViewGroup): List { diff --git a/AnkiDroid/src/main/java/com/ichi2/widget/AnkiDroidWidgetSmall.kt b/AnkiDroid/src/main/java/com/ichi2/widget/AnkiDroidWidgetSmall.kt index e9706d8ba061..78ebe2e590c0 100644 --- a/AnkiDroid/src/main/java/com/ichi2/widget/AnkiDroidWidgetSmall.kt +++ b/AnkiDroid/src/main/java/com/ichi2/widget/AnkiDroidWidgetSmall.kt @@ -18,7 +18,11 @@ import android.app.PendingIntent import android.app.Service import android.appwidget.AppWidgetManager import android.appwidget.AppWidgetProvider -import android.content.* +import android.content.BroadcastReceiver +import android.content.ComponentName +import android.content.Context +import android.content.Intent +import android.content.IntentFilter import android.content.res.Configuration import android.os.IBinder import android.util.TypedValue diff --git a/AnkiDroid/src/main/java/com/wildplot/android/parsing/Atom.kt b/AnkiDroid/src/main/java/com/wildplot/android/parsing/Atom.kt index 433e69b21c55..2355b8dd40b9 100644 --- a/AnkiDroid/src/main/java/com/wildplot/android/parsing/Atom.kt +++ b/AnkiDroid/src/main/java/com/wildplot/android/parsing/Atom.kt @@ -16,8 +16,20 @@ package com.wildplot.android.parsing -import com.wildplot.android.parsing.Atom.AtomType.* -import com.wildplot.android.parsing.AtomTypes.* +import com.wildplot.android.parsing.Atom.AtomType.EXP_IN_BRACKETS +import com.wildplot.android.parsing.Atom.AtomType.FUNCTION_MATH +import com.wildplot.android.parsing.Atom.AtomType.FUNCTION_X +import com.wildplot.android.parsing.Atom.AtomType.FUNCTION_X_Y +import com.wildplot.android.parsing.Atom.AtomType.INVALID +import com.wildplot.android.parsing.Atom.AtomType.NUMBER +import com.wildplot.android.parsing.Atom.AtomType.VARIABLE +import com.wildplot.android.parsing.AtomTypes.FunctionXAtom +import com.wildplot.android.parsing.AtomTypes.FunctionXYAtom +import com.wildplot.android.parsing.AtomTypes.MathFunctionAtom +import com.wildplot.android.parsing.AtomTypes.NumberAtom +import com.wildplot.android.parsing.AtomTypes.VariableAtom +import com.wildplot.android.parsing.AtomTypes.XVariableAtom +import com.wildplot.android.parsing.AtomTypes.YVariableAtom class Atom(private val parser: TopLevelParser) : TreeElement { var atomType: AtomType = INVALID diff --git a/AnkiDroid/src/main/java/com/wildplot/android/parsing/AtomTypes/FunctionXYAtom.kt b/AnkiDroid/src/main/java/com/wildplot/android/parsing/AtomTypes/FunctionXYAtom.kt index 6bbbed2cab18..2f0ea2674956 100644 --- a/AnkiDroid/src/main/java/com/wildplot/android/parsing/AtomTypes/FunctionXYAtom.kt +++ b/AnkiDroid/src/main/java/com/wildplot/android/parsing/AtomTypes/FunctionXYAtom.kt @@ -21,7 +21,6 @@ import com.wildplot.android.parsing.ExpressionFormatException import com.wildplot.android.parsing.TopLevelParser import com.wildplot.android.parsing.TreeElement import java.util.regex.Pattern -import kotlin.Throws /** * @author Michael Goldbach diff --git a/AnkiDroid/src/main/java/com/wildplot/android/parsing/AtomTypes/MathFunctionAtom.kt b/AnkiDroid/src/main/java/com/wildplot/android/parsing/AtomTypes/MathFunctionAtom.kt index 900f64c9f2c2..980dcb410492 100644 --- a/AnkiDroid/src/main/java/com/wildplot/android/parsing/AtomTypes/MathFunctionAtom.kt +++ b/AnkiDroid/src/main/java/com/wildplot/android/parsing/AtomTypes/MathFunctionAtom.kt @@ -17,12 +17,10 @@ package com.wildplot.android.parsing.AtomTypes import com.ichi2.utils.KotlinCleanup -import com.wildplot.android.parsing.AtomTypes.MathFunctionAtom.MathType import com.wildplot.android.parsing.Expression import com.wildplot.android.parsing.ExpressionFormatException import com.wildplot.android.parsing.TopLevelParser import com.wildplot.android.parsing.TreeElement -import kotlin.Throws @KotlinCleanup("IDE Lint") class MathFunctionAtom(funcString: String, private val parser: TopLevelParser) : TreeElement { diff --git a/AnkiDroid/src/main/java/com/wildplot/android/parsing/AtomTypes/NumberAtom.kt b/AnkiDroid/src/main/java/com/wildplot/android/parsing/AtomTypes/NumberAtom.kt index c146002615ed..f506c08254ac 100644 --- a/AnkiDroid/src/main/java/com/wildplot/android/parsing/AtomTypes/NumberAtom.kt +++ b/AnkiDroid/src/main/java/com/wildplot/android/parsing/AtomTypes/NumberAtom.kt @@ -20,8 +20,6 @@ import com.wildplot.android.parsing.Atom.AtomType import com.wildplot.android.parsing.ExpressionFormatException import com.wildplot.android.parsing.TreeElement import timber.log.Timber -import java.lang.NumberFormatException -import kotlin.Throws class NumberAtom(factorString: String) : TreeElement { diff --git a/AnkiDroid/src/main/java/com/wildplot/android/parsing/ExpressionFormatException.kt b/AnkiDroid/src/main/java/com/wildplot/android/parsing/ExpressionFormatException.kt index 90259d54fe38..e473d6ad9716 100644 --- a/AnkiDroid/src/main/java/com/wildplot/android/parsing/ExpressionFormatException.kt +++ b/AnkiDroid/src/main/java/com/wildplot/android/parsing/ExpressionFormatException.kt @@ -15,8 +15,6 @@ ****************************************************************************************/ package com.wildplot.android.parsing -import java.lang.IllegalArgumentException - class ExpressionFormatException : IllegalArgumentException { constructor() : super() constructor(detailMessage: String?) : super(detailMessage) diff --git a/AnkiDroid/src/main/java/com/wildplot/android/rendering/DrawableContainer.kt b/AnkiDroid/src/main/java/com/wildplot/android/rendering/DrawableContainer.kt index 21d0fd1e66f1..f2eee5188eb5 100644 --- a/AnkiDroid/src/main/java/com/wildplot/android/rendering/DrawableContainer.kt +++ b/AnkiDroid/src/main/java/com/wildplot/android/rendering/DrawableContainer.kt @@ -17,7 +17,7 @@ package com.wildplot.android.rendering import com.wildplot.android.rendering.graphics.wrapper.GraphicsWrap import com.wildplot.android.rendering.interfaces.Drawable -import java.util.* +import java.util.Vector class DrawableContainer(private val isOnFrame: Boolean, private val isCritical: Boolean) : Drawable { private val drawableVector = Vector() diff --git a/AnkiDroid/src/main/java/com/wildplot/android/rendering/MultiScreenPart.kt b/AnkiDroid/src/main/java/com/wildplot/android/rendering/MultiScreenPart.kt index cb21e975d7f2..9de11185e816 100644 --- a/AnkiDroid/src/main/java/com/wildplot/android/rendering/MultiScreenPart.kt +++ b/AnkiDroid/src/main/java/com/wildplot/android/rendering/MultiScreenPart.kt @@ -17,7 +17,7 @@ package com.wildplot.android.rendering import com.wildplot.android.rendering.interfaces.Drawable -import java.util.* +import java.util.Vector /** * This class is used to store information for a certain plot in a multi-plot sheet. diff --git a/AnkiDroid/src/main/java/com/wildplot/android/rendering/PlotSheet.kt b/AnkiDroid/src/main/java/com/wildplot/android/rendering/PlotSheet.kt index e0d738907717..1de8877effca 100644 --- a/AnkiDroid/src/main/java/com/wildplot/android/rendering/PlotSheet.kt +++ b/AnkiDroid/src/main/java/com/wildplot/android/rendering/PlotSheet.kt @@ -22,7 +22,8 @@ import com.wildplot.android.rendering.graphics.wrapper.RectangleWrap import com.wildplot.android.rendering.interfaces.Drawable import com.wildplot.android.rendering.interfaces.Legendable import timber.log.Timber -import java.util.* +import java.util.Collections +import java.util.Vector /** * This is a sheet that is used to plot mathematical functions including coordinate systems and optional extras like diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/AbstractFlashcardViewerCommandTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/AbstractFlashcardViewerCommandTest.kt index f74368827d4d..6cd0b15a2614 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/AbstractFlashcardViewerCommandTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/AbstractFlashcardViewerCommandTest.kt @@ -17,7 +17,14 @@ package com.ichi2.anki import androidx.test.ext.junit.runners.AndroidJUnit4 import com.ichi2.anki.cardviewer.ViewerCommand -import com.ichi2.anki.cardviewer.ViewerCommand.* +import com.ichi2.anki.cardviewer.ViewerCommand.TOGGLE_FLAG_BLUE +import com.ichi2.anki.cardviewer.ViewerCommand.TOGGLE_FLAG_GREEN +import com.ichi2.anki.cardviewer.ViewerCommand.TOGGLE_FLAG_ORANGE +import com.ichi2.anki.cardviewer.ViewerCommand.TOGGLE_FLAG_PINK +import com.ichi2.anki.cardviewer.ViewerCommand.TOGGLE_FLAG_PURPLE +import com.ichi2.anki.cardviewer.ViewerCommand.TOGGLE_FLAG_RED +import com.ichi2.anki.cardviewer.ViewerCommand.TOGGLE_FLAG_TURQUOISE +import com.ichi2.anki.cardviewer.ViewerCommand.UNSET_FLAG import com.ichi2.anki.reviewer.CardMarker.Companion.FLAG_BLUE import com.ichi2.anki.reviewer.CardMarker.Companion.FLAG_GREEN import com.ichi2.anki.reviewer.CardMarker.Companion.FLAG_NONE @@ -35,7 +42,9 @@ import org.hamcrest.Matchers.equalTo import org.junit.Test import org.junit.runner.RunWith import org.mockito.ArgumentMatchers.anyInt -import org.mockito.Mockito.* +import org.mockito.Mockito.doAnswer +import org.mockito.Mockito.mock +import org.mockito.Mockito.`when` import org.mockito.invocation.InvocationOnMock @RunWith(AndroidJUnit4::class) diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/AbstractFlashcardViewerKeyboardInputTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/AbstractFlashcardViewerKeyboardInputTest.kt index a69ecd815e97..e12efc7e54bc 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/AbstractFlashcardViewerKeyboardInputTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/AbstractFlashcardViewerKeyboardInputTest.kt @@ -17,11 +17,10 @@ package com.ichi2.anki import android.view.KeyEvent import androidx.test.ext.junit.runners.AndroidJUnit4 -import org.hamcrest.MatcherAssert.* +import org.hamcrest.MatcherAssert.assertThat import org.junit.Test import org.junit.runner.RunWith import timber.log.Timber -import java.lang.Exception @RunWith(AndroidJUnit4::class) class AbstractFlashcardViewerKeyboardInputTest : RobolectricTest() { diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/AbstractFlashcardViewerSoundRenderTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/AbstractFlashcardViewerSoundRenderTest.kt index 49e9b9ef90dd..ad9b5f368f79 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/AbstractFlashcardViewerSoundRenderTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/AbstractFlashcardViewerSoundRenderTest.kt @@ -26,7 +26,6 @@ import org.hamcrest.Matchers.hasSize import org.hamcrest.Matchers.nullValue import org.junit.Test import org.junit.runner.RunWith -import java.util.* /** Tests Sound Rendering - should be extracted from the GUI at some point */ @RustCleanup("doesn't work with V16") diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/AbstractFlashcardViewerTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/AbstractFlashcardViewerTest.kt index 35e912599628..f614ab6f62ef 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/AbstractFlashcardViewerTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/AbstractFlashcardViewerTest.kt @@ -25,18 +25,22 @@ import com.ichi2.anki.servicelayer.LanguageHintService import com.ichi2.libanki.StdModels import com.ichi2.testutils.AnkiAssert.assertDoesNotThrow import org.hamcrest.MatcherAssert.assertThat -import org.hamcrest.Matchers.* -import org.junit.Assert.* +import org.hamcrest.Matchers.containsString +import org.hamcrest.Matchers.equalTo +import org.hamcrest.Matchers.not +import org.hamcrest.Matchers.notNullValue +import org.hamcrest.Matchers.nullValue +import org.junit.Assert.assertEquals import org.junit.Test import org.junit.jupiter.params.ParameterizedTest import org.junit.jupiter.params.provider.Arguments import org.junit.jupiter.params.provider.MethodSource import org.junit.runner.RunWith -import org.mockito.Mockito.* +import org.mockito.Mockito.mock import org.robolectric.Robolectric import org.robolectric.android.controller.ActivityController import org.robolectric.shadows.ShadowToast -import java.util.* +import java.util.Locale import java.util.stream.Stream @RequiresApi(api = Build.VERSION_CODES.O) // getImeHintLocales, toLanguageTags, onRenderProcessGone, RenderProcessGoneDetail diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/ActivityStartupMetaTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/ActivityStartupMetaTest.kt index 78af632534b4..ae641615b630 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/ActivityStartupMetaTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/ActivityStartupMetaTest.kt @@ -25,9 +25,8 @@ import org.hamcrest.MatcherAssert import org.hamcrest.Matchers import org.junit.Test import org.junit.runner.RunWith -import java.util.* +import java.util.Arrays import java.util.stream.Collectors -import kotlin.Throws @RunWith(AndroidJUnit4::class) class ActivityStartupMetaTest : RobolectricTest() { diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/AnalyticsTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/AnalyticsTest.kt index 617a2249338d..0ec16fcd6a2e 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/AnalyticsTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/AnalyticsTest.kt @@ -13,12 +13,14 @@ * You should have received a copy of the GNU General Public License along with * this program. If not, see . */ +// TODO Tracked in https://github.com/ankidroid/Anki-Android/issues/5019 +@file:Suppress("DEPRECATION") package com.ichi2.anki import android.content.Context import android.content.SharedPreferences import android.content.res.Resources -import android.preference.* +import android.preference.PreferenceManager import com.brsanthu.googleanalytics.GoogleAnalytics import com.brsanthu.googleanalytics.GoogleAnalyticsBuilder import com.brsanthu.googleanalytics.request.ExceptionHit @@ -28,7 +30,14 @@ import org.junit.Assert.assertEquals import org.junit.Before import org.junit.Test import org.mockito.Mock -import org.mockito.Mockito.* +import org.mockito.Mockito.any +import org.mockito.Mockito.anyString +import org.mockito.Mockito.doReturn +import org.mockito.Mockito.mock +import org.mockito.Mockito.mockStatic +import org.mockito.Mockito.spy +import org.mockito.Mockito.validateMockitoUsage +import org.mockito.Mockito.verify import org.mockito.MockitoAnnotations import org.mockito.kotlin.whenever @@ -82,8 +91,7 @@ class AnalyticsTest { validateMockitoUsage() } - @Test // TODO Tracked in https://github.com/ankidroid/Anki-Android/issues/5019 - @Suppress("DEPRECATION") + @Test fun testSendException() { mockStatic(PreferenceManager::class.java).use { _ -> mockStatic(GoogleAnalytics::class.java).use { _ -> diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/BackupManagerIntegrationTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/BackupManagerIntegrationTest.kt index 61091f8848fe..5f4e791d3de1 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/BackupManagerIntegrationTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/BackupManagerIntegrationTest.kt @@ -21,8 +21,8 @@ import com.ichi2.async.CollectionTask.ImportReplace import com.ichi2.libanki.utils.TimeManager import com.ichi2.testutils.AnkiAssert import com.ichi2.testutils.BackupManagerTestUtilities -import org.hamcrest.MatcherAssert.* -import org.hamcrest.Matchers.* +import org.hamcrest.MatcherAssert.assertThat +import org.hamcrest.Matchers.equalTo import org.junit.Ignore import org.junit.Test import org.junit.runner.RunWith diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/BackupManagerSimpleTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/BackupManagerSimpleTest.kt index 02726ba15653..e7c811105b9b 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/BackupManagerSimpleTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/BackupManagerSimpleTest.kt @@ -18,7 +18,9 @@ package com.ichi2.anki import com.ichi2.anki.BackupManager.Companion.getLatestBackup import com.ichi2.testutils.MockTime -import org.hamcrest.CoreMatchers.* +import org.hamcrest.CoreMatchers.equalTo +import org.hamcrest.CoreMatchers.not +import org.hamcrest.CoreMatchers.nullValue import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.collection.ArrayMatching.arrayContainingInAnyOrder import org.hamcrest.io.FileMatchers.anExistingFile diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/BackupManagerTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/BackupManagerTest.kt index 1379cc0f946e..e615d609da49 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/BackupManagerTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/BackupManagerTest.kt @@ -23,7 +23,14 @@ import org.hamcrest.CoreMatchers.equalTo import org.hamcrest.MatcherAssert.assertThat import org.junit.Test import org.junit.runner.RunWith -import org.mockito.Mockito.* +import org.mockito.Mockito.anyInt +import org.mockito.Mockito.anyString +import org.mockito.Mockito.doNothing +import org.mockito.Mockito.doReturn +import org.mockito.Mockito.spy +import org.mockito.Mockito.times +import org.mockito.Mockito.verify +import org.mockito.Mockito.verifyNoMoreInteractions import org.mockito.kotlin.any import org.mockito.kotlin.whenever import java.io.File diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/CardBrowserCardCollectionTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/CardBrowserCardCollectionTest.kt index b588ce4031f3..0b30e35cab3a 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/CardBrowserCardCollectionTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/CardBrowserCardCollectionTest.kt @@ -17,8 +17,8 @@ package com.ichi2.anki import com.ichi2.anki.CardBrowser.CardCollection import com.ichi2.anki.CardBrowser.PositionAware -import org.hamcrest.MatcherAssert.* -import org.hamcrest.Matchers.* +import org.hamcrest.MatcherAssert.assertThat +import org.hamcrest.Matchers.equalTo import org.junit.Test class CardBrowserCardCollectionTest { diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/CardBrowserTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/CardBrowserTest.kt index 08bcd72ba834..a74e29e2663a 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/CardBrowserTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/CardBrowserTest.kt @@ -34,8 +34,15 @@ import com.ichi2.testutils.withNoWritePermission import com.ichi2.ui.FixedTextView import net.ankiweb.rsdroid.RustCleanup import org.hamcrest.MatcherAssert.assertThat -import org.hamcrest.Matchers.* -import org.junit.Assert.* +import org.hamcrest.Matchers.containsString +import org.hamcrest.Matchers.equalTo +import org.hamcrest.Matchers.greaterThan +import org.hamcrest.Matchers.hasItem +import org.hamcrest.Matchers.hasSize +import org.hamcrest.Matchers.not +import org.hamcrest.Matchers.nullValue +import org.junit.Assert.assertNotEquals +import org.junit.Assert.fail import org.junit.Ignore import org.junit.Test import org.junit.runner.RunWith diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/CardTemplatePreviewerTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/CardTemplatePreviewerTest.kt index 4e674f222f0d..380eb4a4e37e 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/CardTemplatePreviewerTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/CardTemplatePreviewerTest.kt @@ -23,7 +23,9 @@ import com.ichi2.anki.servicelayer.NoteService.getFieldsAsBundleForPreview import com.ichi2.libanki.Card import com.ichi2.libanki.Model import com.ichi2.utils.KotlinCleanup -import org.hamcrest.CoreMatchers.* +import org.hamcrest.CoreMatchers.containsString +import org.hamcrest.CoreMatchers.equalTo +import org.hamcrest.CoreMatchers.not import org.hamcrest.MatcherAssert.assertThat import org.junit.Assert import org.junit.Test diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/DeckPickerCheckDatabaseListenerTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/DeckPickerCheckDatabaseListenerTest.kt index 6c4fffe2f73f..ede2e07ecc8d 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/DeckPickerCheckDatabaseListenerTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/DeckPickerCheckDatabaseListenerTest.kt @@ -20,7 +20,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import com.ichi2.anki.DeckPicker.CheckDatabaseListener import com.ichi2.libanki.Collection.CheckDatabaseResult import com.ichi2.utils.KotlinCleanup -import org.hamcrest.MatcherAssert.* +import org.hamcrest.MatcherAssert.assertThat import org.junit.Test import org.junit.runner.RunWith import org.robolectric.Robolectric diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/DeckPickerFloatingActionMenuTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/DeckPickerFloatingActionMenuTest.kt index 029fba935a74..92ddc1bb05b6 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/DeckPickerFloatingActionMenuTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/DeckPickerFloatingActionMenuTest.kt @@ -32,7 +32,11 @@ import org.junit.runner.RunWith import org.mockito.Answers import org.mockito.InjectMocks import org.mockito.Mock -import org.mockito.kotlin.* +import org.mockito.kotlin.doReturn +import org.mockito.kotlin.mock +import org.mockito.kotlin.spy +import org.mockito.kotlin.times +import org.mockito.kotlin.verify import org.robolectric.Robolectric import org.robolectric.annotation.Config import kotlin.test.assertFalse diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/DeckPickerTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/DeckPickerTest.kt index 440d4f4f450e..baedef0cb3b7 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/DeckPickerTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/DeckPickerTest.kt @@ -13,27 +13,36 @@ import com.ichi2.anki.dialogs.DeckPickerConfirmDeleteDeckDialog import com.ichi2.annotations.NeedsTest import com.ichi2.libanki.Storage import com.ichi2.libanki.exception.UnknownDatabaseVersionException -import com.ichi2.testutils.* import com.ichi2.testutils.AnkiActivityUtils.getDialogFragment +import com.ichi2.testutils.BackendEmulatingOpenConflict +import com.ichi2.testutils.BackupManagerTestUtilities +import com.ichi2.testutils.DbUtils +import com.ichi2.testutils.assertThrowsSubclass +import com.ichi2.testutils.grantWritePermissions +import com.ichi2.testutils.revokeWritePermissions import com.ichi2.utils.KotlinCleanup import com.ichi2.utils.ResourceLoader import kotlinx.coroutines.ExperimentalCoroutinesApi import net.ankiweb.rsdroid.BackendFactory import org.apache.commons.exec.OS -import org.hamcrest.MatcherAssert.* -import org.hamcrest.Matchers.* +import org.hamcrest.MatcherAssert.assertThat +import org.hamcrest.Matchers.equalTo +import org.hamcrest.Matchers.instanceOf +import org.hamcrest.Matchers.`is` +import org.hamcrest.Matchers.notNullValue import org.junit.Assert.assertEquals import org.junit.Before import org.junit.Test import org.junit.runner.RunWith -import org.mockito.Mockito.* +import org.mockito.Mockito.mock +import org.mockito.Mockito.never +import org.mockito.Mockito.times +import org.mockito.Mockito.verify import org.mockito.kotlin.whenever import org.robolectric.ParameterizedRobolectricTestRunner import org.robolectric.Robolectric import org.robolectric.RuntimeEnvironment import java.io.File -import java.lang.Exception -import java.util.* import kotlin.test.assertNotNull import kotlin.test.assertNull diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/HandlerUtilsTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/HandlerUtilsTest.kt index caa52ab43f07..157f4b11f420 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/HandlerUtilsTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/HandlerUtilsTest.kt @@ -22,7 +22,8 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import com.ichi2.testutils.EmptyApplication import com.ichi2.utils.HandlerUtils import org.hamcrest.MatcherAssert.assertThat -import org.hamcrest.Matchers.* +import org.hamcrest.Matchers.closeTo +import org.hamcrest.Matchers.equalTo import org.junit.Test import org.junit.runner.RunWith import org.robolectric.annotation.Config diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/LocaleLinting.kt b/AnkiDroid/src/test/java/com/ichi2/anki/LocaleLinting.kt index 12e74ffb28cd..a3713223d325 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/LocaleLinting.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/LocaleLinting.kt @@ -31,7 +31,7 @@ import org.robolectric.ParameterizedRobolectricTestRunner.Parameters import org.robolectric.RuntimeEnvironment import org.robolectric.annotation.Config import timber.log.Timber -import java.util.* +import java.util.Locale /** * Linting to ensure that all locales have valid strings diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/NoteEditorTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/NoteEditorTest.kt index aa6038b218b8..01847c428286 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/NoteEditorTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/NoteEditorTest.kt @@ -35,11 +35,13 @@ import com.ichi2.libanki.Note import com.ichi2.testutils.AnkiAssert.assertDoesNotThrow import com.ichi2.utils.KotlinCleanup import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.test.runTest import net.ankiweb.rsdroid.BackendFactory import net.ankiweb.rsdroid.RustCleanup import org.hamcrest.MatcherAssert.assertThat -import org.hamcrest.Matchers.* +import org.hamcrest.Matchers.contains +import org.hamcrest.Matchers.equalTo +import org.hamcrest.Matchers.not +import org.hamcrest.Matchers.notNullValue import org.junit.Ignore import org.junit.Test import org.junit.runner.RunWith diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/PreviewerTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/PreviewerTest.kt index 5b2ad5c93c54..1cdb6358d920 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/PreviewerTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/PreviewerTest.kt @@ -21,7 +21,8 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import com.ichi2.libanki.Card import org.hamcrest.CoreMatchers.not import org.hamcrest.MatcherAssert.assertThat -import org.hamcrest.Matchers.* +import org.hamcrest.Matchers.containsString +import org.hamcrest.Matchers.equalTo import org.junit.Test import org.junit.runner.RunWith import org.robolectric.annotation.Config diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/ProductionCrashReportingTreeTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/ProductionCrashReportingTreeTest.kt index 802a2abea476..e33329bbfd1c 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/ProductionCrashReportingTreeTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/ProductionCrashReportingTreeTest.kt @@ -26,10 +26,11 @@ import org.junit.Assert import org.junit.Before import org.junit.Test import org.mockito.MockedStatic -import org.mockito.Mockito.* +import org.mockito.Mockito.any +import org.mockito.Mockito.anyString +import org.mockito.Mockito.mockStatic +import org.mockito.Mockito.`when` import timber.log.Timber -import java.lang.Exception -import java.lang.RuntimeException @SuppressLint("LogNotTimber", "LogConditional") @KotlinCleanup("fix 'when'") diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/ReadTextTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/ReadTextTest.kt index 4aa36a1ca3d6..1bfca8f829e6 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/ReadTextTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/ReadTextTest.kt @@ -21,14 +21,14 @@ import com.ichi2.anki.ReadText.closeForTests import com.ichi2.anki.ReadText.initializeTts import com.ichi2.anki.ReadText.releaseTts import com.ichi2.anki.ReadText.textToSpeech -import com.ichi2.libanki.Sound.SoundSide.* -import org.hamcrest.MatcherAssert.* -import org.hamcrest.Matchers.* +import com.ichi2.libanki.Sound.SoundSide.QUESTION +import org.hamcrest.MatcherAssert.assertThat +import org.hamcrest.Matchers.equalTo import org.junit.Before import org.junit.Test import org.junit.runner.RunWith -import org.mockito.Mockito.* -import org.robolectric.Shadows.* +import org.mockito.Mockito.mock +import org.robolectric.Shadows.shadowOf @RunWith(AndroidJUnit4::class) class ReadTextTest : RobolectricTest() { diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/ReviewerKeyboardInputTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/ReviewerKeyboardInputTest.kt index ca31fdb7582b..ce2aac1a6809 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/ReviewerKeyboardInputTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/ReviewerKeyboardInputTest.kt @@ -16,7 +16,21 @@ package com.ichi2.anki import android.view.KeyEvent -import android.view.KeyEvent.* +import android.view.KeyEvent.ACTION_DOWN +import android.view.KeyEvent.ACTION_UP +import android.view.KeyEvent.KEYCODE_1 +import android.view.KeyEvent.KEYCODE_2 +import android.view.KeyEvent.KEYCODE_3 +import android.view.KeyEvent.KEYCODE_4 +import android.view.KeyEvent.KEYCODE_BUTTON_A +import android.view.KeyEvent.KEYCODE_BUTTON_B +import android.view.KeyEvent.KEYCODE_BUTTON_X +import android.view.KeyEvent.KEYCODE_BUTTON_Y +import android.view.KeyEvent.KEYCODE_E +import android.view.KeyEvent.KEYCODE_F5 +import android.view.KeyEvent.KEYCODE_R +import android.view.KeyEvent.KEYCODE_SPACE +import android.view.KeyEvent.KEYCODE_Z import androidx.annotation.CheckResult import androidx.test.ext.junit.runners.AndroidJUnit4 import com.ibm.icu.impl.Assert @@ -42,7 +56,6 @@ import org.junit.runner.RunWith import org.mockito.ArgumentMatchers import org.mockito.Mockito import timber.log.Timber -import java.lang.Exception @KotlinCleanup("change `when` to whenever(); remove `protected` modifiers") @RunWith(AndroidJUnit4::class) diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/ReviewerNoParamTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/ReviewerNoParamTest.kt index 1643333eeec9..bb389b7c2527 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/ReviewerNoParamTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/ReviewerNoParamTest.kt @@ -35,7 +35,8 @@ import com.ichi2.libanki.DeckId import com.ichi2.themes.Theme import com.ichi2.themes.Themes.currentTheme import org.hamcrest.MatcherAssert.assertThat -import org.hamcrest.Matchers.* +import org.hamcrest.Matchers.equalTo +import org.hamcrest.Matchers.greaterThan import org.junit.Before import org.junit.Test import org.junit.runner.RunWith diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/ReviewerTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/ReviewerTest.kt index a335c7882a77..9553a2167149 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/ReviewerTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/ReviewerTest.kt @@ -42,8 +42,6 @@ import org.junit.Test import org.junit.runner.RunWith import org.robolectric.ParameterizedRobolectricTestRunner import timber.log.Timber -import java.lang.Exception -import java.util.* import kotlin.test.junit5.JUnit5Asserter.assertNotNull @RunWith(ParameterizedRobolectricTestRunner::class) diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/RobolectricTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/RobolectricTest.kt index 8f4f3adc05af..33f51a35a329 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/RobolectricTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/RobolectricTest.kt @@ -34,10 +34,21 @@ import com.afollestad.materialdialogs.actions.getActionButton import com.ichi2.anki.dialogs.DialogHandler import com.ichi2.anki.dialogs.utils.FragmentTestActivity import com.ichi2.anki.exception.ConfirmModSchemaException -import com.ichi2.async.* +import com.ichi2.async.ForegroundTaskManager +import com.ichi2.async.SingleTaskManager +import com.ichi2.async.TaskDelegateBase +import com.ichi2.async.TaskListener +import com.ichi2.async.TaskManager import com.ichi2.compat.customtabs.CustomTabActivityHelper -import com.ichi2.libanki.* +import com.ichi2.libanki.Card +import com.ichi2.libanki.ChangeManager import com.ichi2.libanki.Collection +import com.ichi2.libanki.CollectionGetter +import com.ichi2.libanki.Consts +import com.ichi2.libanki.Model +import com.ichi2.libanki.Models +import com.ichi2.libanki.Note +import com.ichi2.libanki.Storage import com.ichi2.libanki.backend.exception.DeckRenameException import com.ichi2.libanki.sched.Sched import com.ichi2.libanki.sched.SchedV2 @@ -49,13 +60,20 @@ import com.ichi2.utils.InMemorySQLiteOpenHelperFactory import com.ichi2.utils.JSONException import com.ichi2.utils.KotlinCleanup import kotlinx.coroutines.runBlocking -import kotlinx.coroutines.test.* +import kotlinx.coroutines.test.StandardTestDispatcher +import kotlinx.coroutines.test.TestResult +import kotlinx.coroutines.test.TestScope +import kotlinx.coroutines.test.UnconfinedTestDispatcher import net.ankiweb.rsdroid.BackendException import net.ankiweb.rsdroid.testing.RustBackendLoader import org.hamcrest.Matcher import org.hamcrest.MatcherAssert import org.hamcrest.Matchers -import org.junit.* +import org.junit.After +import org.junit.Assert +import org.junit.Assume +import org.junit.Before +import org.junit.Rule import org.robolectric.Robolectric import org.robolectric.Shadows import org.robolectric.android.controller.ActivityController diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/TemporaryModelTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/TemporaryModelTest.kt index 54a6c8d954da..d1acd6e271e4 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/TemporaryModelTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/TemporaryModelTest.kt @@ -17,7 +17,8 @@ package com.ichi2.anki import androidx.test.ext.junit.runners.AndroidJUnit4 -import com.ichi2.anki.TemporaryModel.ChangeType.* +import com.ichi2.anki.TemporaryModel.ChangeType.ADD +import com.ichi2.anki.TemporaryModel.ChangeType.DELETE import com.ichi2.libanki.Model import com.ichi2.utils.JSONObject import org.junit.Assert diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/TestUtils.kt b/AnkiDroid/src/test/java/com/ichi2/anki/TestUtils.kt index b20b6818d311..de354355ff60 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/TestUtils.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/TestUtils.kt @@ -18,8 +18,6 @@ package com.ichi2.anki import com.ichi2.utils.FileOperation.Companion.getFileContentsBytes import java.io.File -import java.lang.Exception -import java.lang.StringBuilder import java.security.MessageDigest open class TestUtils { diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/analytics/AnalyticsConstantsTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/analytics/AnalyticsConstantsTest.kt index 3224b5b7253f..f61c6936f908 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/analytics/AnalyticsConstantsTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/analytics/AnalyticsConstantsTest.kt @@ -14,15 +14,13 @@ package com.ichi2.anki.analytics import com.ichi2.utils.KotlinCleanup import org.hamcrest.MatcherAssert.assertThat -import org.hamcrest.Matchers.* +import org.hamcrest.Matchers.equalTo +import org.hamcrest.Matchers.not import org.junit.Assert import org.junit.Test import org.junit.experimental.runners.Enclosed import org.junit.runner.RunWith import org.junit.runners.Parameterized -import java.lang.RuntimeException -import java.util.* -import kotlin.Throws import kotlin.reflect.full.memberProperties import kotlin.reflect.jvm.javaField diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/cardviewer/CardTemplateTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/cardviewer/CardTemplateTest.kt index 194359c60577..e1613e4c4606 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/cardviewer/CardTemplateTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/cardviewer/CardTemplateTest.kt @@ -18,7 +18,7 @@ package com.ichi2.anki.cardviewer import android.annotation.SuppressLint import com.ichi2.testutils.AnkiAssert.assertDoesNotThrow import org.hamcrest.MatcherAssert.assertThat -import org.hamcrest.Matchers.* +import org.hamcrest.Matchers.equalTo import org.intellij.lang.annotations.Language import org.junit.Test diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/cardviewer/OnRenderProcessGoneDelegateTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/cardviewer/OnRenderProcessGoneDelegateTest.kt index 6ec11f889c9d..96cb4d364354 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/cardviewer/OnRenderProcessGoneDelegateTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/cardviewer/OnRenderProcessGoneDelegateTest.kt @@ -29,7 +29,13 @@ import com.ichi2.utils.StrictMock.Companion.strictMock import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.Matchers.equalTo import org.junit.Test -import org.mockito.Mockito.* +import org.mockito.Mockito.doNothing +import org.mockito.Mockito.doReturn +import org.mockito.Mockito.mock +import org.mockito.Mockito.never +import org.mockito.Mockito.spy +import org.mockito.Mockito.times +import org.mockito.Mockito.verify import org.mockito.kotlin.whenever import java.util.concurrent.locks.Lock diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/dialogs/CreateDeckDialogTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/dialogs/CreateDeckDialogTest.kt index 6538562fa5b8..20d9a138effd 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/dialogs/CreateDeckDialogTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/dialogs/CreateDeckDialogTest.kt @@ -32,7 +32,7 @@ import com.ichi2.libanki.DeckId import com.ichi2.libanki.backend.exception.DeckRenameException import kotlinx.coroutines.ExperimentalCoroutinesApi import org.hamcrest.CoreMatchers.equalTo -import org.hamcrest.MatcherAssert.* +import org.hamcrest.MatcherAssert.assertThat import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/dialogs/CustomStudyDialogTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/dialogs/CustomStudyDialogTest.kt index 28479309d884..6d0ff4340820 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/dialogs/CustomStudyDialogTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/dialogs/CustomStudyDialogTest.kt @@ -15,7 +15,6 @@ */ package com.ichi2.anki.dialogs -import androidx.core.view.get import androidx.fragment.app.testing.FragmentScenario import androidx.lifecycle.Lifecycle import androidx.test.ext.junit.runners.AndroidJUnit4 diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/dialogs/RecursivePictureMenuUtilTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/dialogs/RecursivePictureMenuUtilTest.kt index 56f9fab19b5e..fa70d464b995 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/dialogs/RecursivePictureMenuUtilTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/dialogs/RecursivePictureMenuUtilTest.kt @@ -22,7 +22,6 @@ import com.ichi2.anki.RobolectricTest import com.ichi2.anki.analytics.UsageAnalytics import com.ichi2.anki.dialogs.utils.FragmentTestActivity import com.ichi2.anki.dialogs.utils.RecursivePictureMenuUtil -import java.util.ArrayList open class RecursivePictureMenuUtilTest : RobolectricTest() { var activity: FragmentTestActivity? = null diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/dialogs/tags/TagsDialogTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/dialogs/tags/TagsDialogTest.kt index ea76294ccf45..f3e44fc5e5e0 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/dialogs/tags/TagsDialogTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/dialogs/tags/TagsDialogTest.kt @@ -41,7 +41,6 @@ import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mockito import org.mockito.kotlin.whenever -import java.util.* import java.util.concurrent.atomic.AtomicInteger import java.util.concurrent.atomic.AtomicReference diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/dialogs/tags/TagsListTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/dialogs/tags/TagsListTest.kt index cdbbfac41512..ccfbe32a7ca6 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/dialogs/tags/TagsListTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/dialogs/tags/TagsListTest.kt @@ -17,13 +17,16 @@ package com.ichi2.anki.dialogs.tags import com.ichi2.testutils.assertFalse import com.ichi2.utils.KotlinCleanup -import org.junit.Assert.* +import org.junit.Assert.assertEquals +import org.junit.Assert.assertNotEquals +import org.junit.Assert.assertTrue import org.junit.Before import org.junit.Ignore import org.junit.Test import org.mockito.ArgumentMatchers import org.mockito.Mockito -import java.util.* +import java.util.Arrays +import java.util.Collections // suppressed to have a symmetry in all tests, Arrays.asList(...) should be all you need. @KotlinCleanup("Use kotlin functions instead of Arrays.asList") diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/dialogs/utils/RecursivePictureMenuUtil.kt b/AnkiDroid/src/test/java/com/ichi2/anki/dialogs/utils/RecursivePictureMenuUtil.kt index a7876a1e772d..e1475aaccc5a 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/dialogs/utils/RecursivePictureMenuUtil.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/dialogs/utils/RecursivePictureMenuUtil.kt @@ -20,7 +20,7 @@ import androidx.recyclerview.widget.RecyclerView import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.list.getRecyclerView import com.ichi2.anki.dialogs.RecursivePictureMenu -import java.util.* +import java.util.Objects class RecursivePictureMenuUtil { companion object { diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/jsaddons/AddonModelTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/jsaddons/AddonModelTest.kt index c250dbb35605..65249c396502 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/jsaddons/AddonModelTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/jsaddons/AddonModelTest.kt @@ -25,7 +25,9 @@ import com.ichi2.anki.AnkiSerialization import com.ichi2.anki.RobolectricTest import com.ichi2.anki.jsaddons.AddonsConst.REVIEWER_ADDON import com.ichi2.utils.FileOperation -import junit.framework.TestCase.* +import junit.framework.TestCase.assertEquals +import junit.framework.TestCase.assertFalse +import junit.framework.TestCase.assertTrue import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.core.StringEndsWith.endsWith import org.junit.Before @@ -34,7 +36,6 @@ import org.junit.runner.RunWith import org.robolectric.Shadows.shadowOf import java.io.File import java.io.IOException -import kotlin.collections.HashSet @RunWith(AndroidJUnit4::class) class AddonModelTest : RobolectricTest() { diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/model/DirectoryTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/model/DirectoryTest.kt index bd517e5a5ba0..2e6d04b87aa2 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/model/DirectoryTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/model/DirectoryTest.kt @@ -21,7 +21,9 @@ import com.ichi2.testutils.HamcrestUtils.containsInAnyOrder import com.ichi2.testutils.assertThrows import com.ichi2.testutils.withTempFile import org.acra.util.IOUtils -import org.hamcrest.CoreMatchers.* +import org.hamcrest.CoreMatchers.equalTo +import org.hamcrest.CoreMatchers.not +import org.hamcrest.CoreMatchers.nullValue import org.hamcrest.MatcherAssert import org.junit.Test import java.io.File diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/model/DiskFileTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/model/DiskFileTest.kt index 6711edcd3195..9b67ec3a31c4 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/model/DiskFileTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/model/DiskFileTest.kt @@ -18,7 +18,9 @@ package com.ichi2.anki.model import com.ichi2.testutils.createTransientDirectory import com.ichi2.testutils.createTransientFile -import org.hamcrest.CoreMatchers.* +import org.hamcrest.CoreMatchers.equalTo +import org.hamcrest.CoreMatchers.not +import org.hamcrest.CoreMatchers.nullValue import org.hamcrest.MatcherAssert.assertThat import org.junit.Test import java.io.File diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/model/RelativeFilePathTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/model/RelativeFilePathTest.kt index 039b764ca007..603fc8af8693 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/model/RelativeFilePathTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/model/RelativeFilePathTest.kt @@ -19,7 +19,9 @@ package com.ichi2.anki.model import com.ichi2.testutils.addTempFile import com.ichi2.testutils.createTransientDirectory import org.hamcrest.MatcherAssert.assertThat -import org.hamcrest.Matchers.* +import org.hamcrest.Matchers.equalTo +import org.hamcrest.Matchers.hasSize +import org.hamcrest.Matchers.nullValue import org.junit.Test import java.io.File diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/multimediacard/AudioPlayerTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/multimediacard/AudioPlayerTest.kt index 1955a2753311..c1db9afdf3c3 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/multimediacard/AudioPlayerTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/multimediacard/AudioPlayerTest.kt @@ -25,12 +25,11 @@ import org.junit.rules.TemporaryFolder import org.junit.runner.RunWith import org.mockito.Mockito.times import org.mockito.Mockito.verify -import org.mockito.kotlin.* +import org.mockito.kotlin.mock import org.robolectric.shadows.ShadowMediaPlayer import org.robolectric.shadows.util.DataSource import java.io.File import java.io.IOException -import kotlin.Throws @RunWith(AndroidJUnit4::class) class AudioPlayerTest : RobolectricTest() { diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/multimediacard/AudioRecorderTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/multimediacard/AudioRecorderTest.kt index b04a8eaf8158..cbf3ce19a1e1 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/multimediacard/AudioRecorderTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/multimediacard/AudioRecorderTest.kt @@ -20,7 +20,8 @@ import org.junit.Before import org.junit.Test import org.mockito.InjectMocks import org.mockito.Mock -import org.mockito.Mockito.* +import org.mockito.Mockito.times +import org.mockito.Mockito.verify import org.mockito.MockitoAnnotations class AudioRecorderTest { diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/multimediacard/fields/BasicImageFieldControllerTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/multimediacard/fields/BasicImageFieldControllerTest.kt index e8c762f5e6a3..131ade81f202 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/multimediacard/fields/BasicImageFieldControllerTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/multimediacard/fields/BasicImageFieldControllerTest.kt @@ -26,7 +26,8 @@ import com.ichi2.anki.multimediacard.activity.MultimediaEditFieldActivityTestBas import com.ichi2.testutils.AnkiAssert import com.ichi2.testutils.MockContentResolver import org.hamcrest.MatcherAssert.assertThat -import org.hamcrest.Matchers.* +import org.hamcrest.Matchers.equalTo +import org.hamcrest.Matchers.instanceOf import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mockito.mock diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/reviewer/ActionButtonStatusTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/reviewer/ActionButtonStatusTest.kt index c3f959a89f67..e37ec4f61b14 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/reviewer/ActionButtonStatusTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/reviewer/ActionButtonStatusTest.kt @@ -23,10 +23,10 @@ import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.Matchers.containsInAnyOrder import org.junit.Test import org.junit.runner.RunWith -import org.mockito.Mockito.* +import org.mockito.Mockito.any +import org.mockito.Mockito.mock import org.mockito.invocation.InvocationOnMock import org.mockito.kotlin.whenever -import java.util.* @RunWith(AndroidJUnit4::class) class ActionButtonStatusTest : RobolectricTest() { diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/reviewer/AnswerButtonsTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/reviewer/AnswerButtonsTest.kt index 22a294dd9b88..77cd808c64c9 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/reviewer/AnswerButtonsTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/reviewer/AnswerButtonsTest.kt @@ -17,9 +17,12 @@ package com.ichi2.anki.reviewer import com.ichi2.anki.cardviewer.ViewerCommand -import com.ichi2.anki.reviewer.AnswerButtons.* +import com.ichi2.anki.reviewer.AnswerButtons.AGAIN import com.ichi2.anki.reviewer.AnswerButtons.Companion.canAnswerEasy import com.ichi2.anki.reviewer.AnswerButtons.Companion.canAnswerHard +import com.ichi2.anki.reviewer.AnswerButtons.EASY +import com.ichi2.anki.reviewer.AnswerButtons.GOOD +import com.ichi2.anki.reviewer.AnswerButtons.HARD import org.hamcrest.CoreMatchers.equalTo import org.hamcrest.MatcherAssert.assertThat import org.junit.Test diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/reviewer/AnswerTimerTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/reviewer/AnswerTimerTest.kt index ac6ea32310c9..ce4b069cb38a 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/reviewer/AnswerTimerTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/reviewer/AnswerTimerTest.kt @@ -29,7 +29,13 @@ import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mockito -import org.mockito.kotlin.* +import org.mockito.kotlin.atLeast +import org.mockito.kotlin.doReturn +import org.mockito.kotlin.mock +import org.mockito.kotlin.never +import org.mockito.kotlin.reset +import org.mockito.kotlin.spy +import org.mockito.kotlin.verify import org.robolectric.annotation.Config @RunWith(AndroidJUnit4::class) diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/reviewer/AutomaticAnswerActionTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/reviewer/AutomaticAnswerActionTest.kt index 0df26ff86254..aaab3e219cc6 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/reviewer/AutomaticAnswerActionTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/reviewer/AutomaticAnswerActionTest.kt @@ -18,7 +18,11 @@ package com.ichi2.anki.reviewer import com.ichi2.anki.Reviewer import com.ichi2.anki.cardviewer.ViewerCommand -import com.ichi2.anki.reviewer.AutomaticAnswerAction.* +import com.ichi2.anki.reviewer.AutomaticAnswerAction.ANSWER_AGAIN +import com.ichi2.anki.reviewer.AutomaticAnswerAction.ANSWER_EASY +import com.ichi2.anki.reviewer.AutomaticAnswerAction.ANSWER_GOOD +import com.ichi2.anki.reviewer.AutomaticAnswerAction.ANSWER_HARD +import com.ichi2.anki.reviewer.AutomaticAnswerAction.BURY_CARD import com.ichi2.anki.reviewer.AutomaticAnswerAction.Companion.fromPreferenceValue import org.hamcrest.CoreMatchers.equalTo import org.hamcrest.MatcherAssert.assertThat diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/reviewer/KeyboardShortcutIntegrationTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/reviewer/KeyboardShortcutIntegrationTest.kt index 22f1d59267b5..4a25e81c811b 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/reviewer/KeyboardShortcutIntegrationTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/reviewer/KeyboardShortcutIntegrationTest.kt @@ -33,7 +33,12 @@ import org.hamcrest.Matchers.equalTo import org.junit.Before import org.junit.Test import org.junit.runner.RunWith -import org.mockito.Mockito.* +import org.mockito.Mockito.anyInt +import org.mockito.Mockito.anyString +import org.mockito.Mockito.mock +import org.mockito.Mockito.times +import org.mockito.Mockito.verify +import org.mockito.Mockito.verifyNoMoreInteractions import org.mockito.kotlin.any import org.mockito.kotlin.whenever import org.robolectric.Shadows diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/ScopedStorageAnkiDroidTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/ScopedStorageAnkiDroidTest.kt index 7960212b783e..8306e41097de 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/ScopedStorageAnkiDroidTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/ScopedStorageAnkiDroidTest.kt @@ -26,7 +26,9 @@ import com.ichi2.testutils.ShadowStatFs import com.ichi2.testutils.TestException import com.ichi2.testutils.assertThrows import com.ichi2.testutils.createTransientDirectory -import io.mockk.* +import io.mockk.every +import io.mockk.mockkObject +import io.mockk.slot import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.Matchers.equalTo import org.hamcrest.Matchers.not diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/MigrateEssentialFilesTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/MigrateEssentialFilesTest.kt index 0a0fbf9b2c65..226b326f90ea 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/MigrateEssentialFilesTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/MigrateEssentialFilesTest.kt @@ -34,7 +34,11 @@ import com.ichi2.testutils.CollectionDBCorruption import com.ichi2.testutils.TestException import com.ichi2.testutils.assertThrows import com.ichi2.testutils.createTransientDirectory -import org.hamcrest.CoreMatchers.* +import org.hamcrest.CoreMatchers.containsString +import org.hamcrest.CoreMatchers.equalTo +import org.hamcrest.CoreMatchers.not +import org.hamcrest.CoreMatchers.notNullValue +import org.hamcrest.CoreMatchers.startsWith import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.io.FileMatchers import org.junit.After @@ -42,7 +46,10 @@ import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mockito -import org.mockito.kotlin.* +import org.mockito.kotlin.KStubbing +import org.mockito.kotlin.any +import org.mockito.kotlin.spy +import org.mockito.kotlin.whenever import java.io.File import kotlin.io.path.Path import kotlin.io.path.pathString diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/MigrateUserDataJvmTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/MigrateUserDataJvmTest.kt index cb1e56596691..975f3df4fbf3 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/MigrateUserDataJvmTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/MigrateUserDataJvmTest.kt @@ -19,10 +19,14 @@ package com.ichi2.anki.servicelayer.scopedstorage import android.content.SharedPreferences import com.ichi2.anki.servicelayer.ScopedStorageService import com.ichi2.anki.servicelayer.scopedstorage.MigrateUserData.MissingDirectoryException -import com.ichi2.anki.servicelayer.scopedstorage.MigrateUserDataJvmTest.SourceType.* +import com.ichi2.anki.servicelayer.scopedstorage.MigrateUserDataJvmTest.SourceType.MISSING_DIR +import com.ichi2.anki.servicelayer.scopedstorage.MigrateUserDataJvmTest.SourceType.NOT_SET +import com.ichi2.anki.servicelayer.scopedstorage.MigrateUserDataJvmTest.SourceType.VALID_DIR import com.ichi2.testutils.assertThrows import com.ichi2.testutils.createTransientDirectory -import org.hamcrest.CoreMatchers.* +import org.hamcrest.CoreMatchers.equalTo +import org.hamcrest.CoreMatchers.notNullValue +import org.hamcrest.CoreMatchers.nullValue import org.hamcrest.MatcherAssert.assertThat import org.junit.BeforeClass import org.junit.Test diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/MoveConflictedFileTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/MoveConflictedFileTest.kt index 71ed14fb63f5..ba2a85cd2c3d 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/MoveConflictedFileTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/MoveConflictedFileTest.kt @@ -22,16 +22,29 @@ import com.ichi2.anki.model.DiskFile import com.ichi2.anki.model.RelativeFilePath import com.ichi2.anki.servicelayer.scopedstorage.MigrateUserData.FileConflictResolutionFailedException import com.ichi2.compat.Test21And26 -import com.ichi2.testutils.* -import org.hamcrest.CoreMatchers.* +import com.ichi2.testutils.TestException +import com.ichi2.testutils.addTempFile +import com.ichi2.testutils.assertThrows +import com.ichi2.testutils.assertThrowsSubclass +import com.ichi2.testutils.createTransientDirectory +import com.ichi2.testutils.createTransientFile +import org.hamcrest.CoreMatchers.containsString +import org.hamcrest.CoreMatchers.endsWith +import org.hamcrest.CoreMatchers.equalTo +import org.hamcrest.CoreMatchers.instanceOf +import org.hamcrest.CoreMatchers.not +import org.hamcrest.CoreMatchers.startsWith import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.Matchers.hasSize import org.hamcrest.io.FileMatchers import org.junit.Test -import org.mockito.kotlin.* +import org.mockito.kotlin.any +import org.mockito.kotlin.doAnswer +import org.mockito.kotlin.doThrow +import org.mockito.kotlin.spy +import org.mockito.kotlin.whenever import java.io.File import java.io.IOException -import java.lang.IllegalStateException class MoveConflictedFileTest : Test21And26(), OperationTest { diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/MoveDirectoryContentTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/MoveDirectoryContentTest.kt index afc10986c279..77325ddf6e45 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/MoveDirectoryContentTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/MoveDirectoryContentTest.kt @@ -20,9 +20,17 @@ import android.annotation.SuppressLint import com.ichi2.anki.model.Directory import com.ichi2.anki.servicelayer.scopedstorage.MigrateUserData.Operation import com.ichi2.compat.Test21And26 -import com.ichi2.testutils.* +import com.ichi2.testutils.TestException +import com.ichi2.testutils.addTempFile +import com.ichi2.testutils.assertThrows +import com.ichi2.testutils.assertThrowsSubclass +import com.ichi2.testutils.createTransientDirectory +import com.ichi2.testutils.createTransientFile +import com.ichi2.testutils.withTempFile import org.hamcrest.MatcherAssert.assertThat -import org.hamcrest.Matchers.* +import org.hamcrest.Matchers.equalTo +import org.hamcrest.Matchers.hasSize +import org.hamcrest.Matchers.instanceOf import org.junit.Test import org.mockito.kotlin.any import org.mockito.kotlin.doAnswer diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/MoveDirectoryTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/MoveDirectoryTest.kt index e4abfebc8c68..fac3717c206f 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/MoveDirectoryTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/MoveDirectoryTest.kt @@ -19,11 +19,17 @@ package com.ichi2.anki.servicelayer.scopedstorage import com.ichi2.anki.model.Directory import com.ichi2.anki.servicelayer.scopedstorage.MigrateUserData.Operation import com.ichi2.compat.Test21And26 -import com.ichi2.testutils.* +import com.ichi2.testutils.TestException +import com.ichi2.testutils.addTempFile +import com.ichi2.testutils.createTransientDirectory +import com.ichi2.testutils.exists +import com.ichi2.testutils.withTempFile import org.hamcrest.CoreMatchers.equalTo import org.hamcrest.CoreMatchers.instanceOf import org.hamcrest.MatcherAssert.assertThat -import org.hamcrest.Matchers.* +import org.hamcrest.Matchers.containsString +import org.hamcrest.Matchers.empty +import org.hamcrest.Matchers.hasSize import org.junit.Before import org.junit.Test import org.mockito.kotlin.any diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/MoveFileTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/MoveFileTest.kt index cd4b5aa83bea..c105bded5830 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/MoveFileTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/MoveFileTest.kt @@ -18,10 +18,19 @@ package com.ichi2.anki.servicelayer.scopedstorage import com.ichi2.anki.RobolectricTest import com.ichi2.anki.model.DiskFile -import com.ichi2.anki.servicelayer.scopedstorage.MigrateUserData.* +import com.ichi2.anki.servicelayer.scopedstorage.MigrateUserData.EquivalentFileException +import com.ichi2.anki.servicelayer.scopedstorage.MigrateUserData.FileConflictException +import com.ichi2.anki.servicelayer.scopedstorage.MigrateUserData.FileDirectoryConflictException +import com.ichi2.anki.servicelayer.scopedstorage.MigrateUserData.MissingDirectoryException import com.ichi2.anki.servicelayer.scopedstorage.MigrateUserData.MissingDirectoryException.MissingFile -import com.ichi2.testutils.* -import org.hamcrest.CoreMatchers.* +import com.ichi2.testutils.FileUtil +import com.ichi2.testutils.TestException +import com.ichi2.testutils.assertThrows +import com.ichi2.testutils.createTransientDirectory +import com.ichi2.testutils.length +import org.hamcrest.CoreMatchers.containsString +import org.hamcrest.CoreMatchers.equalTo +import org.hamcrest.CoreMatchers.instanceOf import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.Matchers import org.hamcrest.Matchers.hasSize diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/ScopedStorageMigrationIntegrationTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/ScopedStorageMigrationIntegrationTest.kt index 1b44ef1fbc23..cf36644d034b 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/ScopedStorageMigrationIntegrationTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/ScopedStorageMigrationIntegrationTest.kt @@ -19,13 +19,26 @@ package com.ichi2.anki.servicelayer.scopedstorage import androidx.test.ext.junit.runners.AndroidJUnit4 import com.ichi2.anki.RobolectricTest import com.ichi2.anki.model.Directory -import com.ichi2.anki.servicelayer.scopedstorage.MigrateUserData.* +import com.ichi2.anki.servicelayer.scopedstorage.MigrateUserData.DirectoryNotEmptyException +import com.ichi2.anki.servicelayer.scopedstorage.MigrateUserData.Executor +import com.ichi2.anki.servicelayer.scopedstorage.MigrateUserData.MigrationContext +import com.ichi2.anki.servicelayer.scopedstorage.MigrateUserData.Operation +import com.ichi2.anki.servicelayer.scopedstorage.MigrateUserData.SingleRetryDecorator import com.ichi2.async.ProgressSenderAndCancelListener import com.ichi2.exceptions.AggregateException -import com.ichi2.testutils.* +import com.ichi2.testutils.ShadowStatFs +import com.ichi2.testutils.TestException +import com.ichi2.testutils.addTempDirectory +import com.ichi2.testutils.addTempFile +import com.ichi2.testutils.assertThrowsSubclass +import com.ichi2.testutils.createTransientDirectory import net.ankiweb.rsdroid.BackendFactory import org.hamcrest.MatcherAssert.assertThat -import org.hamcrest.Matchers.* +import org.hamcrest.Matchers.anyOf +import org.hamcrest.Matchers.endsWith +import org.hamcrest.Matchers.equalTo +import org.hamcrest.Matchers.instanceOf +import org.hamcrest.Matchers.not import org.hamcrest.io.FileMatchers.anExistingDirectory import org.junit.After import org.junit.Test diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/Utils.kt b/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/Utils.kt index 9d3e1353674e..01e92635e1e1 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/Utils.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/servicelayer/scopedstorage/Utils.kt @@ -22,8 +22,8 @@ import com.ichi2.anki.model.DiskFile import com.ichi2.anki.servicelayer.ScopedStorageService import com.ichi2.libanki.Media import org.acra.util.IOUtils -import org.hamcrest.CoreMatchers.* -import org.hamcrest.MatcherAssert.* +import org.hamcrest.CoreMatchers.equalTo +import org.hamcrest.MatcherAssert.assertThat import java.io.File /** Adds a media file to collection.media which [Media] is not aware of */ diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/services/NoteServiceTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/services/NoteServiceTest.kt index 8814da1a708a..d99c0a432d90 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/services/NoteServiceTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/services/NoteServiceTest.kt @@ -27,10 +27,13 @@ import com.ichi2.libanki.Model import com.ichi2.libanki.Note import com.ichi2.testutils.createTransientFile import com.ichi2.utils.KotlinCleanup -import org.hamcrest.CoreMatchers.* +import org.hamcrest.CoreMatchers.equalTo +import org.hamcrest.CoreMatchers.not import org.hamcrest.MatcherAssert.assertThat -import org.hamcrest.io.FileMatchers.* -import org.junit.Assert.* +import org.hamcrest.io.FileMatchers.aFileWithAbsolutePath +import org.hamcrest.io.FileMatchers.anExistingFile +import org.junit.Assert.assertEquals +import org.junit.Assert.assertThrows import org.junit.Before import org.junit.Rule import org.junit.Test diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/services/ReminderServiceTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/services/ReminderServiceTest.kt index b19fcee47338..949c83f3e847 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/services/ReminderServiceTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/services/ReminderServiceTest.kt @@ -21,11 +21,13 @@ import android.content.Intent import androidx.test.ext.junit.runners.AndroidJUnit4 import com.ichi2.anki.CollectionHelper import com.ichi2.anki.RobolectricTest -import org.hamcrest.MatcherAssert.* +import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.Matchers.equalTo import org.junit.Test import org.junit.runner.RunWith -import org.mockito.Mockito.* +import org.mockito.Mockito.spy +import org.mockito.Mockito.times +import org.mockito.Mockito.verify import org.mockito.kotlin.whenever import org.robolectric.Shadows import org.robolectric.shadows.ShadowNotificationManager diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/stats/OverviewStatsBuilderTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/stats/OverviewStatsBuilderTest.kt index cf3ea4fe9ad0..a597ace251ee 100644 --- a/AnkiDroid/src/test/java/com/ichi2/anki/stats/OverviewStatsBuilderTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/anki/stats/OverviewStatsBuilderTest.kt @@ -21,7 +21,7 @@ import com.ichi2.anki.RobolectricTest import com.ichi2.anki.stats.OverviewStatsBuilder.OverviewStats.AnswerButtonsOverview import com.ichi2.libanki.stats.Stats import com.ichi2.utils.KotlinCleanup -import junit.framework.TestCase.* +import junit.framework.TestCase.assertEquals import org.junit.Test import org.junit.runner.RunWith import org.robolectric.annotation.Config diff --git a/AnkiDroid/src/test/java/com/ichi2/compat/CompatCopyFileTest.kt b/AnkiDroid/src/test/java/com/ichi2/compat/CompatCopyFileTest.kt index f21e9d95a456..f759a6dbc806 100644 --- a/AnkiDroid/src/test/java/com/ichi2/compat/CompatCopyFileTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/compat/CompatCopyFileTest.kt @@ -20,7 +20,11 @@ import com.ichi2.anki.TestUtils import com.ichi2.utils.FileOperation.Companion.getFileResource import org.junit.Assert import org.junit.Test -import java.io.* +import java.io.File +import java.io.FileInputStream +import java.io.FileNotFoundException +import java.io.FileOutputStream +import java.io.IOException import java.net.URL class CompatCopyFileTest : Test21And26() { diff --git a/AnkiDroid/src/test/java/com/ichi2/compat/CompatDeleteFileTest.kt b/AnkiDroid/src/test/java/com/ichi2/compat/CompatDeleteFileTest.kt index 4767d01f6bb3..2cd3b5c8d0cc 100644 --- a/AnkiDroid/src/test/java/com/ichi2/compat/CompatDeleteFileTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/compat/CompatDeleteFileTest.kt @@ -16,8 +16,12 @@ package com.ichi2.compat -import com.ichi2.testutils.* import com.ichi2.testutils.AnkiAssert.assertDoesNotThrow +import com.ichi2.testutils.assertThrows +import com.ichi2.testutils.assertThrowsSubclass +import com.ichi2.testutils.createTransientDirectory +import com.ichi2.testutils.createTransientFile +import com.ichi2.testutils.withTempFile import org.hamcrest.CoreMatchers.equalTo import org.hamcrest.MatcherAssert.assertThat import org.junit.Test diff --git a/AnkiDroid/src/test/java/com/ichi2/compat/CompatDirectoryContentTest.kt b/AnkiDroid/src/test/java/com/ichi2/compat/CompatDirectoryContentTest.kt index aa372448b618..e48aee1b59d7 100644 --- a/AnkiDroid/src/test/java/com/ichi2/compat/CompatDirectoryContentTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/compat/CompatDirectoryContentTest.kt @@ -17,8 +17,14 @@ package com.ichi2.compat import android.annotation.SuppressLint -import com.ichi2.testutils.* -import org.hamcrest.CoreMatchers.* +import com.ichi2.testutils.assertThrows +import com.ichi2.testutils.assertThrowsSubclass +import com.ichi2.testutils.createTransientDirectory +import com.ichi2.testutils.createTransientFile +import com.ichi2.testutils.withTempFile +import org.hamcrest.CoreMatchers.equalTo +import org.hamcrest.CoreMatchers.instanceOf +import org.hamcrest.CoreMatchers.not import org.hamcrest.MatcherAssert.assertThat import org.junit.Test import java.io.FileNotFoundException diff --git a/AnkiDroid/src/test/java/com/ichi2/compat/CompatHasFilesTest.kt b/AnkiDroid/src/test/java/com/ichi2/compat/CompatHasFilesTest.kt index cb59c0bdfc05..9e28e464d822 100644 --- a/AnkiDroid/src/test/java/com/ichi2/compat/CompatHasFilesTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/compat/CompatHasFilesTest.kt @@ -17,7 +17,11 @@ package com.ichi2.compat import android.os.Build -import com.ichi2.testutils.* +import com.ichi2.testutils.assertThrows +import com.ichi2.testutils.assertThrowsSubclass +import com.ichi2.testutils.createTransientDirectory +import com.ichi2.testutils.createTransientFile +import com.ichi2.testutils.withTempFile import org.hamcrest.CoreMatchers import org.hamcrest.CoreMatchers.equalTo import org.hamcrest.MatcherAssert.assertThat diff --git a/AnkiDroid/src/test/java/com/ichi2/compat/Test21And26.kt b/AnkiDroid/src/test/java/com/ichi2/compat/Test21And26.kt index e06d0634b235..b970ef8cb6f3 100644 --- a/AnkiDroid/src/test/java/com/ichi2/compat/Test21And26.kt +++ b/AnkiDroid/src/test/java/com/ichi2/compat/Test21And26.kt @@ -20,13 +20,19 @@ import android.annotation.SuppressLint import com.ichi2.anki.model.Directory import com.ichi2.testutils.assertThrowsSubclass import com.ichi2.testutils.createTransientDirectory -import io.mockk.* +import io.mockk.every +import io.mockk.mockkObject +import io.mockk.unmockkObject import org.junit.AfterClass import org.junit.Before import org.junit.BeforeClass import org.junit.runner.RunWith import org.junit.runners.Parameterized -import org.mockito.kotlin.* +import org.mockito.kotlin.doReturn +import org.mockito.kotlin.doThrow +import org.mockito.kotlin.eq +import org.mockito.kotlin.spy +import org.mockito.kotlin.whenever import java.io.File import java.io.IOException diff --git a/AnkiDroid/src/test/java/com/ichi2/libanki/AnkiPackageExporterTest.kt b/AnkiDroid/src/test/java/com/ichi2/libanki/AnkiPackageExporterTest.kt index 5bc5d90c3b38..f584ed73613b 100644 --- a/AnkiDroid/src/test/java/com/ichi2/libanki/AnkiPackageExporterTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/libanki/AnkiPackageExporterTest.kt @@ -23,15 +23,17 @@ import com.ichi2.utils.CreateTempDir.Companion.tempDir import com.ichi2.utils.FileOperation.Companion.getFileContents import com.ichi2.utils.KotlinCleanup import com.ichi2.utils.UnzipFile.Companion.unzip -import org.hamcrest.MatcherAssert.* -import org.hamcrest.Matchers.* +import org.hamcrest.MatcherAssert.assertThat +import org.hamcrest.Matchers.contains +import org.hamcrest.Matchers.containsInAnyOrder +import org.hamcrest.Matchers.hasSize import org.junit.Assert import org.junit.Test import org.junit.runner.RunWith import java.io.File import java.io.IOException import java.io.PrintWriter -import java.util.* +import java.util.Arrays @RunWith(AndroidJUnit4::class) @KotlinCleanup("IDE Lint") diff --git a/AnkiDroid/src/test/java/com/ichi2/libanki/CardTest.kt b/AnkiDroid/src/test/java/com/ichi2/libanki/CardTest.kt index 60e1c5d3a7b7..03b88ee95540 100644 --- a/AnkiDroid/src/test/java/com/ichi2/libanki/CardTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/libanki/CardTest.kt @@ -28,7 +28,7 @@ import org.junit.Assert.assertEquals import org.junit.Test import org.junit.runner.RunWith import org.robolectric.annotation.Config -import java.util.* +import java.util.Calendar import kotlin.test.assertNotNull @RunWith(AndroidJUnit4::class) diff --git a/AnkiDroid/src/test/java/com/ichi2/libanki/ClozeTest.kt b/AnkiDroid/src/test/java/com/ichi2/libanki/ClozeTest.kt index 4aa1ca0eff4a..bc6ea6ea1454 100644 --- a/AnkiDroid/src/test/java/com/ichi2/libanki/ClozeTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/libanki/ClozeTest.kt @@ -5,8 +5,10 @@ package com.ichi2.libanki import androidx.test.ext.junit.runners.AndroidJUnit4 import com.ichi2.anki.RobolectricTest import org.hamcrest.MatcherAssert.assertThat -import org.hamcrest.Matchers.* -import org.junit.Assert.* +import org.hamcrest.Matchers.containsString +import org.hamcrest.Matchers.greaterThan +import org.junit.Assert.assertEquals +import org.junit.Assert.assertTrue import org.junit.Test import org.junit.runner.RunWith diff --git a/AnkiDroid/src/test/java/com/ichi2/libanki/CollectionTest.kt b/AnkiDroid/src/test/java/com/ichi2/libanki/CollectionTest.kt index 6044f7924e91..c2f679662647 100644 --- a/AnkiDroid/src/test/java/com/ichi2/libanki/CollectionTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/libanki/CollectionTest.kt @@ -21,11 +21,13 @@ import com.ichi2.anki.RobolectricTest import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.Matchers import org.hamcrest.Matchers.equalTo -import org.junit.Assert.* +import org.junit.Assert.assertEquals +import org.junit.Assert.assertFalse +import org.junit.Assert.assertNotEquals +import org.junit.Assert.assertTrue import org.junit.Ignore import org.junit.Test import org.junit.runner.RunWith -import java.util.* @RunWith(AndroidJUnit4::class) class CollectionTest : RobolectricTest() { diff --git a/AnkiDroid/src/test/java/com/ichi2/libanki/DecksTest.kt b/AnkiDroid/src/test/java/com/ichi2/libanki/DecksTest.kt index a2917aed6a5a..10d6be9b7299 100644 --- a/AnkiDroid/src/test/java/com/ichi2/libanki/DecksTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/libanki/DecksTest.kt @@ -25,7 +25,11 @@ import com.ichi2.testutils.AnkiAssert.assertEqualsArrayList import org.apache.http.util.Asserts import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.Matchers.equalTo -import org.junit.Assert.* +import org.junit.Assert.assertEquals +import org.junit.Assert.assertFalse +import org.junit.Assert.assertNotEquals +import org.junit.Assert.assertThrows +import org.junit.Assert.assertTrue import org.junit.Test import org.junit.runner.RunWith import kotlin.test.assertNotNull diff --git a/AnkiDroid/src/test/java/com/ichi2/libanki/FinderTest.kt b/AnkiDroid/src/test/java/com/ichi2/libanki/FinderTest.kt index 2b23ab915ab0..4b21bc7d9dc0 100644 --- a/AnkiDroid/src/test/java/com/ichi2/libanki/FinderTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/libanki/FinderTest.kt @@ -34,12 +34,14 @@ import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.Matchers.greaterThan import org.hamcrest.Matchers.hasItem import org.hamcrest.Matchers.hasSize -import org.junit.Assert.* +import org.junit.Assert.assertEquals +import org.junit.Assert.assertNotEquals +import org.junit.Assert.assertTrue import org.junit.Test import org.junit.runner.RunWith import org.robolectric.annotation.Config import timber.log.Timber -import java.util.* +import java.util.Calendar @RunWith(AndroidJUnit4::class) class FinderTest : RobolectricTest() { diff --git a/AnkiDroid/src/test/java/com/ichi2/libanki/LegacyDecksTest.kt b/AnkiDroid/src/test/java/com/ichi2/libanki/LegacyDecksTest.kt index 5c7b190aa382..010ff61f8c62 100644 --- a/AnkiDroid/src/test/java/com/ichi2/libanki/LegacyDecksTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/libanki/LegacyDecksTest.kt @@ -22,7 +22,7 @@ import com.ichi2.libanki.utils.TimeManager import com.ichi2.testutils.assertThrows import com.ichi2.utils.JSONObject import net.ankiweb.rsdroid.RustCleanup -import org.hamcrest.MatcherAssert.* +import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.Matchers import org.junit.Test import org.junit.runner.RunWith diff --git a/AnkiDroid/src/test/java/com/ichi2/libanki/MathJaxClozeTest.kt b/AnkiDroid/src/test/java/com/ichi2/libanki/MathJaxClozeTest.kt index 52f4c13fa167..e5a1184f6bd2 100644 --- a/AnkiDroid/src/test/java/com/ichi2/libanki/MathJaxClozeTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/libanki/MathJaxClozeTest.kt @@ -8,8 +8,12 @@ import com.ichi2.libanki.template.MathJax import com.ichi2.libanki.template.TemplateFilters.removeFormattingFromMathjax import com.ichi2.utils.KotlinCleanup import org.hamcrest.MatcherAssert.assertThat -import org.hamcrest.Matchers.* -import org.junit.Assert.* +import org.hamcrest.Matchers.containsString +import org.hamcrest.Matchers.endsWith +import org.hamcrest.Matchers.not +import org.junit.Assert.assertEquals +import org.junit.Assert.assertFalse +import org.junit.Assert.assertTrue import org.junit.Test import org.junit.runner.RunWith diff --git a/AnkiDroid/src/test/java/com/ichi2/libanki/ModelTest.kt b/AnkiDroid/src/test/java/com/ichi2/libanki/ModelTest.kt index a5530d62c712..d7665def9ddb 100644 --- a/AnkiDroid/src/test/java/com/ichi2/libanki/ModelTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/libanki/ModelTest.kt @@ -29,12 +29,16 @@ import com.ichi2.utils.KotlinCleanup import com.ichi2.utils.ListUtil.Companion.assertListEquals import net.ankiweb.rsdroid.BackendFactory import org.hamcrest.MatcherAssert.assertThat -import org.hamcrest.Matchers.* -import org.junit.Assert.* +import org.hamcrest.Matchers.containsString +import org.hamcrest.Matchers.endsWith +import org.hamcrest.Matchers.not +import org.junit.Assert.assertArrayEquals +import org.junit.Assert.assertEquals +import org.junit.Assert.assertNotEquals +import org.junit.Assert.assertTrue import org.junit.Test import org.junit.runner.RunWith import org.robolectric.annotation.Config -import java.util.* @RunWith(AndroidJUnit4::class) @KotlinCleanup("improve kotlin code where possible") diff --git a/AnkiDroid/src/test/java/com/ichi2/libanki/StorageTest.kt b/AnkiDroid/src/test/java/com/ichi2/libanki/StorageTest.kt index 9eae44b3d847..e94c3aa7f109 100644 --- a/AnkiDroid/src/test/java/com/ichi2/libanki/StorageTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/libanki/StorageTest.kt @@ -15,7 +15,6 @@ */ package com.ichi2.libanki -import androidx.core.util.Pair import androidx.test.ext.junit.runners.AndroidJUnit4 import com.ichi2.anki.CollectionHelper import com.ichi2.anki.RobolectricTest @@ -26,7 +25,7 @@ import org.hamcrest.MatcherAssert import org.hamcrest.Matchers import org.junit.Test import org.junit.runner.RunWith -import java.util.* +import java.util.Collections import java.util.stream.Collectors import kotlin.math.min diff --git a/AnkiDroid/src/test/java/com/ichi2/libanki/TagsTest.kt b/AnkiDroid/src/test/java/com/ichi2/libanki/TagsTest.kt index b1c2eddbc4cc..b21ab0ab8dc4 100644 --- a/AnkiDroid/src/test/java/com/ichi2/libanki/TagsTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/libanki/TagsTest.kt @@ -17,7 +17,9 @@ package com.ichi2.libanki import androidx.test.ext.junit.runners.AndroidJUnit4 import com.ichi2.anki.RobolectricTest -import junit.framework.TestCase.* +import junit.framework.TestCase.assertEquals +import junit.framework.TestCase.assertFalse +import junit.framework.TestCase.assertTrue import org.junit.Assert.assertNotEquals import org.junit.Test import org.junit.runner.RunWith diff --git a/AnkiDroid/src/test/java/com/ichi2/libanki/TextCardExporterTest.kt b/AnkiDroid/src/test/java/com/ichi2/libanki/TextCardExporterTest.kt index c24e3ca01439..1a515f373dcc 100644 --- a/AnkiDroid/src/test/java/com/ichi2/libanki/TextCardExporterTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/libanki/TextCardExporterTest.kt @@ -22,8 +22,7 @@ import org.junit.Test import org.junit.runner.RunWith import java.io.File import java.io.IOException -import java.util.* -import kotlin.Throws +import java.util.Locale @KotlinCleanup("lateinit") @RunWith(AndroidJUnit4::class) diff --git a/AnkiDroid/src/test/java/com/ichi2/libanki/TextNoteExporterTest.kt b/AnkiDroid/src/test/java/com/ichi2/libanki/TextNoteExporterTest.kt index e383b1ec11bd..4195bd864ef8 100644 --- a/AnkiDroid/src/test/java/com/ichi2/libanki/TextNoteExporterTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/libanki/TextNoteExporterTest.kt @@ -25,8 +25,7 @@ import org.robolectric.ParameterizedRobolectricTestRunner import timber.log.Timber import java.io.File import java.io.IOException -import java.util.* -import kotlin.Throws +import java.util.Arrays @KotlinCleanup("lateinit wherever possible") @KotlinCleanup("IDE-lint") diff --git a/AnkiDroid/src/test/java/com/ichi2/libanki/UtilsTest.kt b/AnkiDroid/src/test/java/com/ichi2/libanki/UtilsTest.kt index ccf5b92d421f..2b2c1d0462bf 100644 --- a/AnkiDroid/src/test/java/com/ichi2/libanki/UtilsTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/libanki/UtilsTest.kt @@ -26,9 +26,6 @@ import org.junit.Test import org.junit.runner.RunWith import java.io.File import java.io.IOException -import java.lang.Exception -import java.util.* -import kotlin.Throws @RunWith(AndroidJUnit4::class) class UtilsTest { diff --git a/AnkiDroid/src/test/java/com/ichi2/libanki/sched/AbstractSchedTest.kt b/AnkiDroid/src/test/java/com/ichi2/libanki/sched/AbstractSchedTest.kt index 89b0772503bb..aa4c5a3d7c87 100644 --- a/AnkiDroid/src/test/java/com/ichi2/libanki/sched/AbstractSchedTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/libanki/sched/AbstractSchedTest.kt @@ -19,13 +19,20 @@ import com.ichi2.anki.RobolectricTest import com.ichi2.anki.exception.ConfirmModSchemaException import com.ichi2.anki.servicelayer.UndoService.Undo import com.ichi2.async.CollectionTask.Companion.nonTaskUndo -import com.ichi2.libanki.* +import com.ichi2.libanki.Card +import com.ichi2.libanki.Consts +import com.ichi2.libanki.Deck +import com.ichi2.libanki.DeckManager +import com.ichi2.libanki.Note import com.ichi2.libanki.utils.TimeManager.time import com.ichi2.testutils.AnkiAssert import com.ichi2.utils.JSONArray import com.ichi2.utils.KotlinCleanup -import org.hamcrest.MatcherAssert.* -import org.hamcrest.Matchers.* +import org.hamcrest.MatcherAssert.assertThat +import org.hamcrest.Matchers.greaterThan +import org.hamcrest.Matchers.`is` +import org.hamcrest.Matchers.lessThanOrEqualTo +import org.hamcrest.Matchers.notNullValue import org.junit.Before import org.junit.Test import org.junit.runner.RunWith diff --git a/AnkiDroid/src/test/java/com/ichi2/libanki/sched/SchedTest.kt b/AnkiDroid/src/test/java/com/ichi2/libanki/sched/SchedTest.kt index 21347cef97c8..e145fcca7cd3 100644 --- a/AnkiDroid/src/test/java/com/ichi2/libanki/sched/SchedTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/libanki/sched/SchedTest.kt @@ -19,7 +19,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import com.ichi2.anki.CollectionHelper import com.ichi2.anki.RobolectricTest import com.ichi2.anki.exception.ConfirmModSchemaException -import com.ichi2.libanki.* +import com.ichi2.libanki.Card import com.ichi2.libanki.Collection import com.ichi2.libanki.Consts.BUTTON_FOUR import com.ichi2.libanki.Consts.BUTTON_ONE @@ -37,6 +37,8 @@ import com.ichi2.libanki.Consts.QUEUE_TYPE_REV import com.ichi2.libanki.Consts.QUEUE_TYPE_SIBLING_BURIED import com.ichi2.libanki.Consts.STARTING_FACTOR import com.ichi2.libanki.DecksTest.Companion.TEST_DECKS +import com.ichi2.libanki.Models +import com.ichi2.libanki.Note import com.ichi2.libanki.stats.Stats.Companion.SECONDS_PER_DAY import com.ichi2.libanki.utils.TimeManager import com.ichi2.testutils.AnkiAssert.checkRevIvl @@ -47,12 +49,24 @@ import com.ichi2.utils.JSONArray import com.ichi2.utils.KotlinCleanup import net.ankiweb.rsdroid.BackendFactory import net.ankiweb.rsdroid.RustCleanup -import org.hamcrest.MatcherAssert.* -import org.hamcrest.Matchers.* +import org.hamcrest.MatcherAssert.assertThat +import org.hamcrest.Matchers.containsString +import org.hamcrest.Matchers.greaterThan +import org.hamcrest.Matchers.greaterThanOrEqualTo +import org.hamcrest.Matchers.`is` +import org.hamcrest.Matchers.lessThanOrEqualTo +import org.hamcrest.Matchers.not +import org.hamcrest.Matchers.notNullValue +import org.hamcrest.Matchers.nullValue import org.junit.Ignore import org.junit.Test import org.junit.runner.RunWith -import kotlin.test.* +import kotlin.test.assertEquals +import kotlin.test.assertFalse +import kotlin.test.assertNotEquals +import kotlin.test.assertNotNull +import kotlin.test.assertNull +import kotlin.test.assertTrue import kotlin.test.junit5.JUnit5Asserter.assertEquals @RustCleanup("Remove, or add KotlinCleanup") diff --git a/AnkiDroid/src/test/java/com/ichi2/libanki/sched/SchedUpgradeTest.kt b/AnkiDroid/src/test/java/com/ichi2/libanki/sched/SchedUpgradeTest.kt index aa2ee1c5fdc7..2214f4522fec 100644 --- a/AnkiDroid/src/test/java/com/ichi2/libanki/sched/SchedUpgradeTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/libanki/sched/SchedUpgradeTest.kt @@ -18,7 +18,9 @@ package com.ichi2.libanki.sched import androidx.test.ext.junit.runners.AndroidJUnit4 import com.ichi2.anki.RobolectricTest import org.hamcrest.MatcherAssert.assertThat -import org.hamcrest.Matchers.* +import org.hamcrest.Matchers.equalTo +import org.hamcrest.Matchers.instanceOf +import org.hamcrest.Matchers.not import org.junit.Test import org.junit.runner.RunWith diff --git a/AnkiDroid/src/test/java/com/ichi2/libanki/sched/SchedV2Test.kt b/AnkiDroid/src/test/java/com/ichi2/libanki/sched/SchedV2Test.kt index efa10af74dae..4a21db8d4453 100644 --- a/AnkiDroid/src/test/java/com/ichi2/libanki/sched/SchedV2Test.kt +++ b/AnkiDroid/src/test/java/com/ichi2/libanki/sched/SchedV2Test.kt @@ -18,8 +18,9 @@ package com.ichi2.libanki.sched import androidx.test.ext.junit.runners.AndroidJUnit4 import com.ichi2.anki.RobolectricTest import com.ichi2.anki.exception.ConfirmModSchemaException -import com.ichi2.libanki.* +import com.ichi2.libanki.Card import com.ichi2.libanki.Collection +import com.ichi2.libanki.Consts import com.ichi2.libanki.Consts.BUTTON_FOUR import com.ichi2.libanki.Consts.BUTTON_ONE import com.ichi2.libanki.Consts.BUTTON_THREE @@ -37,6 +38,8 @@ import com.ichi2.libanki.Consts.QUEUE_TYPE_REV import com.ichi2.libanki.Consts.QUEUE_TYPE_SIBLING_BURIED import com.ichi2.libanki.Consts.STARTING_FACTOR import com.ichi2.libanki.Consts.SYNC_VER +import com.ichi2.libanki.DecksTest +import com.ichi2.libanki.Models import com.ichi2.libanki.backend.exception.BackendNotSupportedException import com.ichi2.libanki.stats.Stats import com.ichi2.libanki.utils.TimeManager @@ -57,11 +60,9 @@ import org.junit.Ignore import org.junit.Test import org.junit.platform.commons.util.CollectionUtils import org.junit.runner.RunWith -import java.lang.Exception import java.time.Instant import java.time.ZoneOffset -import java.util.* -import kotlin.Throws +import java.util.Arrays import kotlin.math.roundToLong import kotlin.test.assertNotNull import kotlin.test.assertNull diff --git a/AnkiDroid/src/test/java/com/ichi2/libanki/template/TemplateTest.kt b/AnkiDroid/src/test/java/com/ichi2/libanki/template/TemplateTest.kt index ab71260edec9..acb5f1be3b5c 100644 --- a/AnkiDroid/src/test/java/com/ichi2/libanki/template/TemplateTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/libanki/template/TemplateTest.kt @@ -18,7 +18,11 @@ package com.ichi2.libanki.template import androidx.test.ext.junit.runners.AndroidJUnit4 import com.ichi2.anki.RobolectricTest import org.hamcrest.MatcherAssert.assertThat -import org.hamcrest.Matchers.* +import org.hamcrest.Matchers.containsString +import org.hamcrest.Matchers.emptyString +import org.hamcrest.Matchers.equalTo +import org.hamcrest.Matchers.not +import org.hamcrest.Matchers.notNullValue import org.junit.Ignore import org.junit.Test import org.junit.runner.RunWith diff --git a/AnkiDroid/src/test/java/com/ichi2/preferences/PreferenceExtensionsTest.kt b/AnkiDroid/src/test/java/com/ichi2/preferences/PreferenceExtensionsTest.kt index 354b3b6a4cbf..a803340667b0 100644 --- a/AnkiDroid/src/test/java/com/ichi2/preferences/PreferenceExtensionsTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/preferences/PreferenceExtensionsTest.kt @@ -26,7 +26,6 @@ import org.mockito.ArgumentMatchers.eq import org.mockito.Mock import org.mockito.Mockito import org.mockito.MockitoAnnotations -import java.lang.RuntimeException import java.util.function.Supplier // Unknown issue: @CheckResult should provide warnings on this class when return value is unused, but doesn't. diff --git a/AnkiDroid/src/test/java/com/ichi2/preferences/TimePreferenceTest.kt b/AnkiDroid/src/test/java/com/ichi2/preferences/TimePreferenceTest.kt index a9285eb54e6d..0b073a19259e 100644 --- a/AnkiDroid/src/test/java/com/ichi2/preferences/TimePreferenceTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/preferences/TimePreferenceTest.kt @@ -21,7 +21,7 @@ import org.junit.Assert.assertEquals import org.junit.Test import org.junit.runner.RunWith import org.junit.runners.Parameterized -import java.util.* +import java.util.Arrays @RunWith(Parameterized::class) class TimePreferenceTest(private val parsableHour: String, private val expectedHour: Int) { diff --git a/AnkiDroid/src/test/java/com/ichi2/testutils/ActivityList.kt b/AnkiDroid/src/test/java/com/ichi2/testutils/ActivityList.kt index fc83a009c7e0..22beaac0897f 100644 --- a/AnkiDroid/src/test/java/com/ichi2/testutils/ActivityList.kt +++ b/AnkiDroid/src/test/java/com/ichi2/testutils/ActivityList.kt @@ -20,9 +20,31 @@ import android.content.Context import android.content.Intent import androidx.annotation.CheckResult import com.canhub.cropper.CropImageActivity -import com.ichi2.anki.* +import com.ichi2.anki.CardBrowser +import com.ichi2.anki.CardInfo +import com.ichi2.anki.CardTemplateBrowserAppearanceEditor import com.ichi2.anki.CardTemplateBrowserAppearanceEditor.Companion.INTENT_ANSWER_FORMAT import com.ichi2.anki.CardTemplateBrowserAppearanceEditor.Companion.INTENT_QUESTION_FORMAT +import com.ichi2.anki.CardTemplateEditor +import com.ichi2.anki.CardTemplatePreviewer +import com.ichi2.anki.DeckOptions +import com.ichi2.anki.DeckPicker +import com.ichi2.anki.DrawingActivity +import com.ichi2.anki.FilteredDeckOptions +import com.ichi2.anki.Info +import com.ichi2.anki.IntentHandler +import com.ichi2.anki.IntroductionActivity +import com.ichi2.anki.LoginActivity +import com.ichi2.anki.ModelBrowser +import com.ichi2.anki.ModelFieldEditor +import com.ichi2.anki.MyAccount +import com.ichi2.anki.NoteEditor +import com.ichi2.anki.Previewer +import com.ichi2.anki.Reviewer +import com.ichi2.anki.SharedDecksActivity +import com.ichi2.anki.Statistics +import com.ichi2.anki.StudyOptionsActivity +import com.ichi2.anki.VideoPlayer import com.ichi2.anki.multimediacard.activity.LoadPronunciationActivity import com.ichi2.anki.multimediacard.activity.MultimediaEditFieldActivity import com.ichi2.anki.pages.PagesActivity diff --git a/AnkiDroid/src/test/java/com/ichi2/testutils/AnkiAssertTest.kt b/AnkiDroid/src/test/java/com/ichi2/testutils/AnkiAssertTest.kt index 922d7e9fa71b..ac1427cc7f23 100644 --- a/AnkiDroid/src/test/java/com/ichi2/testutils/AnkiAssertTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/testutils/AnkiAssertTest.kt @@ -15,13 +15,12 @@ */ package com.ichi2.testutils -import org.hamcrest.MatcherAssert.* -import org.hamcrest.Matchers.* +import org.hamcrest.MatcherAssert.assertThat +import org.hamcrest.Matchers.containsString +import org.hamcrest.Matchers.notNullValue +import org.hamcrest.Matchers.sameInstance import org.junit.Assert import org.junit.Test -import java.lang.AssertionError -import java.lang.IllegalArgumentException -import java.lang.IllegalStateException class AnkiAssertTest { // We're not going to use the class under test to verify that these are working. diff --git a/AnkiDroid/src/test/java/com/ichi2/testutils/BackendEmulatingOpenConflictTest.kt b/AnkiDroid/src/test/java/com/ichi2/testutils/BackendEmulatingOpenConflictTest.kt index 7a68ae705d5f..71d9a3bb642c 100644 --- a/AnkiDroid/src/test/java/com/ichi2/testutils/BackendEmulatingOpenConflictTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/testutils/BackendEmulatingOpenConflictTest.kt @@ -18,7 +18,7 @@ package com.ichi2.testutils import androidx.test.ext.junit.runners.AndroidJUnit4 import com.ichi2.anki.CollectionHelper import com.ichi2.anki.RobolectricTest -import net.ankiweb.rsdroid.BackendException.BackendDbException.* +import net.ankiweb.rsdroid.BackendException.BackendDbException.BackendDbLockedException import org.junit.After import org.junit.Assert.assertThrows import org.junit.Before diff --git a/AnkiDroid/src/test/java/com/ichi2/testutils/BackupManagerTestUtilities.kt b/AnkiDroid/src/test/java/com/ichi2/testutils/BackupManagerTestUtilities.kt index d6aaf785469b..89e6034a24a5 100644 --- a/AnkiDroid/src/test/java/com/ichi2/testutils/BackupManagerTestUtilities.kt +++ b/AnkiDroid/src/test/java/com/ichi2/testutils/BackupManagerTestUtilities.kt @@ -20,7 +20,6 @@ import com.ichi2.anki.BackupManager.Companion.enoughDiscSpace import com.ichi2.anki.CollectionHelper import org.junit.Assert.assertTrue import java.io.File -import java.lang.IllegalStateException object BackupManagerTestUtilities { fun setupSpaceForBackup(context: Context) { diff --git a/AnkiDroid/src/test/java/com/ichi2/testutils/FileUtil.kt b/AnkiDroid/src/test/java/com/ichi2/testutils/FileUtil.kt index 1e5202a3ca89..700fb356a65e 100644 --- a/AnkiDroid/src/test/java/com/ichi2/testutils/FileUtil.kt +++ b/AnkiDroid/src/test/java/com/ichi2/testutils/FileUtil.kt @@ -20,7 +20,7 @@ import com.ichi2.anki.model.Directory import com.ichi2.anki.model.DiskFile import org.acra.util.IOUtils import java.io.File -import java.util.* +import java.util.Scanner object FileUtil { /** diff --git a/AnkiDroid/src/test/java/com/ichi2/testutils/IntentAssert.kt b/AnkiDroid/src/test/java/com/ichi2/testutils/IntentAssert.kt index 2eee7a5e9af2..30e050fff265 100644 --- a/AnkiDroid/src/test/java/com/ichi2/testutils/IntentAssert.kt +++ b/AnkiDroid/src/test/java/com/ichi2/testutils/IntentAssert.kt @@ -16,7 +16,9 @@ package com.ichi2.testutils import android.content.Intent -import org.hamcrest.CoreMatchers.* +import org.hamcrest.CoreMatchers.equalTo +import org.hamcrest.CoreMatchers.hasItem +import org.hamcrest.CoreMatchers.not import org.hamcrest.MatcherAssert.assertThat import kotlin.test.assertNotNull diff --git a/AnkiDroid/src/test/java/com/ichi2/testutils/MockTime.kt b/AnkiDroid/src/test/java/com/ichi2/testutils/MockTime.kt index 002a82657ff1..a05a51a596df 100644 --- a/AnkiDroid/src/test/java/com/ichi2/testutils/MockTime.kt +++ b/AnkiDroid/src/test/java/com/ichi2/testutils/MockTime.kt @@ -18,7 +18,9 @@ package com.ichi2.testutils import android.annotation.SuppressLint import com.ichi2.libanki.utils.Time import com.ichi2.utils.KotlinCleanup -import java.util.* +import java.util.Calendar +import java.util.GregorianCalendar +import java.util.TimeZone /** @param [step] Number of milliseconds between each call. * @param [time]: Time since epoch in MS. */ diff --git a/AnkiDroid/src/test/java/com/ichi2/testutils/libanki/CollectionAssert.kt b/AnkiDroid/src/test/java/com/ichi2/testutils/libanki/CollectionAssert.kt index 118536329f5e..3c8ef3707c41 100644 --- a/AnkiDroid/src/test/java/com/ichi2/testutils/libanki/CollectionAssert.kt +++ b/AnkiDroid/src/test/java/com/ichi2/testutils/libanki/CollectionAssert.kt @@ -19,7 +19,7 @@ import com.ichi2.libanki.Collection import com.ichi2.libanki.Consts import com.ichi2.utils.KotlinCleanup import org.hamcrest.MatcherAssert.assertThat -import org.hamcrest.core.Is.* +import org.hamcrest.core.Is.`is` @KotlinCleanup("fix 'is'") object CollectionAssert { diff --git a/AnkiDroid/src/test/java/com/ichi2/ui/KeyPickerTest.kt b/AnkiDroid/src/test/java/com/ichi2/ui/KeyPickerTest.kt index b7471984cff6..c28b4b20a375 100644 --- a/AnkiDroid/src/test/java/com/ichi2/ui/KeyPickerTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/ui/KeyPickerTest.kt @@ -20,7 +20,10 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import com.ichi2.anki.RobolectricTest import com.ichi2.anki.dialogs.KeySelectionDialogUtils import com.ichi2.testutils.KeyEventUtils -import org.hamcrest.CoreMatchers.* +import org.hamcrest.CoreMatchers.not +import org.hamcrest.CoreMatchers.notNullValue +import org.hamcrest.CoreMatchers.nullValue +import org.hamcrest.CoreMatchers.sameInstance import org.hamcrest.MatcherAssert.assertThat import org.junit.Test import org.junit.runner.RunWith diff --git a/AnkiDroid/src/test/java/com/ichi2/utils/BundleUtilsTest.kt b/AnkiDroid/src/test/java/com/ichi2/utils/BundleUtilsTest.kt index 6cf1f7a9a5a9..b06186cdf583 100644 --- a/AnkiDroid/src/test/java/com/ichi2/utils/BundleUtilsTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/utils/BundleUtilsTest.kt @@ -18,7 +18,11 @@ package com.ichi2.utils import android.os.Bundle import org.junit.Assert.assertEquals import org.junit.Test -import org.mockito.Mockito.* +import org.mockito.Mockito.anyString +import org.mockito.Mockito.eq +import org.mockito.Mockito.mock +import org.mockito.Mockito.times +import org.mockito.Mockito.verify import org.mockito.kotlin.whenever import kotlin.random.Random import kotlin.test.assertNull diff --git a/AnkiDroid/src/test/java/com/ichi2/utils/FileOperation.kt b/AnkiDroid/src/test/java/com/ichi2/utils/FileOperation.kt index 52872d6aaa75..462aba7e386d 100644 --- a/AnkiDroid/src/test/java/com/ichi2/utils/FileOperation.kt +++ b/AnkiDroid/src/test/java/com/ichi2/utils/FileOperation.kt @@ -17,7 +17,7 @@ package com.ichi2.utils import java.io.File import java.io.RandomAccessFile -import java.util.* +import java.util.Objects class FileOperation { companion object { diff --git a/AnkiDroid/src/test/java/com/ichi2/utils/FileUtilTest.kt b/AnkiDroid/src/test/java/com/ichi2/utils/FileUtilTest.kt index 9043f7d8e351..52da340b84c3 100644 --- a/AnkiDroid/src/test/java/com/ichi2/utils/FileUtilTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/utils/FileUtilTest.kt @@ -15,9 +15,9 @@ */ package com.ichi2.utils -import org.acra.util.IOUtils.* +import org.acra.util.IOUtils.writeStringToFile import org.hamcrest.CoreMatchers -import org.hamcrest.MatcherAssert.* +import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.core.IsEqual.equalTo import org.junit.Assert.assertThrows import org.junit.Rule @@ -25,9 +25,6 @@ import org.junit.Test import org.junit.rules.TemporaryFolder import java.io.File import java.io.IOException -import java.lang.Exception -import java.util.ArrayList -import kotlin.Throws import kotlin.test.assertEquals import kotlin.test.assertTrue diff --git a/AnkiDroid/src/test/java/com/ichi2/utils/FragmentFactoryUtilsTest.kt b/AnkiDroid/src/test/java/com/ichi2/utils/FragmentFactoryUtilsTest.kt index 1f783d532fc6..0486939d9ad8 100644 --- a/AnkiDroid/src/test/java/com/ichi2/utils/FragmentFactoryUtilsTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/utils/FragmentFactoryUtilsTest.kt @@ -21,7 +21,9 @@ import androidx.fragment.app.FragmentFactory import androidx.fragment.app.FragmentManager import org.junit.Assert import org.junit.Test -import org.mockito.Mockito.* +import org.mockito.Mockito.mock +import org.mockito.Mockito.times +import org.mockito.Mockito.verify import org.mockito.kotlin.whenever class FragmentFactoryUtilsTest { diff --git a/AnkiDroid/src/test/java/com/ichi2/utils/ImportUtilsTest.kt b/AnkiDroid/src/test/java/com/ichi2/utils/ImportUtilsTest.kt index 328ba9d16988..fb9a85e06db3 100644 --- a/AnkiDroid/src/test/java/com/ichi2/utils/ImportUtilsTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/utils/ImportUtilsTest.kt @@ -33,7 +33,6 @@ import org.junit.Assert.assertFalse import org.junit.Assert.assertTrue import org.junit.Test import org.junit.runner.RunWith -import java.lang.IllegalStateException @RunWith(AndroidJUnit4::class) class ImportUtilsTest : RobolectricTest() { diff --git a/AnkiDroid/src/test/java/com/ichi2/utils/JSONArrayTest.kt b/AnkiDroid/src/test/java/com/ichi2/utils/JSONArrayTest.kt index 362c0eea4c9d..260590936f5c 100644 --- a/AnkiDroid/src/test/java/com/ichi2/utils/JSONArrayTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/utils/JSONArrayTest.kt @@ -25,14 +25,19 @@ package com.ichi2.utils import androidx.test.ext.junit.runners.AndroidJUnit4 import com.ichi2.testutils.EmptyApplication import com.ichi2.testutils.assertThrows -import org.junit.Assert.* +import org.junit.Assert.assertEquals +import org.junit.Assert.assertFalse +import org.junit.Assert.assertTrue +import org.junit.Assert.fail import org.junit.Test import org.junit.runner.RunWith import org.robolectric.annotation.Config import java.lang.Boolean.FALSE import java.lang.Boolean.TRUE -import java.lang.Double.* -import java.util.* +import java.lang.Double.NEGATIVE_INFINITY +import java.lang.Double.NaN +import java.lang.Double.POSITIVE_INFINITY +import java.util.Collections import kotlin.test.assertNull /** diff --git a/AnkiDroid/src/test/java/com/ichi2/utils/JSONObjectTest.kt b/AnkiDroid/src/test/java/com/ichi2/utils/JSONObjectTest.kt index 57ed7c8f1d20..f71402af7e7e 100644 --- a/AnkiDroid/src/test/java/com/ichi2/utils/JSONObjectTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/utils/JSONObjectTest.kt @@ -41,7 +41,12 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import com.ichi2.testutils.EmptyApplication import com.ichi2.testutils.assertThrows import com.ichi2.testutils.assertThrowsSubclass -import junit.framework.TestCase.* +import junit.framework.TestCase.assertEquals +import junit.framework.TestCase.assertFalse +import junit.framework.TestCase.assertNull +import junit.framework.TestCase.assertSame +import junit.framework.TestCase.assertTrue +import junit.framework.TestCase.fail import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.core.IsNull.notNullValue import org.junit.Assert @@ -51,7 +56,8 @@ import org.junit.runner.RunWith import org.robolectric.annotation.Config import java.math.BigDecimal import java.math.BigInteger -import java.util.* +import java.util.Arrays +import java.util.Collections /** * This black box test was written without inspecting the non-free org.json sourcecode. diff --git a/AnkiDroid/src/test/java/com/ichi2/utils/LanguageUtilsTest.kt b/AnkiDroid/src/test/java/com/ichi2/utils/LanguageUtilsTest.kt index 18b0f9d2d298..0e4573f28b4d 100644 --- a/AnkiDroid/src/test/java/com/ichi2/utils/LanguageUtilsTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/utils/LanguageUtilsTest.kt @@ -28,7 +28,8 @@ import org.hamcrest.Matchers.oneOf import org.junit.Test import org.junit.runner.RunWith import org.robolectric.annotation.Config -import java.util.* +import java.util.Collections +import java.util.Locale @RunWith(AndroidJUnit4::class) @Config(application = EmptyApplication::class) diff --git a/AnkiDroid/src/test/java/com/ichi2/utils/ListUtil.kt b/AnkiDroid/src/test/java/com/ichi2/utils/ListUtil.kt index aa1573f7b5b8..503128dde971 100644 --- a/AnkiDroid/src/test/java/com/ichi2/utils/ListUtil.kt +++ b/AnkiDroid/src/test/java/com/ichi2/utils/ListUtil.kt @@ -17,11 +17,8 @@ package com.ichi2.utils import com.ichi2.testutils.assertThrows import org.junit.Assert -import org.junit.Assert.assertThrows import org.junit.Test import org.junit.internal.ArrayComparisonFailure -import java.lang.AssertionError -import kotlin.Throws class ListUtil { @Test diff --git a/AnkiDroid/src/test/java/com/ichi2/utils/TagsUtilTest.kt b/AnkiDroid/src/test/java/com/ichi2/utils/TagsUtilTest.kt index 91bcad1977bf..e9328c7dd17e 100644 --- a/AnkiDroid/src/test/java/com/ichi2/utils/TagsUtilTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/utils/TagsUtilTest.kt @@ -19,7 +19,6 @@ import org.junit.Test import org.junit.experimental.runners.Enclosed import org.junit.runner.RunWith import org.junit.runners.Parameterized -import java.util.* @RunWith(Enclosed::class) class TagsUtilTest { diff --git a/AnkiDroid/src/test/java/com/ichi2/utils/UniqueArrayListTest.kt b/AnkiDroid/src/test/java/com/ichi2/utils/UniqueArrayListTest.kt index 8a35ba8231f2..20e257b01c40 100644 --- a/AnkiDroid/src/test/java/com/ichi2/utils/UniqueArrayListTest.kt +++ b/AnkiDroid/src/test/java/com/ichi2/utils/UniqueArrayListTest.kt @@ -20,12 +20,15 @@ import org.hamcrest.CoreMatchers.instanceOf import org.hamcrest.CoreMatchers.not import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.collection.IsIterableContainingInOrder -import org.junit.Assert.* +import org.junit.Assert.assertEquals +import org.junit.Assert.assertFalse +import org.junit.Assert.assertNotEquals +import org.junit.Assert.assertTrue import org.junit.Test import org.mockito.ArgumentMatchers.any import org.mockito.Mockito.mockStatic import org.mockito.Mockito.never -import java.util.* +import java.util.Collections class UniqueArrayListTest { private val mDupData = listOf( diff --git a/AnkiDroid/src/test/java/com/ichi2/utils/UnzipFile.kt b/AnkiDroid/src/test/java/com/ichi2/utils/UnzipFile.kt index 8e91e942940d..eff3bcc4caa7 100644 --- a/AnkiDroid/src/test/java/com/ichi2/utils/UnzipFile.kt +++ b/AnkiDroid/src/test/java/com/ichi2/utils/UnzipFile.kt @@ -18,7 +18,6 @@ package com.ichi2.utils import com.ichi2.libanki.Utils import org.apache.commons.compress.archivers.zip.ZipFile import java.io.File -import java.lang.Exception class UnzipFile { companion object { diff --git a/AnkiDroid/src/test/java/com/wildplot/android/rendering/PieChartParameterizedTest.kt b/AnkiDroid/src/test/java/com/wildplot/android/rendering/PieChartParameterizedTest.kt index 6c2a88a332d0..4cc88091e1e5 100644 --- a/AnkiDroid/src/test/java/com/wildplot/android/rendering/PieChartParameterizedTest.kt +++ b/AnkiDroid/src/test/java/com/wildplot/android/rendering/PieChartParameterizedTest.kt @@ -22,7 +22,7 @@ import org.mockito.Mockito.inOrder import org.mockito.Mockito.mock import org.mockito.MockitoAnnotations import org.mockito.kotlin.whenever -import java.util.* +import java.util.Arrays import java.util.Arrays.asList @RunWith(Parameterized::class) diff --git a/AnkiDroid/src/test/java/com/wildplot/android/rendering/PieChartTest.kt b/AnkiDroid/src/test/java/com/wildplot/android/rendering/PieChartTest.kt index 0dca4d00c03f..07997f224630 100644 --- a/AnkiDroid/src/test/java/com/wildplot/android/rendering/PieChartTest.kt +++ b/AnkiDroid/src/test/java/com/wildplot/android/rendering/PieChartTest.kt @@ -21,7 +21,6 @@ import org.mockito.Mockito.never import org.mockito.Mockito.verify import org.mockito.Mockito.`when` import org.mockito.MockitoAnnotations -import java.lang.IllegalArgumentException class PieChartTest { @Mock diff --git a/api/src/main/java/com/ichi2/anki/FlashCardsContract.kt b/api/src/main/java/com/ichi2/anki/FlashCardsContract.kt index 19cee05b2acf..4e38ca465d2f 100644 --- a/api/src/main/java/com/ichi2/anki/FlashCardsContract.kt +++ b/api/src/main/java/com/ichi2/anki/FlashCardsContract.kt @@ -7,6 +7,9 @@ package com.ichi2.anki import android.net.Uri +import com.ichi2.anki.FlashCardsContract.Card +import com.ichi2.anki.FlashCardsContract.Model +import com.ichi2.anki.FlashCardsContract.Note /** * The contract between AnkiDroid and applications. Contains definitions for the supported URIs and diff --git a/api/src/main/java/com/ichi2/anki/api/AddContentApi.kt b/api/src/main/java/com/ichi2/anki/api/AddContentApi.kt index 371f22e1a727..e6458c7ef6eb 100644 --- a/api/src/main/java/com/ichi2/anki/api/AddContentApi.kt +++ b/api/src/main/java/com/ichi2/anki/api/AddContentApi.kt @@ -36,7 +36,7 @@ import com.ichi2.anki.FlashCardsContract.Deck import com.ichi2.anki.FlashCardsContract.Model import com.ichi2.anki.FlashCardsContract.Note import java.io.File -import java.util.* +import java.util.Locale /** * API which can be used to add and query notes,cards,decks, and models to AnkiDroid diff --git a/api/src/main/java/com/ichi2/anki/api/NoteInfo.kt b/api/src/main/java/com/ichi2/anki/api/NoteInfo.kt index 20747c279299..68d5d68fb0ce 100644 --- a/api/src/main/java/com/ichi2/anki/api/NoteInfo.kt +++ b/api/src/main/java/com/ichi2/anki/api/NoteInfo.kt @@ -18,7 +18,6 @@ package com.ichi2.anki.api import android.database.Cursor import com.ichi2.anki.FlashCardsContract -import java.util.* /** * Representation of the contents of a note in AnkiDroid. diff --git a/api/src/main/java/com/ichi2/anki/api/Utils.kt b/api/src/main/java/com/ichi2/anki/api/Utils.kt index 5d1ffdd91c47..948b3e280fa9 100644 --- a/api/src/main/java/com/ichi2/anki/api/Utils.kt +++ b/api/src/main/java/com/ichi2/anki/api/Utils.kt @@ -17,6 +17,7 @@ package com.ichi2.anki.api import android.text.Html +import android.text.TextUtils import java.lang.Exception import java.lang.IllegalStateException import java.math.BigInteger diff --git a/api/src/test/java/com/ichi2/anki/api/ApiUtilsTest.kt b/api/src/test/java/com/ichi2/anki/api/ApiUtilsTest.kt index 772f45f0bf80..8cb3b032a82c 100644 --- a/api/src/test/java/com/ichi2/anki/api/ApiUtilsTest.kt +++ b/api/src/test/java/com/ichi2/anki/api/ApiUtilsTest.kt @@ -7,6 +7,10 @@ import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner import java.util.HashSet import kotlin.test.assertEquals +import org.junit.Assert.assertEquals +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner import kotlin.test.assertNull /** diff --git a/build.gradle b/build.gradle index 4030edebc01e..b0897c107201 100644 --- a/build.gradle +++ b/build.gradle @@ -77,7 +77,6 @@ subprojects { // check for "ktlint" here: // https://github.com/JLLeitschuh/ktlint-gradle/blob/master/plugin/gradle/libs.versions.toml version = "0.45.2" - disabledRules = ["no-wildcard-imports"] } /** diff --git a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/CopyrightHeaderExists.kt b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/CopyrightHeaderExists.kt index efbcd230dd80..04a4c1dd4e5a 100644 --- a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/CopyrightHeaderExists.kt +++ b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/CopyrightHeaderExists.kt @@ -17,13 +17,19 @@ package com.ichi2.anki.lint.rules -import com.android.tools.lint.detector.api.* +import com.android.tools.lint.detector.api.Context +import com.android.tools.lint.detector.api.Detector +import com.android.tools.lint.detector.api.Implementation +import com.android.tools.lint.detector.api.Issue +import com.android.tools.lint.detector.api.Location +import com.android.tools.lint.detector.api.Scope +import com.android.tools.lint.detector.api.SourceCodeScanner import com.google.common.annotations.Beta import com.google.common.annotations.VisibleForTesting import com.ichi2.anki.lint.utils.Constants import org.jetbrains.uast.UClass import org.jetbrains.uast.UElement -import java.util.* +import java.util.EnumSet import java.util.regex.Pattern /** diff --git a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DirectCalendarInstanceUsage.kt b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DirectCalendarInstanceUsage.kt index 835796ba1584..19fbdaeaeb37 100644 --- a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DirectCalendarInstanceUsage.kt +++ b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DirectCalendarInstanceUsage.kt @@ -17,13 +17,17 @@ package com.ichi2.anki.lint.rules -import com.android.tools.lint.detector.api.* +import com.android.tools.lint.detector.api.Detector +import com.android.tools.lint.detector.api.Implementation +import com.android.tools.lint.detector.api.Issue +import com.android.tools.lint.detector.api.JavaContext +import com.android.tools.lint.detector.api.Scope +import com.android.tools.lint.detector.api.SourceCodeScanner import com.google.common.annotations.VisibleForTesting import com.ichi2.anki.lint.utils.Constants import com.ichi2.anki.lint.utils.LintUtils import com.intellij.psi.PsiMethod import org.jetbrains.uast.UCallExpression -import java.util.Calendar /** * This custom Lint rules will raise an error if a developer uses the [Calendar.getInstance] method instead diff --git a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DirectDateInstantiation.kt b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DirectDateInstantiation.kt index 4ed7917b7b6e..b53996dc8071 100644 --- a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DirectDateInstantiation.kt +++ b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DirectDateInstantiation.kt @@ -17,7 +17,12 @@ package com.ichi2.anki.lint.rules -import com.android.tools.lint.detector.api.* +import com.android.tools.lint.detector.api.Detector +import com.android.tools.lint.detector.api.Implementation +import com.android.tools.lint.detector.api.Issue +import com.android.tools.lint.detector.api.JavaContext +import com.android.tools.lint.detector.api.Scope +import com.android.tools.lint.detector.api.SourceCodeScanner import com.google.common.annotations.VisibleForTesting import com.ichi2.anki.lint.utils.Constants import com.ichi2.anki.lint.utils.LintUtils diff --git a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DirectGregorianInstantiation.kt b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DirectGregorianInstantiation.kt index a646f18a7201..60c217378d1c 100644 --- a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DirectGregorianInstantiation.kt +++ b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DirectGregorianInstantiation.kt @@ -17,13 +17,17 @@ package com.ichi2.anki.lint.rules -import com.android.tools.lint.detector.api.* +import com.android.tools.lint.detector.api.Detector +import com.android.tools.lint.detector.api.Implementation +import com.android.tools.lint.detector.api.Issue +import com.android.tools.lint.detector.api.JavaContext +import com.android.tools.lint.detector.api.Scope +import com.android.tools.lint.detector.api.SourceCodeScanner import com.google.common.annotations.VisibleForTesting import com.ichi2.anki.lint.utils.Constants import com.ichi2.anki.lint.utils.LintUtils import com.intellij.psi.PsiMethod import org.jetbrains.uast.UCallExpression -import java.util.GregorianCalendar /** * This custom Lint rules will raise an error if a developer creates [GregorianCalendar] instances directly diff --git a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DirectSnackbarMakeUsage.kt b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DirectSnackbarMakeUsage.kt index 54cb634766fe..273e84a1d375 100644 --- a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DirectSnackbarMakeUsage.kt +++ b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DirectSnackbarMakeUsage.kt @@ -16,7 +16,12 @@ @file:Suppress("UnstableApiUsage") package com.ichi2.anki.lint.rules -import com.android.tools.lint.detector.api.* +import com.android.tools.lint.detector.api.Detector +import com.android.tools.lint.detector.api.Implementation +import com.android.tools.lint.detector.api.Issue +import com.android.tools.lint.detector.api.JavaContext +import com.android.tools.lint.detector.api.Scope +import com.android.tools.lint.detector.api.SourceCodeScanner import com.google.common.annotations.VisibleForTesting import com.ichi2.anki.lint.utils.Constants import com.ichi2.anki.lint.utils.LintUtils diff --git a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DirectSystemCurrentTimeMillisUsage.kt b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DirectSystemCurrentTimeMillisUsage.kt index 76fa38c8b2ec..00eb2283b645 100644 --- a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DirectSystemCurrentTimeMillisUsage.kt +++ b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DirectSystemCurrentTimeMillisUsage.kt @@ -16,7 +16,12 @@ @file:Suppress("UnstableApiUsage") package com.ichi2.anki.lint.rules -import com.android.tools.lint.detector.api.* +import com.android.tools.lint.detector.api.Detector +import com.android.tools.lint.detector.api.Implementation +import com.android.tools.lint.detector.api.Issue +import com.android.tools.lint.detector.api.JavaContext +import com.android.tools.lint.detector.api.Scope +import com.android.tools.lint.detector.api.SourceCodeScanner import com.google.common.annotations.VisibleForTesting import com.ichi2.anki.lint.utils.Constants import com.ichi2.anki.lint.utils.LintUtils diff --git a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DirectSystemTimeInstantiation.kt b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DirectSystemTimeInstantiation.kt index d27d16457401..6419b4253c2d 100644 --- a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DirectSystemTimeInstantiation.kt +++ b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DirectSystemTimeInstantiation.kt @@ -16,7 +16,12 @@ @file:Suppress("UnstableApiUsage") package com.ichi2.anki.lint.rules -import com.android.tools.lint.detector.api.* +import com.android.tools.lint.detector.api.Detector +import com.android.tools.lint.detector.api.Implementation +import com.android.tools.lint.detector.api.Issue +import com.android.tools.lint.detector.api.JavaContext +import com.android.tools.lint.detector.api.Scope +import com.android.tools.lint.detector.api.SourceCodeScanner import com.google.common.annotations.VisibleForTesting import com.ichi2.anki.lint.utils.Constants import com.ichi2.anki.lint.utils.LintUtils.isAnAllowedClass diff --git a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DirectToastMakeTextUsage.kt b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DirectToastMakeTextUsage.kt index 205386dc62f8..afc9669b0102 100644 --- a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DirectToastMakeTextUsage.kt +++ b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DirectToastMakeTextUsage.kt @@ -16,7 +16,12 @@ @file:Suppress("UnstableApiUsage") package com.ichi2.anki.lint.rules -import com.android.tools.lint.detector.api.* +import com.android.tools.lint.detector.api.Detector +import com.android.tools.lint.detector.api.Implementation +import com.android.tools.lint.detector.api.Issue +import com.android.tools.lint.detector.api.JavaContext +import com.android.tools.lint.detector.api.Scope +import com.android.tools.lint.detector.api.SourceCodeScanner import com.google.common.annotations.VisibleForTesting import com.ichi2.anki.lint.utils.Constants import com.ichi2.anki.lint.utils.LintUtils diff --git a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DuplicateCrowdInStrings.kt b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DuplicateCrowdInStrings.kt index 032f14b40662..55763f19a019 100644 --- a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DuplicateCrowdInStrings.kt +++ b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DuplicateCrowdInStrings.kt @@ -35,17 +35,27 @@ @file:Suppress("UnstableApiUsage") package com.ichi2.anki.lint.rules -import com.android.SdkConstants.* +import com.android.SdkConstants.ATTR_NAME +import com.android.SdkConstants.ATTR_TRANSLATABLE +import com.android.SdkConstants.TAG_STRING +import com.android.SdkConstants.VALUE_FALSE import com.android.resources.ResourceFolderType import com.android.tools.lint.checks.StringCasingDetector.StringDeclaration -import com.android.tools.lint.detector.api.* +import com.android.tools.lint.detector.api.Context +import com.android.tools.lint.detector.api.Implementation +import com.android.tools.lint.detector.api.Issue +import com.android.tools.lint.detector.api.Location +import com.android.tools.lint.detector.api.ResourceXmlDetector import com.android.tools.lint.detector.api.Scope.Companion.ALL_RESOURCES_SCOPE +import com.android.tools.lint.detector.api.XmlContext +import com.android.tools.lint.detector.api.formatList +import com.android.tools.lint.detector.api.getLocale import com.android.utils.Pair import com.ichi2.anki.lint.utils.Constants import com.ichi2.anki.lint.utils.StringFormatDetector import org.w3c.dom.Element import org.w3c.dom.Node -import java.util.* +import java.util.Locale class DuplicateCrowdInStrings : ResourceXmlDetector() { /* diff --git a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DuplicateTextInPreferencesXml.kt b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DuplicateTextInPreferencesXml.kt index cdfd33cec39a..9da52a64c3ad 100644 --- a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DuplicateTextInPreferencesXml.kt +++ b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/DuplicateTextInPreferencesXml.kt @@ -17,7 +17,11 @@ package com.ichi2.anki.lint.rules import com.android.resources.ResourceFolderType -import com.android.tools.lint.detector.api.* +import com.android.tools.lint.detector.api.Implementation +import com.android.tools.lint.detector.api.Issue +import com.android.tools.lint.detector.api.ResourceXmlDetector +import com.android.tools.lint.detector.api.Scope +import com.android.tools.lint.detector.api.XmlContext import com.google.common.annotations.VisibleForTesting import com.ichi2.anki.lint.utils.Constants import org.w3c.dom.Element diff --git a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/FixedPreferencesTitleLength.kt b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/FixedPreferencesTitleLength.kt index 2b207191e4ed..800d53bfc43b 100644 --- a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/FixedPreferencesTitleLength.kt +++ b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/FixedPreferencesTitleLength.kt @@ -17,13 +17,19 @@ package com.ichi2.anki.lint.rules import com.android.resources.ResourceFolderType -import com.android.tools.lint.detector.api.* +import com.android.tools.lint.detector.api.Context +import com.android.tools.lint.detector.api.Implementation +import com.android.tools.lint.detector.api.Issue import com.android.tools.lint.detector.api.Location.Handle +import com.android.tools.lint.detector.api.ResourceXmlDetector +import com.android.tools.lint.detector.api.Scope +import com.android.tools.lint.detector.api.XmlContext +import com.android.tools.lint.detector.api.XmlScanner import com.android.utils.Pair import com.google.common.annotations.VisibleForTesting import com.ichi2.anki.lint.utils.Constants import org.w3c.dom.Element -import java.util.* +import java.util.Locale class FixedPreferencesTitleLength : ResourceXmlDetector(), XmlScanner { companion object { diff --git a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/HardcodedPreferenceKey.kt b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/HardcodedPreferenceKey.kt index 7ca16daaa6b8..cbf7460acb32 100644 --- a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/HardcodedPreferenceKey.kt +++ b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/HardcodedPreferenceKey.kt @@ -17,7 +17,11 @@ package com.ichi2.anki.lint.rules import com.android.resources.ResourceFolderType -import com.android.tools.lint.detector.api.* +import com.android.tools.lint.detector.api.Implementation +import com.android.tools.lint.detector.api.Issue +import com.android.tools.lint.detector.api.ResourceXmlDetector +import com.android.tools.lint.detector.api.Scope +import com.android.tools.lint.detector.api.XmlContext import com.google.common.annotations.VisibleForTesting import com.ichi2.anki.lint.utils.Constants import org.w3c.dom.Element diff --git a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/InvalidStringFormatDetector.kt b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/InvalidStringFormatDetector.kt index 2370296d7422..aeb52f8a435d 100644 --- a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/InvalidStringFormatDetector.kt +++ b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/InvalidStringFormatDetector.kt @@ -17,7 +17,9 @@ @file:Suppress("UnstableApiUsage") package com.ichi2.anki.lint.rules -import com.android.SdkConstants.* +import com.android.SdkConstants.TAG_PLURALS +import com.android.SdkConstants.TAG_STRING +import com.android.SdkConstants.TAG_STRING_ARRAY import com.android.resources.ResourceFolderType import com.android.tools.lint.detector.api.Implementation import com.android.tools.lint.detector.api.Issue @@ -31,7 +33,7 @@ import com.ichi2.anki.lint.utils.Constants.ANKI_XML_SEVERITY import com.ichi2.anki.lint.utils.StringFormatDetector import org.w3c.dom.Element import org.w3c.dom.Node -import java.util.* +import java.util.EnumSet import java.util.regex.Pattern /** diff --git a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/JUnitNullAssertionDetector.kt b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/JUnitNullAssertionDetector.kt index cd007f95d652..80eecb18cad2 100644 --- a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/JUnitNullAssertionDetector.kt +++ b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/JUnitNullAssertionDetector.kt @@ -17,8 +17,12 @@ @file:Suppress("UnstableApiUsage") package com.ichi2.anki.lint.rules -import com.android.tools.lint.detector.api.* +import com.android.tools.lint.detector.api.Detector +import com.android.tools.lint.detector.api.Implementation +import com.android.tools.lint.detector.api.Issue +import com.android.tools.lint.detector.api.JavaContext import com.android.tools.lint.detector.api.Scope.Companion.JAVA_FILE_SCOPE +import com.android.tools.lint.detector.api.SourceCodeScanner import com.google.common.annotations.VisibleForTesting import com.ichi2.anki.lint.utils.Constants import com.intellij.psi.PsiMethod diff --git a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/KotlinMigrationBrokenEmails.kt b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/KotlinMigrationBrokenEmails.kt index c5d681772d3c..c4c7c648864e 100644 --- a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/KotlinMigrationBrokenEmails.kt +++ b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/KotlinMigrationBrokenEmails.kt @@ -17,12 +17,18 @@ @file:Suppress("UnstableApiUsage") package com.ichi2.anki.lint.rules -import com.android.tools.lint.detector.api.* +import com.android.tools.lint.detector.api.Context +import com.android.tools.lint.detector.api.Detector +import com.android.tools.lint.detector.api.Implementation +import com.android.tools.lint.detector.api.Issue +import com.android.tools.lint.detector.api.Location +import com.android.tools.lint.detector.api.Scope +import com.android.tools.lint.detector.api.SourceCodeScanner import com.google.common.annotations.Beta import com.google.common.annotations.VisibleForTesting import com.ichi2.anki.lint.utils.Constants import org.jetbrains.uast.UClass -import java.util.* +import java.util.EnumSet import java.util.regex.Pattern @Beta diff --git a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/KotlinMigrationFixLineBreaks.kt b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/KotlinMigrationFixLineBreaks.kt index a6ba7a92af62..46afa9993139 100644 --- a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/KotlinMigrationFixLineBreaks.kt +++ b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/KotlinMigrationFixLineBreaks.kt @@ -18,12 +18,18 @@ @file:Suppress("UnstableApiUsage") package com.ichi2.anki.lint.rules -import com.android.tools.lint.detector.api.* +import com.android.tools.lint.detector.api.Context +import com.android.tools.lint.detector.api.Detector +import com.android.tools.lint.detector.api.Implementation +import com.android.tools.lint.detector.api.Issue +import com.android.tools.lint.detector.api.Location +import com.android.tools.lint.detector.api.Scope +import com.android.tools.lint.detector.api.SourceCodeScanner import com.google.common.annotations.Beta import com.google.common.annotations.VisibleForTesting import com.ichi2.anki.lint.utils.Constants import org.jetbrains.uast.UClass -import java.util.* +import java.util.EnumSet import java.util.regex.Pattern @Beta diff --git a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/NonPositionalFormatSubstitutions.kt b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/NonPositionalFormatSubstitutions.kt index ba6079cde5d6..57b3f1428681 100644 --- a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/NonPositionalFormatSubstitutions.kt +++ b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/NonPositionalFormatSubstitutions.kt @@ -31,7 +31,6 @@ import com.ichi2.anki.lint.utils.StringFormatDetector import com.ichi2.anki.lint.utils.childrenSequence import org.w3c.dom.Element import org.w3c.dom.Node -import java.lang.IllegalStateException /** * Fix for "Multiple substitutions specified in non-positional format" diff --git a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/PrintStackTraceUsage.kt b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/PrintStackTraceUsage.kt index 472329ca7541..ba935838175a 100644 --- a/lint-rules/src/main/java/com/ichi2/anki/lint/rules/PrintStackTraceUsage.kt +++ b/lint-rules/src/main/java/com/ichi2/anki/lint/rules/PrintStackTraceUsage.kt @@ -16,7 +16,13 @@ @file:Suppress("UnstableApiUsage") package com.ichi2.anki.lint.rules -import com.android.tools.lint.detector.api.* +import com.android.tools.lint.detector.api.Detector +import com.android.tools.lint.detector.api.Implementation +import com.android.tools.lint.detector.api.Issue +import com.android.tools.lint.detector.api.JavaContext +import com.android.tools.lint.detector.api.LintFix +import com.android.tools.lint.detector.api.Scope +import com.android.tools.lint.detector.api.SourceCodeScanner import com.google.common.annotations.VisibleForTesting import com.ichi2.anki.lint.utils.Constants import com.intellij.psi.PsiMethod diff --git a/lint-rules/src/main/java/com/ichi2/anki/lint/utils/Aapt2Util.kt b/lint-rules/src/main/java/com/ichi2/anki/lint/utils/Aapt2Util.kt index 4e34605ab773..efd0c39ca825 100644 --- a/lint-rules/src/main/java/com/ichi2/anki/lint/utils/Aapt2Util.kt +++ b/lint-rules/src/main/java/com/ichi2/anki/lint/utils/Aapt2Util.kt @@ -37,8 +37,10 @@ package com.ichi2.anki.lint.utils +import com.ichi2.anki.lint.utils.Aapt2Util.FormatData import com.ichi2.anki.lint.utils.Aapt2Util.FormatData.DateFormatData import com.ichi2.anki.lint.utils.Aapt2Util.FormatData.StringFormatData +import com.ichi2.anki.lint.utils.Aapt2Util.verifyJavaStringFormat /** * CHANGELOG: diff --git a/lint-rules/src/main/java/com/ichi2/anki/lint/utils/StringFormatDetector.kt b/lint-rules/src/main/java/com/ichi2/anki/lint/utils/StringFormatDetector.kt index f02beb044370..6e7871ea9f8a 100644 --- a/lint-rules/src/main/java/com/ichi2/anki/lint/utils/StringFormatDetector.kt +++ b/lint-rules/src/main/java/com/ichi2/anki/lint/utils/StringFormatDetector.kt @@ -35,7 +35,6 @@ package com.ichi2.anki.lint.utils import org.w3c.dom.Node -import java.lang.StringBuilder object StringFormatDetector { fun addText(sb: StringBuilder, node: Node) { diff --git a/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DirectCalendarInstanceUsageTest.kt b/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DirectCalendarInstanceUsageTest.kt index ba355f56ab23..5dad78a35c3a 100644 --- a/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DirectCalendarInstanceUsageTest.kt +++ b/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DirectCalendarInstanceUsageTest.kt @@ -28,7 +28,19 @@ class DirectCalendarInstanceUsageTest { @Language("JAVA") private val stubCalendar = """ package java.util; - + +import java.io.File +import java.util.Locale +import java.util.LinkedList +import java.util.Random +import java.util.Collections +import java.util.Arrays +import java.util.TreeSet +import java.util.LinkedList +import java.util.TreeMap +import java.util.LinkedListWeakHashMap +import java.util.LinkedList +import com.ichi2.utils.KotlinCleanup public class Calendar { public static Calendar getInstance() { @@ -40,7 +52,19 @@ public class Calendar { @Language("JAVA") private val javaFileToBeTested = """ package com.ichi2.anki.lint.rules; - + +import java.io.File +import java.util.Locale +import java.util.LinkedList +import java.util.Random +import java.util.Collections +import java.util.Arrays +import java.util.TreeSet +import java.util.LinkedList +import java.util.TreeMap +import java.util.LinkedListWeakHashMap +import java.util.LinkedList +import com.ichi2.utils.KotlinCleanup import java.util.Calendar; public class TestJavaClass { @@ -55,7 +79,19 @@ public class TestJavaClass { @Language("JAVA") private val javaFileWithTime = """ package com.ichi2.anki.lint.rules; - + +import java.io.File +import java.util.Locale +import java.util.LinkedList +import java.util.Random +import java.util.Collections +import java.util.Arrays +import java.util.TreeSet +import java.util.LinkedList +import java.util.TreeMap +import java.util.LinkedListWeakHashMap +import java.util.LinkedList +import com.ichi2.utils.KotlinCleanup import java.util.Calendar; public abstract class Time { diff --git a/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DirectDateInstantiationTest.kt b/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DirectDateInstantiationTest.kt index 830d2522af9c..3a3a089d38bf 100644 --- a/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DirectDateInstantiationTest.kt +++ b/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DirectDateInstantiationTest.kt @@ -28,7 +28,19 @@ class DirectDateInstantiationTest { @Language("JAVA") private val stubDate = """ package java.util; - + +import java.io.File +import java.util.Locale +import java.util.LinkedList +import java.util.Random +import java.util.Collections +import java.util.Arrays +import java.util.TreeSet +import java.util.LinkedList +import java.util.TreeMap +import java.util.LinkedListWeakHashMap +import java.util.LinkedList +import com.ichi2.utils.KotlinCleanup public class Date { public Date() { @@ -43,7 +55,19 @@ public class Date { @Language("JAVA") private val javaFileToBeTested = """ package com.ichi2.anki.lint.rules; - + +import java.io.File +import java.util.Locale +import java.util.LinkedList +import java.util.Random +import java.util.Collections +import java.util.Arrays +import java.util.TreeSet +import java.util.LinkedList +import java.util.TreeMap +import java.util.LinkedListWeakHashMap +import java.util.LinkedList +import com.ichi2.utils.KotlinCleanup import java.util.Date; public class TestJavaClass { @@ -57,7 +81,19 @@ public class TestJavaClass { @Language("JAVA") private val javaFileWithTime = """ package com.ichi2.anki.lint.rules; - + +import java.io.File +import java.util.Locale +import java.util.LinkedList +import java.util.Random +import java.util.Collections +import java.util.Arrays +import java.util.TreeSet +import java.util.LinkedList +import java.util.TreeMap +import java.util.LinkedListWeakHashMap +import java.util.LinkedList +import com.ichi2.utils.KotlinCleanup import java.util.Date; public abstract class Time { @@ -71,7 +107,19 @@ public abstract class Time { @Language("JAVA") private val javaFileUsingDateWithLong = """ package com.ichi2.anki.lint.rules; - + +import java.io.File +import java.util.Locale +import java.util.LinkedList +import java.util.Random +import java.util.Collections +import java.util.Arrays +import java.util.TreeSet +import java.util.LinkedList +import java.util.TreeMap +import java.util.LinkedListWeakHashMap +import java.util.LinkedList +import com.ichi2.utils.KotlinCleanup import java.util.Date; public class TestJavaClass { diff --git a/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DirectGregorianInstantiationTest.kt b/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DirectGregorianInstantiationTest.kt index 28a362ab63d1..d21a45e2ff78 100644 --- a/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DirectGregorianInstantiationTest.kt +++ b/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DirectGregorianInstantiationTest.kt @@ -28,7 +28,19 @@ class DirectGregorianInstantiationTest { @Language("JAVA") private val stubZoned = """ package java.time; - + +import java.io.File +import java.util.Locale +import java.util.LinkedList +import java.util.Random +import java.util.Collections +import java.util.Arrays +import java.util.TreeSet +import java.util.LinkedList +import java.util.TreeMap +import java.util.LinkedListWeakHashMap +import java.util.LinkedList +import com.ichi2.utils.KotlinCleanup public class ZonedDateTime { @@ -41,7 +53,19 @@ public class ZonedDateTime { @Language("JAVA") private val stubGregorian = """ package java.util; - + +import java.io.File +import java.util.Locale +import java.util.LinkedList +import java.util.Random +import java.util.Collections +import java.util.Arrays +import java.util.TreeSet +import java.util.LinkedList +import java.util.TreeMap +import java.util.LinkedListWeakHashMap +import java.util.LinkedList +import com.ichi2.utils.KotlinCleanup import java.time.ZonedDateTime; public class GregorianCalendar { @@ -59,7 +83,19 @@ public class GregorianCalendar { @Language("JAVA") private val javaFileWithFromCall = """ package com.ichi2.anki.lint.rules; - + +import java.io.File +import java.util.Locale +import java.util.LinkedList +import java.util.Random +import java.util.Collections +import java.util.Arrays +import java.util.TreeSet +import java.util.LinkedList +import java.util.TreeMap +import java.util.LinkedListWeakHashMap +import java.util.LinkedList +import com.ichi2.utils.KotlinCleanup import java.util.GregorianCalendar; public class TestJavaClass { @@ -73,7 +109,19 @@ public class TestJavaClass { @Language("JAVA") private val javaFileWithConstructorInvocation = """ package com.ichi2.anki.lint.rules; - + +import java.io.File +import java.util.Locale +import java.util.LinkedList +import java.util.Random +import java.util.Collections +import java.util.Arrays +import java.util.TreeSet +import java.util.LinkedList +import java.util.TreeMap +import java.util.LinkedListWeakHashMap +import java.util.LinkedList +import com.ichi2.utils.KotlinCleanup import java.util.GregorianCalendar; public class TestJavaClass { @@ -87,7 +135,19 @@ public class TestJavaClass { @Language("JAVA") private val javaFileWithTime = """ package com.ichi2.anki.lint.rules; - + +import java.io.File +import java.util.Locale +import java.util.LinkedList +import java.util.Random +import java.util.Collections +import java.util.Arrays +import java.util.TreeSet +import java.util.LinkedList +import java.util.TreeMap +import java.util.LinkedListWeakHashMap +import java.util.LinkedList +import com.ichi2.utils.KotlinCleanup import java.util.GregorianCalendar; public class Time { diff --git a/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DirectSnackbarMakeUsageTest.kt b/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DirectSnackbarMakeUsageTest.kt index 7bd99fd7044f..5f34e0550d0c 100644 --- a/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DirectSnackbarMakeUsageTest.kt +++ b/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DirectSnackbarMakeUsageTest.kt @@ -28,7 +28,19 @@ class DirectSnackbarMakeUsageTest { @Language("JAVA") private val stubSnackbar = """ package com.google.android.material.snackbar; -public class Snackbar { + +import java.io.File +import java.util.Locale +import java.util.LinkedList +import java.util.Random +import java.util.Collections +import java.util.Arrays +import java.util.TreeSet +import java.util.LinkedList +import java.util.TreeMap +import java.util.LinkedListWeakHashMap +import java.util.LinkedList +import com.ichi2.utils.KotlinCleanuppublic class Snackbar { public static Snackbar make(View view, CharSequence text, @@ -41,7 +53,19 @@ public class Snackbar { @Language("JAVA") private val javaFileToBeTested = """ package com.ichi2.anki.lint.rules; - + +import java.io.File +import java.util.Locale +import java.util.LinkedList +import java.util.Random +import java.util.Collections +import java.util.Arrays +import java.util.TreeSet +import java.util.LinkedList +import java.util.TreeMap +import java.util.LinkedListWeakHashMap +import java.util.LinkedList +import com.ichi2.utils.KotlinCleanup import com.google.android.material.snackbar.Snackbar; public class TestJavaClass { @@ -56,7 +80,19 @@ public class TestJavaClass { @Language("JAVA") private val javaFileWithSnackbarsKt = """ package com.ichi2.anki.lint.rules; - + +import java.io.File +import java.util.Locale +import java.util.LinkedList +import java.util.Random +import java.util.Collections +import java.util.Arrays +import java.util.TreeSet +import java.util.LinkedList +import java.util.TreeMap +import java.util.LinkedListWeakHashMap +import java.util.LinkedList +import com.ichi2.utils.KotlinCleanup import com.google.android.material.snackbar.Snackbar; public class SnackbarsKt { diff --git a/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DirectSystemCurrentTimeMillisUsageTest.kt b/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DirectSystemCurrentTimeMillisUsageTest.kt index d7d4d59976e9..df8fe2f5e40d 100644 --- a/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DirectSystemCurrentTimeMillisUsageTest.kt +++ b/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DirectSystemCurrentTimeMillisUsageTest.kt @@ -15,17 +15,29 @@ ****************************************************************************************/ package com.ichi2.anki.lint.rules -import com.android.tools.lint.checks.infrastructure.TestFile.JavaTestFile.* -import com.android.tools.lint.checks.infrastructure.TestLintTask.* +import com.android.tools.lint.checks.infrastructure.TestFile.JavaTestFile.create +import com.android.tools.lint.checks.infrastructure.TestLintTask.lint import org.intellij.lang.annotations.Language -import org.junit.Assert.* +import org.junit.Assert.assertTrue import org.junit.Test class DirectSystemCurrentTimeMillisUsageTest { @Language("JAVA") private val stubSystem = """ package java.lang; - + +import java.io.File +import java.util.Locale +import java.util.LinkedList +import java.util.Random +import java.util.Collections +import java.util.Arrays +import java.util.TreeSet +import java.util.LinkedList +import java.util.TreeMap +import java.util.LinkedListWeakHashMap +import java.util.LinkedList +import com.ichi2.utils.KotlinCleanup public class System { public static long currentTimeMillis() { @@ -37,7 +49,19 @@ public class System { @Language("JAVA") private val javaFileToBeTested = """ package com.ichi2.anki.lint.rules; - + +import java.io.File +import java.util.Locale +import java.util.LinkedList +import java.util.Random +import java.util.Collections +import java.util.Arrays +import java.util.TreeSet +import java.util.LinkedList +import java.util.TreeMap +import java.util.LinkedListWeakHashMap +import java.util.LinkedList +import com.ichi2.utils.KotlinCleanup import java.lang.System; public class TestJavaClass { @@ -51,7 +75,19 @@ public class TestJavaClass { @Language("JAVA") private val javaFileWithSystemTime = """ package com.ichi2.anki.lint.rules; - + +import java.io.File +import java.util.Locale +import java.util.LinkedList +import java.util.Random +import java.util.Collections +import java.util.Arrays +import java.util.TreeSet +import java.util.LinkedList +import java.util.TreeMap +import java.util.LinkedListWeakHashMap +import java.util.LinkedList +import com.ichi2.utils.KotlinCleanup import java.lang.System; public class SystemTime { diff --git a/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DirectSystemTimeInstantiationTest.kt b/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DirectSystemTimeInstantiationTest.kt index bb4ddebd0464..60a125d80a1d 100644 --- a/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DirectSystemTimeInstantiationTest.kt +++ b/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DirectSystemTimeInstantiationTest.kt @@ -15,17 +15,29 @@ ****************************************************************************************/ package com.ichi2.anki.lint.rules -import com.android.tools.lint.checks.infrastructure.TestFile.JavaTestFile.* -import com.android.tools.lint.checks.infrastructure.TestLintTask.* +import com.android.tools.lint.checks.infrastructure.TestFile.JavaTestFile.create +import com.android.tools.lint.checks.infrastructure.TestLintTask.lint import org.intellij.lang.annotations.Language -import org.junit.Assert.* +import org.junit.Assert.assertTrue import org.junit.Test class DirectSystemTimeInstantiationTest { @Language("JAVA") private val stubTime = """ package com.ichi2.libanki.utils; - + +import java.io.File +import java.util.Locale +import java.util.LinkedList +import java.util.Random +import java.util.Collections +import java.util.Arrays +import java.util.TreeSet +import java.util.LinkedList +import java.util.TreeMap +import java.util.LinkedListWeakHashMap +import java.util.LinkedList +import com.ichi2.utils.KotlinCleanup public abstract class Time { } @@ -34,7 +46,19 @@ public abstract class Time { @Language("JAVA") private val stubSystemTime = """ package com.ichi2.libanki.utils; - + +import java.io.File +import java.util.Locale +import java.util.LinkedList +import java.util.Random +import java.util.Collections +import java.util.Arrays +import java.util.TreeSet +import java.util.LinkedList +import java.util.TreeMap +import java.util.LinkedListWeakHashMap +import java.util.LinkedList +import com.ichi2.utils.KotlinCleanup public class SystemTime extends Time { public SystemTime() { @@ -46,7 +70,19 @@ public class SystemTime extends Time { @Language("JAVA") private val javaFileToBeTested = """ package com.ichi2.anki.lint.rules; - + +import java.io.File +import java.util.Locale +import java.util.LinkedList +import java.util.Random +import java.util.Collections +import java.util.Arrays +import java.util.TreeSet +import java.util.LinkedList +import java.util.TreeMap +import java.util.LinkedListWeakHashMap +import java.util.LinkedList +import com.ichi2.utils.KotlinCleanup import com.ichi2.libanki.utils.SystemTime; public class TestJavaClass { @@ -60,7 +96,19 @@ public class TestJavaClass { @Language("JAVA") private val javaFileWithStorage = """ package com.ichi2.anki.lint.rules; - + +import java.io.File +import java.util.Locale +import java.util.LinkedList +import java.util.Random +import java.util.Collections +import java.util.Arrays +import java.util.TreeSet +import java.util.LinkedList +import java.util.TreeMap +import java.util.LinkedListWeakHashMap +import java.util.LinkedList +import com.ichi2.utils.KotlinCleanup import com.ichi2.libanki.utils.SystemTime; public class Storage { @@ -74,7 +122,19 @@ public class Storage { @Language("JAVA") private val javaFileWithCollectionHelper = """ package com.ichi2.anki.lint.rules; - + +import java.io.File +import java.util.Locale +import java.util.LinkedList +import java.util.Random +import java.util.Collections +import java.util.Arrays +import java.util.TreeSet +import java.util.LinkedList +import java.util.TreeMap +import java.util.LinkedListWeakHashMap +import java.util.LinkedList +import com.ichi2.utils.KotlinCleanup import com.ichi2.libanki.utils.SystemTime; public class CollectionHelper { diff --git a/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DirectToastMakeTextUsageTest.kt b/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DirectToastMakeTextUsageTest.kt index 73d922c8a4c8..5e24c03701c6 100644 --- a/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DirectToastMakeTextUsageTest.kt +++ b/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DirectToastMakeTextUsageTest.kt @@ -15,17 +15,29 @@ */ package com.ichi2.anki.lint.rules -import com.android.tools.lint.checks.infrastructure.TestFile.JavaTestFile.* -import com.android.tools.lint.checks.infrastructure.TestLintTask.* +import com.android.tools.lint.checks.infrastructure.TestFile.JavaTestFile.create +import com.android.tools.lint.checks.infrastructure.TestLintTask.lint import org.intellij.lang.annotations.Language -import org.junit.Assert.* +import org.junit.Assert.assertTrue import org.junit.Test class DirectToastMakeTextUsageTest { @Language("JAVA") private val stubToast = """ package android.widget; -public class Toast { + +import java.io.File +import java.util.Locale +import java.util.LinkedList +import java.util.Random +import java.util.Collections +import java.util.Arrays +import java.util.TreeSet +import java.util.LinkedList +import java.util.TreeMap +import java.util.LinkedListWeakHashMap +import java.util.LinkedList +import com.ichi2.utils.KotlinCleanuppublic class Toast { public static Toast makeText(Context context, String text, @@ -38,7 +50,19 @@ public class Toast { @Language("JAVA") private val javaFileToBeTested = """ package com.ichi2.anki.lint.rules; - + +import java.io.File +import java.util.Locale +import java.util.LinkedList +import java.util.Random +import java.util.Collections +import java.util.Arrays +import java.util.TreeSet +import java.util.LinkedList +import java.util.TreeMap +import java.util.LinkedListWeakHashMap +import java.util.LinkedList +import com.ichi2.utils.KotlinCleanup import android.widget.Toast; public class TestJavaClass { @@ -52,7 +76,19 @@ public class TestJavaClass { @Language("JAVA") private val javaFileWithUIUtils = """ package com.ichi2.anki.lint.rules; - + +import java.io.File +import java.util.Locale +import java.util.LinkedList +import java.util.Random +import java.util.Collections +import java.util.Arrays +import java.util.TreeSet +import java.util.LinkedList +import java.util.TreeMap +import java.util.LinkedListWeakHashMap +import java.util.LinkedList +import com.ichi2.utils.KotlinCleanup import android.widget.Toast; public class UIUtils { diff --git a/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DuplicateCrowdInStringsTest.kt b/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DuplicateCrowdInStringsTest.kt index a5ff3c313308..06b34892a6be 100644 --- a/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DuplicateCrowdInStringsTest.kt +++ b/lint-rules/src/test/java/com/ichi2/anki/lint/rules/DuplicateCrowdInStringsTest.kt @@ -15,8 +15,8 @@ */ package com.ichi2.anki.lint.rules -import com.android.tools.lint.checks.infrastructure.TestFiles.* -import com.android.tools.lint.checks.infrastructure.TestLintTask.* +import com.android.tools.lint.checks.infrastructure.TestFiles.xml +import com.android.tools.lint.checks.infrastructure.TestLintTask.lint import org.intellij.lang.annotations.Language import org.junit.Test