0
0
mirror of https://github.com/ankidroid/Anki-Android.git synced 2024-09-19 11:32:15 +02:00

Remove wildcard from imports

This commit is contained in:
andriusezerskis 2024-07-15 10:35:19 +02:00 committed by lukstbit
parent 1a3c1a1ab0
commit c63e93a09f
207 changed files with 1279 additions and 350 deletions

View File

@ -22,10 +22,16 @@ import androidx.recyclerview.widget.RecyclerView
import androidx.test.espresso.Espresso.closeSoftKeyboard
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.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 com.ichi2.anki.TestUtils.activityInstance
import com.ichi2.anki.TestUtils.clickChildViewWithId

View File

@ -23,7 +23,8 @@ import androidx.test.ext.junit.rules.ActivityScenarioRule
import androidx.test.platform.app.InstrumentationRegistry
import com.ichi2.anki.testutil.GrantStoragePermission
import com.ichi2.utils.KotlinCleanup
import org.hamcrest.Matchers.*
import org.hamcrest.Matchers.equalTo
import org.hamcrest.Matchers.not
import org.junit.Assume
import org.junit.Before
import org.junit.Rule

View File

@ -20,7 +20,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import com.ichi2.anki.tests.InstrumentedTest
import com.ichi2.compat.CompatHelper
import org.hamcrest.CoreMatchers.equalTo
import org.hamcrest.MatcherAssert.*
import org.hamcrest.MatcherAssert.assertThat
import org.junit.Test
import org.junit.runner.RunWith
import java.util.Locale

View File

@ -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

View File

@ -30,24 +30,36 @@ import com.ichi2.anki.provider.pureAnswer
import com.ichi2.anki.testutil.DatabaseUtils.cursorFillWindow
import com.ichi2.anki.testutil.GrantStoragePermission.storagePermission
import com.ichi2.anki.testutil.grantPermissions
import com.ichi2.libanki.*
import com.ichi2.libanki.Card
import com.ichi2.libanki.Consts
import com.ichi2.libanki.Decks
import com.ichi2.libanki.Note
import com.ichi2.libanki.NotetypeJson
import com.ichi2.libanki.Notetypes
import com.ichi2.libanki.StdModels
import com.ichi2.libanki.Utils
import com.ichi2.libanki.exception.ConfirmModSchemaException
import com.ichi2.libanki.sched.Scheduler
import com.ichi2.testutils.common.assertThrows
import com.ichi2.utils.KotlinCleanup
import com.ichi2.utils.emptyStringArray
import net.ankiweb.rsdroid.exceptions.BackendNotFoundException
import org.hamcrest.MatcherAssert.*
import org.hamcrest.Matchers.*
import org.hamcrest.MatcherAssert.assertThat
import org.hamcrest.Matchers.containsString
import org.hamcrest.Matchers.equalTo
import org.hamcrest.Matchers.greaterThan
import org.hamcrest.Matchers.greaterThanOrEqualTo
import org.json.JSONObject
import org.junit.*
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.Assume.assumeTrue
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import timber.log.Timber
import java.util.*
import kotlin.test.assertNotNull
import kotlin.test.junit.JUnitAsserter.assertNotNull

View File

@ -31,7 +31,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() {

View File

@ -22,7 +22,10 @@ import com.ichi2.anki.testutil.GrantStoragePermission
import com.ichi2.libanki.Collection
import com.ichi2.libanki.Media
import com.ichi2.libanki.exception.EmptyMediaException
import org.junit.*
import org.junit.After
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

View File

@ -15,7 +15,7 @@
*/
package com.ichi2.anki.testutil
import java.util.*
import java.util.Locale
object TestEnvironment {
fun isDisplayingDefaultEnglishStrings(): Boolean {

View File

@ -22,21 +22,49 @@ 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.graphics.Bitmap
import android.graphics.Color
import android.hardware.SensorManager
import android.net.Uri
import android.os.*
import android.view.*
import android.os.Build
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.os.SystemClock
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.PermissionRequest
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.FrameLayout
import android.widget.LinearLayout
import android.widget.RelativeLayout
import androidx.activity.result.ActivityResult
import androidx.activity.result.ActivityResultCallback
import androidx.activity.result.contract.ActivityResultContracts
@ -55,9 +83,23 @@ import com.google.android.material.snackbar.Snackbar
import com.ichi2.anim.ActivityTransitionAnimation
import com.ichi2.anki.CollectionManager.TR
import com.ichi2.anki.CollectionManager.withCol
import com.ichi2.anki.cardviewer.*
import com.ichi2.anki.cardviewer.AndroidCardRenderContext
import com.ichi2.anki.cardviewer.AndroidCardRenderContext.Companion.createInstance
import com.ichi2.anki.cardviewer.CardMediaPlayer
import com.ichi2.anki.cardviewer.Gesture
import com.ichi2.anki.cardviewer.GestureProcessor
import com.ichi2.anki.cardviewer.JavascriptEvaluator
import com.ichi2.anki.cardviewer.MediaErrorHandler
import com.ichi2.anki.cardviewer.OnRenderProcessGoneDelegate
import com.ichi2.anki.cardviewer.RenderedCard
import com.ichi2.anki.cardviewer.SingleCardSide
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.cardviewer.ViewerRefresh
import com.ichi2.anki.cardviewer.handledGamepadKeyDown
import com.ichi2.anki.cardviewer.handledGamepadKeyUp
import com.ichi2.anki.dialogs.TtsVoicesDialogFragment
import com.ichi2.anki.dialogs.tags.TagsDialog
import com.ichi2.anki.dialogs.tags.TagsDialogFactory
@ -70,10 +112,16 @@ import com.ichi2.anki.pages.CongratsPage
import com.ichi2.anki.pages.PostRequestHandler
import com.ichi2.anki.preferences.sharedPrefs
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.CardSide
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.MotionEventHandler
import com.ichi2.anki.reviewer.PreviousAnswerIndicator
import com.ichi2.anki.servicelayer.LanguageHintService.applyLanguageHint
import com.ichi2.anki.servicelayer.NoteService.isMarked
import com.ichi2.anki.services.migrationServiceWhileStartedOrNull
@ -86,26 +134,45 @@ import com.ichi2.annotations.NeedsTest
import com.ichi2.compat.CompatHelper.Companion.registerReceiverCompat
import com.ichi2.compat.CompatHelper.Companion.resolveActivityCompat
import com.ichi2.compat.ResolveInfoFlagsCompat
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.getAvTag
import com.ichi2.libanki.SoundOrVideoTag
import com.ichi2.libanki.TTSTag
import com.ichi2.libanki.Utils
import com.ichi2.libanki.note
import com.ichi2.libanki.renderOutput
import com.ichi2.libanki.setTagsFromStr
import com.ichi2.libanki.undoableOp
import com.ichi2.themes.Themes
import com.ichi2.themes.Themes.getResFromAttr
import com.ichi2.ui.FixedEditText
import com.ichi2.utils.*
import com.ichi2.utils.BlocksSchemaUpgrade
import com.ichi2.utils.ClipboardUtil.getText
import com.ichi2.utils.HandlerUtils.executeFunctionWithDelay
import com.ichi2.utils.HandlerUtils.newHandler
import com.ichi2.utils.HashUtil.hashSetInit
import com.ichi2.utils.KotlinCleanup
import com.ichi2.utils.Stopwatch
import com.ichi2.utils.WebViewDebugging.initializeDebugging
import com.ichi2.utils.message
import com.ichi2.utils.negativeButton
import com.ichi2.utils.positiveButton
import com.ichi2.utils.show
import com.ichi2.utils.title
import com.squareup.seismic.ShakeDetector
import kotlinx.coroutines.Job
import kotlinx.coroutines.runBlocking
import timber.log.Timber
import java.io.*
import java.io.File
import java.io.UnsupportedEncodingException
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

View File

@ -13,7 +13,10 @@ import android.media.AudioManager
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.view.*
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
@ -27,7 +30,9 @@ import androidx.appcompat.app.AppCompatDelegate
import androidx.appcompat.widget.ThemeUtils
import androidx.appcompat.widget.Toolbar
import androidx.browser.customtabs.CustomTabColorSchemeParams
import androidx.browser.customtabs.CustomTabsIntent.*
import androidx.browser.customtabs.CustomTabsIntent.COLOR_SCHEME_DARK
import androidx.browser.customtabs.CustomTabsIntent.COLOR_SCHEME_LIGHT
import androidx.browser.customtabs.CustomTabsIntent.COLOR_SCHEME_SYSTEM
import androidx.core.app.NotificationCompat
import androidx.core.app.PendingIntentCompat
import androidx.fragment.app.DialogFragment
@ -36,7 +41,8 @@ import androidx.fragment.app.FragmentManager
import com.google.android.material.color.MaterialColors
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.NONE
import com.ichi2.anki.analytics.UsageAnalytics
import com.ichi2.anki.dialogs.AsyncDialogFragment
import com.ichi2.anki.dialogs.DialogHandler

View File

@ -40,7 +40,10 @@ import java.text.ParseException
import java.text.SimpleDateFormat
import java.time.LocalDate
import java.time.temporal.ChronoUnit
import java.util.*
import java.util.Calendar
import java.util.Date
import java.util.Locale
import java.util.UnknownFormatConversionException
import java.util.zip.ZipEntry
import java.util.zip.ZipOutputStream

View File

@ -18,14 +18,32 @@
package com.ichi2.anki
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.res.Configuration
import android.os.Bundle
import android.os.SystemClock
import android.text.TextUtils
import android.util.TypedValue
import android.view.*
import android.widget.*
import android.view.KeyEvent
import android.view.LayoutInflater
import android.view.Menu
import android.view.MenuItem
import android.view.SubMenu
import android.view.View
import android.view.ViewGroup
import android.view.WindowManager
import android.widget.AbsListView
import android.widget.AdapterView
import android.widget.ArrayAdapter
import android.widget.BaseAdapter
import android.widget.CheckBox
import android.widget.ListView
import android.widget.Spinner
import android.widget.TextView
import androidx.activity.result.ActivityResult
import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult
import androidx.annotation.CheckResult
@ -47,19 +65,24 @@ import com.ichi2.anki.browser.CardBrowserColumn.Companion.COLUMN1_KEYS
import com.ichi2.anki.browser.CardBrowserColumn.Companion.COLUMN2_KEYS
import com.ichi2.anki.browser.CardBrowserLaunchOptions
import com.ichi2.anki.browser.CardBrowserViewModel
import com.ichi2.anki.browser.CardBrowserViewModel.*
import com.ichi2.anki.browser.CardBrowserViewModel.SearchState
import com.ichi2.anki.browser.PreviewerIdsFile
import com.ichi2.anki.browser.SaveSearchResult
import com.ichi2.anki.browser.SharedPreferencesLastDeckIdRepository
import com.ichi2.anki.browser.getLabel
import com.ichi2.anki.browser.toCardBrowserLaunchOptions
import com.ichi2.anki.common.utils.android.isRobolectric
import com.ichi2.anki.dialogs.*
import com.ichi2.anki.dialogs.BrowserOptionsDialog
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
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.IntegerDialog
import com.ichi2.anki.dialogs.SimpleMessageDialog
import com.ichi2.anki.dialogs.tags.TagsDialog
import com.ichi2.anki.dialogs.tags.TagsDialogFactory
import com.ichi2.anki.dialogs.tags.TagsDialogListener
@ -69,7 +92,8 @@ import com.ichi2.anki.export.ExportDialogsFactory
import com.ichi2.anki.export.ExportDialogsFactoryProvider
import com.ichi2.anki.model.CardStateFilter
import com.ichi2.anki.model.CardsOrNotes
import com.ichi2.anki.model.CardsOrNotes.*
import com.ichi2.anki.model.CardsOrNotes.CARDS
import com.ichi2.anki.model.CardsOrNotes.NOTES
import com.ichi2.anki.model.SortType
import com.ichi2.anki.noteeditor.EditCardDestination
import com.ichi2.anki.noteeditor.toIntent
@ -91,16 +115,32 @@ import com.ichi2.anki.utils.ext.ifNotZero
import com.ichi2.anki.utils.roundedTimeSpanUnformatted
import com.ichi2.anki.widgets.DeckDropDownAdapter.SubtitleListener
import com.ichi2.annotations.NeedsTest
import com.ichi2.async.*
import com.ichi2.async.renderBrowserQA
import com.ichi2.compat.CompatHelper.Companion.registerReceiverCompat
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.DeckId
import com.ichi2.libanki.DeckNameId
import com.ichi2.libanki.NoteId
import com.ichi2.libanki.SortOrder
import com.ichi2.libanki.Sound
import com.ichi2.libanki.TemplateManager
import com.ichi2.libanki.Utils
import com.ichi2.libanki.setTagsFromStr
import com.ichi2.libanki.stripAvRefs
import com.ichi2.libanki.undoableOp
import com.ichi2.libanki.utils.TimeManager
import com.ichi2.ui.CardBrowserSearchView
import com.ichi2.ui.FixedTextView
import com.ichi2.utils.*
import com.ichi2.utils.HandlerUtils
import com.ichi2.utils.HandlerUtils.postDelayedOnNewHandler
import com.ichi2.utils.KotlinCleanup
import com.ichi2.utils.LanguageUtil
import com.ichi2.utils.TagsUtil.getUpdatedTags
import com.ichi2.utils.increaseHorizontalPaddingOfOverflowMenuIcons
import com.ichi2.widget.WidgetStatus.updateInBackground
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
@ -110,7 +150,6 @@ import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withContext
import net.ankiweb.rsdroid.RustCleanup
import timber.log.Timber
import java.util.*
import kotlin.math.abs
import kotlin.math.ceil

View File

@ -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
@ -58,8 +65,12 @@ import com.ichi2.anki.snackbar.showSnackbar
import com.ichi2.anki.utils.ext.isImageOcclusion
import com.ichi2.annotations.NeedsTest
import com.ichi2.compat.CompatHelper.Companion.getSerializableCompat
import com.ichi2.libanki.*
import com.ichi2.libanki.Collection
import com.ichi2.libanki.Note
import com.ichi2.libanki.NoteId
import com.ichi2.libanki.NoteTypeId
import com.ichi2.libanki.NotetypeJson
import com.ichi2.libanki.Notetypes
import com.ichi2.libanki.Notetypes.Companion.NOT_FOUND_NOTE_TYPE
import com.ichi2.libanki.exception.ConfirmModSchemaException
import com.ichi2.ui.FixedEditText

View File

@ -33,10 +33,14 @@ import com.ichi2.libanki.utils.TimeManager
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.*
object CrashReportService {

View File

@ -26,7 +26,9 @@ package com.ichi2.anki
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.Intent.*
import android.content.Intent.ACTION_TIMEZONE_CHANGED
import android.content.Intent.ACTION_TIME_CHANGED
import android.content.Intent.ACTION_TIME_TICK
import android.content.IntentFilter
import androidx.core.content.ContextCompat
import androidx.core.content.ContextCompat.RECEIVER_EXPORTED

View File

@ -26,16 +26,31 @@
package com.ichi2.anki
import android.app.Activity
import android.content.*
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.content.SharedPreferences
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.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.widget.*
import android.view.ViewPropertyAnimator
import android.widget.Filterable
import android.widget.ImageButton
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.RelativeLayout
import android.widget.TextView
import androidx.activity.result.ActivityResult
import androidx.activity.result.ActivityResultCallback
import androidx.activity.result.ActivityResultLauncher
@ -73,25 +88,44 @@ import com.google.android.material.progressindicator.CircularProgressIndicator
import com.google.android.material.progressindicator.LinearProgressIndicator
import com.google.android.material.snackbar.BaseTransientBottomBar
import com.google.android.material.snackbar.Snackbar
import com.ichi2.anim.ActivityTransitionAnimation.Direction.*
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.DISK_FULL
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.StudyOptionsFragment.StudyOptionsListener
import com.ichi2.anki.analytics.UsageAnalytics
import com.ichi2.anki.deckpicker.BITMAP_BYTES_PER_PIXEL
import com.ichi2.anki.deckpicker.BackgroundImage
import com.ichi2.anki.dialogs.*
import com.ichi2.anki.dialogs.AsyncDialogFragment
import com.ichi2.anki.dialogs.BackupPromptDialog
import com.ichi2.anki.dialogs.ConfirmationDialog
import com.ichi2.anki.dialogs.CreateDeckDialog
import com.ichi2.anki.dialogs.DatabaseErrorDialog
import com.ichi2.anki.dialogs.DatabaseErrorDialog.DatabaseErrorDialogType
import com.ichi2.anki.dialogs.DeckPickerAnalyticsOptInDialog
import com.ichi2.anki.dialogs.DeckPickerBackupNoSpaceLeftDialog
import com.ichi2.anki.dialogs.DeckPickerContextMenu
import com.ichi2.anki.dialogs.DeckPickerContextMenu.DeckPickerContextMenuOption
import com.ichi2.anki.dialogs.DeckPickerNoSpaceLeftDialog
import com.ichi2.anki.dialogs.DialogHandlerMessage
import com.ichi2.anki.dialogs.EditDeckDescriptionDialog
import com.ichi2.anki.dialogs.ImportDialog.ImportDialogListener
import com.ichi2.anki.dialogs.ImportFileSelectionFragment.ApkgImportResultLauncherProvider
import com.ichi2.anki.dialogs.ImportFileSelectionFragment.CsvImportResultLauncherProvider
import com.ichi2.anki.dialogs.MediaCheckDialog
import com.ichi2.anki.dialogs.MediaCheckDialog.MediaCheckDialogListener
import com.ichi2.anki.dialogs.MigrationProgressDialogFragment
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.addScopedStorageLearnMoreLinkAndShow
import com.ichi2.anki.dialogs.customstudy.CustomStudyDialog
import com.ichi2.anki.dialogs.customstudy.CustomStudyDialog.CustomStudyListener
import com.ichi2.anki.dialogs.customstudy.CustomStudyDialogFactory
@ -108,9 +142,10 @@ import com.ichi2.anki.pages.CongratsPage.Companion.onDeckCompleted
import com.ichi2.anki.preferences.AdvancedSettingsFragment
import com.ichi2.anki.preferences.sharedPrefs
import com.ichi2.anki.receiver.SdCardReceiver
import com.ichi2.anki.servicelayer.*
import com.ichi2.anki.servicelayer.ScopedStorageService
import com.ichi2.anki.servicelayer.ScopedStorageService.isLegacyStorage
import com.ichi2.anki.servicelayer.ScopedStorageService.mediaMigrationIsInProgress
import com.ichi2.anki.servicelayer.checkMedia
import com.ichi2.anki.services.MediaMigrationState
import com.ichi2.anki.services.MigrationService
import com.ichi2.anki.services.getMediaMigrationState
@ -125,22 +160,45 @@ import com.ichi2.anki.worker.SyncMediaWorker
import com.ichi2.anki.worker.SyncWorker
import com.ichi2.anki.worker.UniqueWorkNames
import com.ichi2.annotations.NeedsTest
import com.ichi2.async.*
import com.ichi2.async.deleteMedia
import com.ichi2.async.sendNotificationForAsyncOperation
import com.ichi2.compat.CompatHelper.Companion.getSerializableCompat
import com.ichi2.compat.CompatHelper.Companion.registerReceiverCompat
import com.ichi2.compat.CompatHelper.Companion.sdkVersion
import com.ichi2.libanki.*
import com.ichi2.libanki.ChangeManager
import com.ichi2.libanki.Consts
import com.ichi2.libanki.DeckId
import com.ichi2.libanki.Decks
import com.ichi2.libanki.MediaCheckResult
import com.ichi2.libanki.exception.ConfirmModSchemaException
import com.ichi2.libanki.sched.DeckNode
import com.ichi2.libanki.undoableOp
import com.ichi2.libanki.utils.TimeManager
import com.ichi2.ui.BadgeDrawableBuilder
import com.ichi2.utils.*
import com.ichi2.utils.AdaptionUtil
import com.ichi2.utils.FragmentFactoryUtils
import com.ichi2.utils.HandlerUtils
import com.ichi2.utils.KotlinCleanup
import com.ichi2.utils.NetworkUtils
import com.ichi2.utils.NetworkUtils.isActiveNetworkMetered
import com.ichi2.utils.SyncStatus
import com.ichi2.utils.VersionUtils
import com.ichi2.utils.cancelable
import com.ichi2.utils.checkBoxPrompt
import com.ichi2.utils.message
import com.ichi2.utils.negativeButton
import com.ichi2.utils.neutralButton
import com.ichi2.utils.positiveButton
import com.ichi2.utils.show
import com.ichi2.utils.title
import com.ichi2.widget.WidgetStatus
import kotlinx.coroutines.*
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import makeLinksClickable
import net.ankiweb.rsdroid.RustCleanup
import org.json.JSONException

View File

@ -31,8 +31,9 @@ import com.ichi2.anki.dialogs.DeckSelectionDialog.DeckCreationListener
import com.ichi2.anki.dialogs.DeckSelectionDialog.SelectableDeck
import com.ichi2.anki.dialogs.DeckSelectionDialog.SelectableDeck.Companion.fromCollection
import com.ichi2.anki.widgets.DeckDropDownAdapter
import com.ichi2.libanki.*
import com.ichi2.libanki.Collection
import com.ichi2.libanki.DeckId
import com.ichi2.libanki.DeckNameId
import com.ichi2.utils.FragmentManagerSupplier
import com.ichi2.utils.KotlinCleanup
import com.ichi2.utils.asFragmentManagerSupplier

View File

@ -39,7 +39,7 @@ import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat
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("replace _name with `field`")
@KotlinCleanup("remove setTypeface")

View File

@ -47,7 +47,7 @@ import com.ichi2.utils.ClipboardUtil.hasImage
import com.ichi2.utils.KotlinCleanup
import kotlinx.parcelize.Parcelize
import timber.log.Timber
import java.util.*
import java.util.Locale
import kotlin.math.max
import kotlin.math.min

View File

@ -1,4 +1,4 @@
package com.ichi2.anki
@file:Suppress("DEPRECATION") // #3625 android.preference deprecation
/****************************************************************************************
* Copyright (c) 2009 Casey Link <unnamedrambler@gmail.com> *
@ -17,9 +17,15 @@ package com.ichi2.anki
* this program. If not, see <http://www.gnu.org/licenses/>. *
****************************************************************************************/
package com.ichi2.anki
import android.content.SharedPreferences
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.anki.analytics.UsageAnalytics
import com.ichi2.annotations.NeedsTest
import com.ichi2.libanki.Collection

View File

@ -24,7 +24,7 @@ import androidx.activity.result.ActivityResult
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.content.edit
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.preferences.sharedPrefs
import com.ichi2.annotations.NeedsTest

View File

@ -16,7 +16,7 @@
package com.ichi2.anki
import java.util.*
import java.util.Locale
object LanguageUtils {
/**

View File

@ -26,7 +26,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,

View File

@ -53,7 +53,7 @@ import com.ichi2.widget.WidgetStatus
import org.json.JSONArray
import org.json.JSONException
import timber.log.Timber
import java.util.*
import java.util.Locale
class ModelFieldEditor : AnkiActivity(), LocaleSelectionDialogHandler {
// Position of the current field selected

View File

@ -32,16 +32,29 @@ import android.os.Bundle
import android.os.Environment
import android.text.Editable
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.Button
import android.widget.EditText
import android.widget.ImageButton
import android.widget.LinearLayout
import android.widget.Spinner
import android.widget.TextView
import androidx.activity.addCallback
import androidx.activity.result.ActivityResult
import androidx.activity.result.ActivityResultCallback
import androidx.activity.result.contract.ActivityResultContracts
import androidx.annotation.*
import androidx.annotation.CheckResult
import androidx.annotation.DrawableRes
import androidx.annotation.VisibleForTesting
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.view.menu.MenuBuilder
import androidx.appcompat.widget.AppCompatButton
@ -75,7 +88,12 @@ import com.ichi2.anki.model.CardStateFilter
import com.ichi2.anki.multimediacard.IMultimediaEditableNote
import com.ichi2.anki.multimediacard.activity.MultimediaEditFieldActivity
import com.ichi2.anki.multimediacard.activity.MultimediaEditFieldActivityExtra
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
@ -100,21 +118,49 @@ import com.ichi2.anki.widgets.DeckDropDownAdapter.SubtitleListener
import com.ichi2.annotations.NeedsTest
import com.ichi2.compat.CompatHelper.Companion.getSerializableCompat
import com.ichi2.compat.CompatHelper.Companion.registerReceiverCompat
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.Note
import com.ichi2.libanki.Note.ClozeUtils
import com.ichi2.libanki.NoteTypeId
import com.ichi2.libanki.NotetypeJson
import com.ichi2.libanki.Notetypes
import com.ichi2.libanki.Notetypes.Companion.NOT_FOUND_NOTE_TYPE
import com.ichi2.libanki.Utils
import com.ichi2.libanki.load
import com.ichi2.libanki.note
import com.ichi2.libanki.undoableOp
import com.ichi2.libanki.utils.TimeManager
import com.ichi2.utils.*
import com.ichi2.utils.AdaptionUtil
import com.ichi2.utils.ClipboardUtil
import com.ichi2.utils.HashUtil
import com.ichi2.utils.ImageUtils
import com.ichi2.utils.ImportUtils
import com.ichi2.utils.IntentUtil.resolveMimeType
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.utils.increaseHorizontalPaddingOfOverflowMenuIcons
import com.ichi2.utils.message
import com.ichi2.utils.negativeButton
import com.ichi2.utils.neutralButton
import com.ichi2.utils.positiveButton
import com.ichi2.utils.show
import com.ichi2.utils.tintOverflowMenuIcons
import com.ichi2.utils.title
import com.ichi2.widget.WidgetStatus
import kotlinx.coroutines.launch
import org.json.JSONArray
import org.json.JSONObject
import timber.log.Timber
import java.io.File
import java.util.*
import java.util.LinkedList
import java.util.Locale
import java.util.function.Consumer
import kotlin.collections.ArrayList
import kotlin.math.max

View File

@ -21,7 +21,8 @@ import android.content.Context
import anki.notes.NoteFieldsCheckResponse
import com.ichi2.anki.CollectionManager.TR
import com.ichi2.anki.CollectionManager.withCol
import com.ichi2.anki.NoteFieldsCheckResult.*
import com.ichi2.anki.NoteFieldsCheckResult.Failure
import com.ichi2.anki.NoteFieldsCheckResult.Success
import com.ichi2.anki.utils.ext.isImageOcclusion
import com.ichi2.libanki.Note
import timber.log.Timber

View File

@ -23,7 +23,7 @@ import androidx.core.content.edit
import com.ichi2.anki.IntroductionActivity.Companion.INTRODUCTION_SLIDES_SHOWN
import com.ichi2.anki.preferences.sharedPrefs
import timber.log.Timber
import java.util.*
import java.util.BitSet
class OnboardingUtils {

View File

@ -30,11 +30,22 @@ 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.webkit.WebView
import android.widget.*
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.RelativeLayout
import android.widget.TextView
import androidx.activity.result.contract.ActivityResultContracts
import androidx.annotation.*
import androidx.annotation.CheckResult
import androidx.annotation.DrawableRes
import androidx.annotation.IntDef
import androidx.annotation.VisibleForTesting
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.view.menu.MenuBuilder
import androidx.appcompat.widget.Toolbar
@ -55,11 +66,17 @@ import com.ichi2.anki.pages.AnkiServer.Companion.ANKIDROID_JS_PREFIX
import com.ichi2.anki.pages.AnkiServer.Companion.ANKI_PREFIX
import com.ichi2.anki.pages.CardInfoDestination
import com.ichi2.anki.preferences.sharedPrefs
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.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.scheduling.ForgetCardsDialog
import com.ichi2.anki.scheduling.SetDueDateDialog
import com.ichi2.anki.servicelayer.NoteService.isMarked
@ -76,18 +93,31 @@ import com.ichi2.audio.AudioRecordingController.Companion.isRecording
import com.ichi2.audio.AudioRecordingController.Companion.setEditorStatus
import com.ichi2.audio.AudioRecordingController.Companion.tempAudioPath
import com.ichi2.audio.AudioRecordingController.RecordingState
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.renderOutput
import com.ichi2.libanki.sched.Counts
import com.ichi2.libanki.sched.CurrentQueueState
import com.ichi2.libanki.undoableOp
import com.ichi2.libanki.utils.TimeManager
import com.ichi2.themes.Themes
import com.ichi2.themes.Themes.currentTheme
import com.ichi2.utils.*
import com.ichi2.utils.HandlerUtils.executeFunctionWithDelay
import com.ichi2.utils.HandlerUtils.getDefaultLooper
import com.ichi2.utils.KotlinCleanup
import com.ichi2.utils.Permissions.canRecordAudio
import com.ichi2.utils.ViewGroupUtils.setRenderWorkaround
import com.ichi2.utils.cancelable
import com.ichi2.utils.iconAlpha
import com.ichi2.utils.increaseHorizontalPaddingOfOverflowMenuIcons
import com.ichi2.utils.message
import com.ichi2.utils.negativeButton
import com.ichi2.utils.positiveButton
import com.ichi2.utils.show
import com.ichi2.utils.tintOverflowMenuIcons
import com.ichi2.utils.title
import com.ichi2.widget.WidgetStatus.updateInBackground
import kotlinx.coroutines.launch
import timber.log.Timber

View File

@ -18,11 +18,15 @@
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.WebResourceResponse
import android.webkit.WebView
import android.webkit.WebViewClient
import androidx.appcompat.widget.SearchView
import androidx.appcompat.widget.Toolbar
import androidx.core.content.ContextCompat

View File

@ -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.database.Cursor
import android.net.Uri
import android.os.Bundle

View File

@ -5,7 +5,7 @@ import com.ichi2.libanki.TTSTag
import com.ichi2.libanki.template.TemplateFilters
import org.jsoup.Jsoup
import org.jsoup.nodes.Element
import java.util.*
import java.util.ArrayList
/**
* Parse card sides, extracting text snippets that should be read using a text-to-speech engine.

View File

@ -9,7 +9,7 @@ import android.widget.Toast
import androidx.annotation.StringRes
import androidx.fragment.app.Fragment
import com.ichi2.libanki.utils.Time
import java.util.*
import java.util.Calendar
fun showThemedToast(context: Context, text: String, shortLength: Boolean) {
Toast.makeText(context, text, if (shortLength) Toast.LENGTH_SHORT else Toast.LENGTH_LONG).show()

View File

@ -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.net.Uri
import android.view.MotionEvent
import android.view.View

View File

@ -33,11 +33,12 @@ import com.ichi2.anki.CollectionManager.withCol
import com.ichi2.anki.DeckSpinnerSelection.Companion.ALL_DECKS_ID
import com.ichi2.anki.Flag
import com.ichi2.anki.PreviewerDestination
import com.ichi2.anki.export.ExportDialogFragment.*
import com.ichi2.anki.export.ExportDialogFragment.ExportType
import com.ichi2.anki.launchCatchingIO
import com.ichi2.anki.model.CardStateFilter
import com.ichi2.anki.model.CardsOrNotes
import com.ichi2.anki.model.CardsOrNotes.*
import com.ichi2.anki.model.CardsOrNotes.CARDS
import com.ichi2.anki.model.CardsOrNotes.NOTES
import com.ichi2.anki.model.SortType
import com.ichi2.anki.pages.CardInfoDestination
import com.ichi2.anki.preferences.SharedPreferencesProvider

View File

@ -26,7 +26,11 @@ import com.ichi2.anki.AbstractFlashcardViewer
import com.ichi2.anki.R
import com.ichi2.anki.showThemedToast
import com.ichi2.libanki.CardId
import com.ichi2.utils.*
import com.ichi2.utils.cancelable
import com.ichi2.utils.message
import com.ichi2.utils.positiveButton
import com.ichi2.utils.show
import com.ichi2.utils.title
import timber.log.Timber
/**

View File

@ -26,10 +26,10 @@ import com.ichi2.anki.reviewer.Binding.ModifierKeys.Companion.ctrl
import com.ichi2.anki.reviewer.Binding.ModifierKeys.Companion.shift
import com.ichi2.anki.reviewer.CardSide
import com.ichi2.anki.reviewer.MappableBinding
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 com.ichi2.anki.reviewer.MappableBinding.Screen
import java.util.Arrays
import java.util.function.BiFunction
import java.util.stream.Collectors

View File

@ -21,15 +21,28 @@ import android.os.Build
import androidx.annotation.StringRes
import androidx.appcompat.app.AlertDialog
import androidx.core.content.edit
import com.ichi2.anki.*
import com.ichi2.anki.CollectionManager.withCol
import com.ichi2.anki.CrashReportService
import com.ichi2.anki.DeckPicker
import com.ichi2.anki.R
import com.ichi2.anki.canSync
import com.ichi2.anki.isLoggedIn
import com.ichi2.anki.millisecondsSinceLastSync
import com.ichi2.anki.preferences.sharedPrefs
import com.ichi2.anki.servicelayer.ScopedStorageService.collectionWillBeMadeInaccessibleAfterUninstall
import com.ichi2.anki.servicelayer.ScopedStorageService.userIsPromptedToDeleteCollectionOnUninstall
import com.ichi2.compat.CompatHelper.Companion.getPackageInfoCompat
import com.ichi2.compat.PackageInfoFlagsCompat
import com.ichi2.libanki.utils.TimeManager
import com.ichi2.utils.*
import com.ichi2.utils.Permissions
import com.ichi2.utils.cancelable
import com.ichi2.utils.checkBoxPrompt
import com.ichi2.utils.create
import com.ichi2.utils.message
import com.ichi2.utils.negativeButton
import com.ichi2.utils.positiveButton
import com.ichi2.utils.show
import com.ichi2.utils.title
import timber.log.Timber
/**

View File

@ -30,19 +30,50 @@ import androidx.appcompat.app.AlertDialog
import androidx.core.app.ActivityCompat
import androidx.core.os.BundleCompat
import androidx.core.os.bundleOf
import com.ichi2.anki.*
import com.ichi2.anki.dialogs.DatabaseErrorDialog.DatabaseErrorDialogType.*
import com.ichi2.anki.AnkiActivity
import com.ichi2.anki.BackupManager
import com.ichi2.anki.CollectionHelper
import com.ichi2.anki.CollectionManager
import com.ichi2.anki.ConflictResolution
import com.ichi2.anki.DatabaseRestorationListener
import com.ichi2.anki.DeckPicker
import com.ichi2.anki.LocalizedUnambiguousBackupTimeFormatter
import com.ichi2.anki.R
import com.ichi2.anki.dialogs.DatabaseErrorDialog.DatabaseErrorDialogType.DIALOG_CONFIRM_DATABASE_CHECK
import com.ichi2.anki.dialogs.DatabaseErrorDialog.DatabaseErrorDialogType.DIALOG_CONFIRM_RESTORE_BACKUP
import com.ichi2.anki.dialogs.DatabaseErrorDialog.DatabaseErrorDialogType.DIALOG_DB_ERROR
import com.ichi2.anki.dialogs.DatabaseErrorDialog.DatabaseErrorDialogType.DIALOG_DB_LOCKED
import com.ichi2.anki.dialogs.DatabaseErrorDialog.DatabaseErrorDialogType.DIALOG_DISK_FULL
import com.ichi2.anki.dialogs.DatabaseErrorDialog.DatabaseErrorDialogType.DIALOG_ERROR_HANDLING
import com.ichi2.anki.dialogs.DatabaseErrorDialog.DatabaseErrorDialogType.DIALOG_LOAD_FAILED
import com.ichi2.anki.dialogs.DatabaseErrorDialog.DatabaseErrorDialogType.DIALOG_NEW_COLLECTION
import com.ichi2.anki.dialogs.DatabaseErrorDialog.DatabaseErrorDialogType.DIALOG_ONE_WAY_SYNC_FROM_SERVER
import com.ichi2.anki.dialogs.DatabaseErrorDialog.DatabaseErrorDialogType.DIALOG_REPAIR_COLLECTION
import com.ichi2.anki.dialogs.DatabaseErrorDialog.DatabaseErrorDialogType.DIALOG_RESTORE_BACKUP
import com.ichi2.anki.dialogs.DatabaseErrorDialog.DatabaseErrorDialogType.DIALOG_STORAGE_UNAVAILABLE_AFTER_UNINSTALL
import com.ichi2.anki.dialogs.DatabaseErrorDialog.DatabaseErrorDialogType.INCOMPATIBLE_DB_VERSION
import com.ichi2.anki.dialogs.ImportFileSelectionFragment.ImportOptions
import com.ichi2.anki.isLoggedIn
import com.ichi2.anki.launchCatchingTask
import com.ichi2.anki.servicelayer.ScopedStorageService
import com.ichi2.anki.showImportDialog
import com.ichi2.libanki.Consts
import com.ichi2.libanki.utils.TimeManager
import com.ichi2.utils.*
import com.ichi2.utils.UiUtil.makeBold
import com.ichi2.utils.cancelable
import com.ichi2.utils.create
import com.ichi2.utils.listItems
import com.ichi2.utils.listItemsAndMessage
import com.ichi2.utils.message
import com.ichi2.utils.negativeButton
import com.ichi2.utils.neutralButton
import com.ichi2.utils.positiveButton
import com.ichi2.utils.show
import com.ichi2.utils.title
import kotlinx.parcelize.Parcelize
import timber.log.Timber
import java.io.File
import java.io.IOException
import java.util.*
class DatabaseErrorDialog : AsyncDialogFragment() {
private lateinit var repairValues: IntArray

View File

@ -22,7 +22,13 @@ import com.ichi2.anki.DeckPicker
import com.ichi2.anki.R
import com.ichi2.anki.analytics.AnalyticsDialogFragment
import com.ichi2.anki.analytics.UsageAnalytics
import com.ichi2.utils.*
import com.ichi2.utils.cancelable
import com.ichi2.utils.checkBoxPrompt
import com.ichi2.utils.create
import com.ichi2.utils.getCheckBoxPrompt
import com.ichi2.utils.message
import com.ichi2.utils.positiveButton
import com.ichi2.utils.title
class DeckPickerAnalyticsOptInDialog : AnalyticsDialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): AlertDialog {

View File

@ -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.CollectionLoadingErrorDialog
import com.ichi2.anki.DeckPicker
import com.ichi2.anki.IntentHandler
import com.ichi2.anki.MigrateStorageOnSyncSuccess
import com.ichi2.anki.OneWaySyncDialog
import com.ichi2.anki.analytics.UsageAnalytics
import com.ichi2.utils.HandlerUtils.getDefaultLooper
import com.ichi2.utils.ImportUtils

View File

@ -23,7 +23,8 @@ import androidx.appcompat.app.AlertDialog
import androidx.core.os.bundleOf
import com.ichi2.anki.DeckPicker
import com.ichi2.anki.R
import com.ichi2.utils.*
import com.ichi2.utils.negativeButton
import com.ichi2.utils.positiveButton
class ExportReadyDialog(private val listener: ExportReadyDialogListener) : AsyncDialogFragment() {
interface ExportReadyDialogListener {

View File

@ -24,7 +24,10 @@ import android.widget.SeekBar.OnSeekBarChangeListener
import androidx.appcompat.app.AlertDialog
import com.ichi2.anki.R
import com.ichi2.ui.FixedTextView
import com.ichi2.utils.*
import com.ichi2.utils.negativeButton
import com.ichi2.utils.positiveButton
import com.ichi2.utils.show
import com.ichi2.utils.title
import java.util.function.Consumer
class WhiteBoardWidthDialog(private val context: Context, private var wbStrokeWidth: Int) {

View File

@ -32,12 +32,25 @@ import androidx.annotation.VisibleForTesting
import androidx.appcompat.app.AlertDialog
import androidx.core.content.edit
import androidx.fragment.app.DialogFragment
import com.ichi2.anki.*
import com.ichi2.anki.CrashReportService
import com.ichi2.anki.R
import com.ichi2.anki.Reviewer
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.anki.launchCatchingTask
import com.ichi2.anki.model.CardStateFilter
import com.ichi2.anki.preferences.sharedPrefs
import com.ichi2.anki.showThemedToast
@ -59,7 +72,7 @@ import net.ankiweb.rsdroid.exceptions.BackendDeckIsFilteredException
import org.json.JSONArray
import org.json.JSONObject
import timber.log.Timber
import java.util.*
import java.util.Locale
class CustomStudyDialog(private val collection: Collection, private val customStudyListener: CustomStudyListener?) : AnalyticsDialogFragment(), TagsDialogListener {

View File

@ -19,13 +19,18 @@ 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.Locale

View File

@ -20,7 +20,8 @@ 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.ArrayList
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.

View File

@ -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
import kotlinx.parcelize.Parcelize
/**

View File

@ -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 {

View File

@ -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
/**

View File

@ -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

View File

@ -37,7 +37,16 @@ import androidx.lifecycle.LifecycleOwner
import com.ichi2.anki.AnkiActivity
import com.ichi2.anki.R
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.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.anki.showThemedToast
import com.ichi2.audio.AudioRecordingController
import com.ichi2.audio.AudioRecordingController.Companion.isAudioRecordingSaved

View File

@ -27,7 +27,7 @@ import android.widget.ArrayAdapter
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment
import com.ichi2.utils.KotlinCleanup
import java.util.*
import java.util.ArrayList
/**
* This dialog fragment support a choice from a list of strings.

View File

@ -55,7 +55,8 @@ import androidx.core.content.ContentResolverCompat
import androidx.core.content.FileProvider
import androidx.core.content.getSystemService
import androidx.core.os.BundleCompat
import com.canhub.cropper.*
import com.canhub.cropper.CropException
import com.canhub.cropper.CropImageView
import com.ichi2.anki.AnkiDroidApp
import com.ichi2.anki.CrashReportService
import com.ichi2.anki.DrawingActivity
@ -63,7 +64,15 @@ import com.ichi2.anki.R
import com.ichi2.anki.multimediacard.activity.MultimediaEditFieldActivity
import com.ichi2.anki.showThemedToast
import com.ichi2.ui.FixedEditText
import com.ichi2.utils.*
import com.ichi2.utils.BitmapUtil
import com.ichi2.utils.ExifUtil
import com.ichi2.utils.FileUtil
import com.ichi2.utils.ImageUtils
import com.ichi2.utils.KotlinCleanup
import com.ichi2.utils.message
import com.ichi2.utils.negativeButton
import com.ichi2.utils.positiveButton
import com.ichi2.utils.show
import timber.log.Timber
import java.io.File
import java.io.FileNotFoundException

View File

@ -23,7 +23,7 @@ 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.*
import java.util.ArrayList
/**
* Implementation of the editable note.

View File

@ -19,7 +19,7 @@ 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.*
import java.util.ArrayList
typealias ButtonText = String

View File

@ -28,7 +28,7 @@ import com.ichi2.libanki.Notetypes
import com.ichi2.utils.KotlinCleanup
import com.ichi2.utils.MapUtil.getKeyByValue
import org.json.JSONObject
import java.util.*
import java.util.ArrayList
import kotlin.math.min
/** Responsible for recreating EditFieldLines after NoteEditor operations

View File

@ -27,7 +27,12 @@ import android.graphics.drawable.Drawable
import android.util.AttributeSet
import android.util.DisplayMetrics
import android.util.TypedValue
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
@ -48,7 +53,7 @@ import com.ichi2.utils.ViewGroupUtils.getAllChildrenRecursive
import com.ichi2.utils.show
import com.ichi2.utils.title
import timber.log.Timber
import java.util.*
import java.util.Objects
import kotlin.math.ceil
/**

View File

@ -27,7 +27,12 @@ import android.widget.TextView
import androidx.appcompat.app.AlertDialog
import androidx.core.text.parseAsHtml
import androidx.fragment.app.Fragment
import com.ichi2.anki.*
import com.ichi2.anki.AnkiActivity
import com.ichi2.anki.AnkiDroidApp
import com.ichi2.anki.BuildConfig
import com.ichi2.anki.Info
import com.ichi2.anki.R
import com.ichi2.anki.launchCatchingTask
import com.ichi2.anki.servicelayer.DebugInfoService
import com.ichi2.anki.snackbar.showSnackbar
import com.ichi2.utils.IntentUtil

View File

@ -20,8 +20,12 @@ import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import androidx.appcompat.app.AlertDialog
import androidx.preference.*
import com.ichi2.anki.*
import androidx.preference.EditTextPreference
import androidx.preference.Preference
import androidx.preference.SwitchPreferenceCompat
import com.ichi2.anki.AnkiActivity
import com.ichi2.anki.CollectionHelper
import com.ichi2.anki.MetaDB
import com.ichi2.anki.R
import com.ichi2.anki.exception.StorageAccessException
import com.ichi2.anki.provider.CardContentProvider

View File

@ -24,7 +24,10 @@ import androidx.preference.Preference
import com.ichi2.anki.CollectionManager.TR
import com.ichi2.anki.R
import com.ichi2.anki.ui.internationalization.toSentenceCase
import com.ichi2.utils.*
import com.ichi2.utils.negativeButton
import com.ichi2.utils.positiveButton
import com.ichi2.utils.show
import com.ichi2.utils.title
class CustomButtonsSettingsFragment : SettingsFragment() {
override val preferenceResource: Int

View File

@ -20,10 +20,16 @@ import android.content.Intent
import androidx.appcompat.app.AlertDialog
import androidx.preference.Preference
import androidx.preference.SwitchPreferenceCompat
import com.ichi2.anki.*
import com.ichi2.anki.BuildConfig
import com.ichi2.anki.CollectionManager
import com.ichi2.anki.OnboardingUtils
import com.ichi2.anki.R
import com.ichi2.anki.analytics.UsageAnalytics
import com.ichi2.anki.instantnoteeditor.InstantNoteEditorActivity
import com.ichi2.anki.launchCatchingTask
import com.ichi2.anki.showThemedToast
import com.ichi2.anki.snackbar.showSnackbar
import com.ichi2.anki.withProgress
import com.ichi2.preferences.IncrementerNumberRangePreferenceCompat
import com.ichi2.utils.show
import kotlinx.coroutines.Dispatchers

View File

@ -20,10 +20,13 @@ import androidx.core.os.LocaleListCompat
import androidx.preference.ListPreference
import androidx.preference.SwitchPreferenceCompat
import anki.config.ConfigKey
import com.ichi2.anki.*
import com.ichi2.anki.CollectionManager
import com.ichi2.anki.CollectionManager.withCol
import com.ichi2.anki.CrashReportService
import com.ichi2.anki.R
import com.ichi2.anki.contextmenu.AnkiCardContextMenu
import com.ichi2.anki.contextmenu.CardBrowserContextMenu
import com.ichi2.anki.launchCatchingTask
import com.ichi2.utils.LanguageUtil
import com.ichi2.utils.LanguageUtil.getStringByLocale
import com.ichi2.utils.LanguageUtil.getSystemLocale

View File

@ -18,22 +18,37 @@
****************************************************************************************/
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
import android.database.sqlite.SQLiteQueryBuilder
import android.net.Uri
import android.webkit.MimeTypeMap
import com.ichi2.anki.*
import com.ichi2.anki.AnkiDroidApp
import com.ichi2.anki.BuildConfig
import com.ichi2.anki.CollectionManager
import com.ichi2.anki.CrashReportService
import com.ichi2.anki.FlashCardsContract
import com.ichi2.anki.utils.ext.description
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.Deck
import com.ichi2.libanki.DeckId
import com.ichi2.libanki.Decks
import com.ichi2.libanki.Note
import com.ichi2.libanki.NoteId
import com.ichi2.libanki.NoteTypeId
import com.ichi2.libanki.NotetypeJson
import com.ichi2.libanki.Notetypes
import com.ichi2.libanki.Sound.replaceWithSoundTags
import com.ichi2.libanki.TemplateManager.*
import com.ichi2.libanki.TemplateManager.TemplateRenderContext.*
import com.ichi2.libanki.TemplateManager.TemplateRenderContext.TemplateRenderOutput
import com.ichi2.libanki.Utils
import com.ichi2.libanki.exception.ConfirmModSchemaException
import com.ichi2.libanki.exception.EmptyMediaException
import com.ichi2.libanki.sched.DeckNode
@ -49,7 +64,6 @@ import org.json.JSONObject
import timber.log.Timber
import java.io.File
import java.io.IOException
import java.util.*
/**
* Supported URIs:

View File

@ -22,7 +22,9 @@ import androidx.annotation.VisibleForTesting
import com.ichi2.anki.CollectionManager.TR
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.GOOD
import com.ichi2.anki.reviewer.AnswerButtons.HARD
import com.ichi2.anki.snackbar.showSnackbar
import com.ichi2.anki.utils.ext.secondsToShowAnswer
import com.ichi2.anki.utils.ext.secondsToShowQuestion

View File

@ -22,10 +22,14 @@ import androidx.annotation.CheckResult
import com.ichi2.anki.R
import com.ichi2.anki.cardviewer.Gesture
import com.ichi2.anki.cardviewer.ViewerCommand
import com.ichi2.anki.reviewer.Binding.*
import com.ichi2.anki.reviewer.Binding.AxisButtonBinding
import com.ichi2.anki.reviewer.Binding.GestureInput
import com.ichi2.anki.reviewer.Binding.KeyBinding
import com.ichi2.anki.reviewer.Binding.KeyCode
import com.ichi2.anki.reviewer.Binding.UnicodeCharacter
import com.ichi2.utils.hash
import timber.log.Timber
import java.util.*
import java.util.Objects
import kotlin.collections.ArrayList
/**

View File

@ -23,8 +23,8 @@ import com.ichi2.anki.cardviewer.ViewerCommand
import com.ichi2.anki.preferences.sharedPrefs
import com.ichi2.anki.reviewer.Binding.Companion.possibleKeyBindings
import com.ichi2.anki.reviewer.CardSide.Companion.fromAnswer
import com.ichi2.anki.reviewer.MappableBinding.*
import com.ichi2.anki.reviewer.MappableBinding.Companion.fromPreference
import com.ichi2.anki.reviewer.MappableBinding.Screen
/** Accepts peripheral input, mapping via various keybinding strategies,
* and converting them to commands for the Reviewer. */

View File

@ -24,7 +24,7 @@ import com.ichi2.libanki.NotetypeJson
import com.ichi2.libanki.Notetypes
import org.json.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

View File

@ -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.Collection

View File

@ -40,7 +40,7 @@ import com.ichi2.anki.reviewer.screenBuilder
import com.ichi2.libanki.Consts
import com.ichi2.utils.HashUtil.hashSetInit
import timber.log.Timber
import java.util.*
import java.util.Locale
import kotlin.collections.ArrayList
private typealias VersionIdentifier = Int

View File

@ -21,7 +21,8 @@ import com.google.android.material.snackbar.Snackbar
import com.ichi2.anki.R
import com.ichi2.anki.snackbar.showSnackbar
import com.ichi2.anki.withProgress
import com.ichi2.libanki.*
import com.ichi2.libanki.CardId
import com.ichi2.libanki.undoableOp
suspend fun FragmentActivity.rescheduleCards(cardIds: List<CardId>, newDays: Int) {
withProgress {

View File

@ -17,7 +17,9 @@
package com.ichi2.anki.servicelayer.scopedstorage
import com.ichi2.anki.model.Directory
import com.ichi2.anki.servicelayer.scopedstorage.migrateuserdata.MigrateUserData.*
import com.ichi2.anki.servicelayer.scopedstorage.migrateuserdata.MigrateUserData.DirectoryNotEmptyException
import com.ichi2.anki.servicelayer.scopedstorage.migrateuserdata.MigrateUserData.MigrationContext
import com.ichi2.anki.servicelayer.scopedstorage.migrateuserdata.MigrateUserData.Operation
import com.ichi2.anki.servicelayer.scopedstorage.migrateuserdata.operationCompleted
import com.ichi2.compat.CompatHelper
import timber.log.Timber

View File

@ -24,9 +24,9 @@ import com.ichi2.anki.CollectionHelper
import com.ichi2.anki.CrashReportService
import com.ichi2.anki.model.Directory
import com.ichi2.anki.preferences.sharedPrefs
import com.ichi2.anki.servicelayer.*
import com.ichi2.anki.servicelayer.ScopedStorageService.PREF_MIGRATION_DESTINATION
import com.ichi2.anki.servicelayer.ScopedStorageService.PREF_MIGRATION_SOURCE
import com.ichi2.anki.servicelayer.ValidatedMigrationSourceAndDestination
import com.ichi2.anki.servicelayer.scopedstorage.MigrateEssentialFiles.Companion.PRIORITY_FILES
import com.ichi2.anki.servicelayer.scopedstorage.MigrateEssentialFiles.UserActionRequiredException
import com.ichi2.anki.servicelayer.scopedstorage.migrateuserdata.NumberOfBytes

View File

@ -21,7 +21,11 @@ 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.MigrateUserData.*
import com.ichi2.anki.servicelayer.scopedstorage.migrateuserdata.MigrateUserData.FileConflictException
import com.ichi2.anki.servicelayer.scopedstorage.migrateuserdata.MigrateUserData.FileConflictResolutionFailedException
import com.ichi2.anki.servicelayer.scopedstorage.migrateuserdata.MigrateUserData.FileDirectoryConflictException
import com.ichi2.anki.servicelayer.scopedstorage.migrateuserdata.MigrateUserData.MigrationContext
import com.ichi2.anki.servicelayer.scopedstorage.migrateuserdata.MigrateUserData.Operation
import com.ichi2.anki.servicelayer.scopedstorage.migrateuserdata.NumberOfBytes
import com.ichi2.anki.servicelayer.scopedstorage.migrateuserdata.operationCompleted
import com.ichi2.compat.CompatHelper

View File

@ -19,7 +19,13 @@ package com.ichi2.anki.servicelayer.scopedstorage
import androidx.annotation.VisibleForTesting
import com.ichi2.anki.model.Directory
import com.ichi2.anki.model.DiskFile
import com.ichi2.anki.servicelayer.scopedstorage.migrateuserdata.MigrateUserData.*
import com.ichi2.anki.servicelayer.scopedstorage.migrateuserdata.MigrateUserData.DirectoryValidator
import com.ichi2.anki.servicelayer.scopedstorage.migrateuserdata.MigrateUserData.EquivalentFileException
import com.ichi2.anki.servicelayer.scopedstorage.migrateuserdata.MigrateUserData.FileConflictException
import com.ichi2.anki.servicelayer.scopedstorage.migrateuserdata.MigrateUserData.FileDirectoryConflictException
import com.ichi2.anki.servicelayer.scopedstorage.migrateuserdata.MigrateUserData.MigrationContext
import com.ichi2.anki.servicelayer.scopedstorage.migrateuserdata.MigrateUserData.MissingDirectoryException
import com.ichi2.anki.servicelayer.scopedstorage.migrateuserdata.MigrateUserData.Operation
import com.ichi2.anki.servicelayer.scopedstorage.migrateuserdata.operationCompleted
import com.ichi2.compat.CompatHelper
import com.ichi2.utils.FileUtil

View File

@ -18,7 +18,7 @@ package com.ichi2.anki.servicelayer.scopedstorage
import com.ichi2.anki.model.Directory
import com.ichi2.anki.model.DiskFile
import com.ichi2.anki.servicelayer.scopedstorage.migrateuserdata.MigrateUserData.*
import com.ichi2.anki.servicelayer.scopedstorage.migrateuserdata.MigrateUserData.MigrationContext
import com.ichi2.anki.servicelayer.scopedstorage.migrateuserdata.MigrateUserData.Operation
import com.ichi2.anki.servicelayer.scopedstorage.migrateuserdata.MoveDirectory
import com.ichi2.anki.servicelayer.scopedstorage.migrateuserdata.operationCompleted

View File

@ -6,7 +6,8 @@ import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import androidx.core.app.PendingIntentCompat
import com.ichi2.anki.*
import com.ichi2.anki.CollectionManager
import com.ichi2.anki.R
import com.ichi2.anki.preferences.Preferences
import com.ichi2.anki.preferences.sharedPrefs
import com.ichi2.anki.showThemedToast

View File

@ -31,7 +31,12 @@ import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import com.ichi2.anki.*
import com.ichi2.anki.AnkiDroidApp
import com.ichi2.anki.Channel
import com.ichi2.anki.CollectionManager
import com.ichi2.anki.CrashReportService
import com.ichi2.anki.IntentHandler
import com.ichi2.anki.R
import com.ichi2.anki.preferences.sharedPrefs
import com.ichi2.anki.servicelayer.ScopedStorageService
import com.ichi2.anki.servicelayer.ScopedStorageService.PREF_MIGRATION_DESTINATION

View File

@ -15,7 +15,11 @@
package com.ichi2.anki.ui.preferences.screens
import androidx.fragment.app.viewModels
import androidx.lifecycle.*
import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.ViewModel
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.viewModelScope
import androidx.preference.EditTextPreference
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
@ -26,7 +30,9 @@ import com.ichi2.anki.R
import com.ichi2.anki.launchCatchingTask
import com.ichi2.anki.preferences.requirePreference
import com.ichi2.anki.snackbar.showSnackbar
import com.ichi2.anki.ui.windows.managespace.*
import com.ichi2.anki.ui.windows.managespace.CollectionDirectoryProvider
import com.ichi2.anki.ui.windows.managespace.collectionDirectoryExists
import com.ichi2.anki.ui.windows.managespace.ensureCanWriteToOrCreateCollectionDirectory
import com.ichi2.anki.utils.getUserFriendlyErrorText
import com.ichi2.preferences.HtmlHelpPreference
import com.ichi2.preferences.IncrementerNumberRangePreferenceCompat

View File

@ -24,10 +24,14 @@ import androidx.annotation.RequiresApi
import androidx.core.content.ContextCompat
import com.ichi2.anki.R
import com.ichi2.anki.utils.TranslatableException
import kotlinx.coroutines.*
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ensureActive
import kotlinx.coroutines.suspendCancellableCoroutine
import kotlinx.coroutines.withContext
import timber.log.Timber
import java.io.File
import java.util.*
import java.util.UUID
import kotlin.coroutines.Continuation
import kotlin.coroutines.resume

View File

@ -27,8 +27,12 @@ import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.viewModelScope
import androidx.preference.Preference
import com.ichi2.anki.*
import com.ichi2.anki.BackupManager
import com.ichi2.anki.CollectionManager
import com.ichi2.anki.CollectionManager.withCol
import com.ichi2.anki.LocalizedUnambiguousBackupTimeFormatter
import com.ichi2.anki.R
import com.ichi2.anki.launchCatchingTask
import com.ichi2.anki.preferences.SettingsFragment
import com.ichi2.anki.preferences.requirePreference
import com.ichi2.anki.snackbar.showSnackbar
@ -36,11 +40,16 @@ import com.ichi2.anki.ui.dialogs.tools.AsyncDialogBuilder.CheckedItems
import com.ichi2.anki.ui.dialogs.tools.DialogResult
import com.ichi2.anki.ui.dialogs.tools.awaitDialog
import com.ichi2.anki.utils.getUserFriendlyErrorText
import com.ichi2.anki.withProgress
import com.ichi2.async.deleteMedia
import com.ichi2.preferences.TextWidgetPreference
import kotlinx.coroutines.*
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import java.io.File
import kotlin.coroutines.cancellation.CancellationException
import kotlin.system.exitProcess
sealed interface Size {

View File

@ -22,7 +22,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.CheckResult
import androidx.annotation.VisibleForTesting
import androidx.recyclerview.widget.RecyclerView
@ -36,7 +41,6 @@ import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
import net.ankiweb.rsdroid.RustCleanup
import timber.log.Timber
import java.util.*
@KotlinCleanup("lots to do")
@RustCleanup("Lots of bad code: should not be using suspend functions inside an adapter")

View File

@ -16,16 +16,17 @@
package com.ichi2.async
import com.ichi2.anki.*
import com.ichi2.anki.CardBrowser
import com.ichi2.anki.CardTemplateNotetype
import com.ichi2.anki.StudyOptionsFragment
import com.ichi2.anki.browser.CardBrowserColumn
import com.ichi2.libanki.*
import com.ichi2.libanki.Collection
import com.ichi2.libanki.NotetypeJson
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ensureActive
import kotlinx.coroutines.withContext
import net.ankiweb.rsdroid.exceptions.BackendNotFoundException
import timber.log.Timber
import java.util.*
/**
* Takes a list of media file names and removes them from the [Collection]

View File

@ -30,8 +30,13 @@ import android.net.Uri
import android.os.Bundle
import android.view.View
import androidx.annotation.CheckResult
import java.io.*
import java.util.*
import java.io.File
import java.io.FileNotFoundException
import java.io.IOException
import java.io.InputStream
import java.io.OutputStream
import java.io.Serializable
import java.util.Locale
/**
* This interface defines a set of functions that are not available on all platforms.

View File

@ -27,7 +27,8 @@ import android.content.pm.ResolveInfo
import android.os.Build
import android.os.Bundle
import android.view.KeyCharacterMap.deviceHasKey
import android.view.KeyEvent.*
import android.view.KeyEvent.KEYCODE_PAGE_DOWN
import android.view.KeyEvent.KEYCODE_PAGE_UP
import androidx.core.content.ContextCompat
import com.ichi2.compat.CompatHelper.Companion.compat
import java.io.Serializable

View File

@ -23,8 +23,18 @@ import android.os.Vibrator
import android.view.View
import androidx.annotation.VisibleForTesting
import com.ichi2.anki.NotificationChannels
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)

View File

@ -31,7 +31,10 @@
*/
package com.ichi2.compat
import android.content.pm.*
import android.content.pm.ApplicationInfo
import android.content.pm.ComponentInfo
import android.content.pm.PackageManager
import android.content.pm.ResolveInfo
import android.os.UserManager
import androidx.annotation.LongDef

View File

@ -55,8 +55,7 @@ import net.ankiweb.rsdroid.Backend
import net.ankiweb.rsdroid.RustCleanup
import net.ankiweb.rsdroid.exceptions.BackendInvalidInputException
import timber.log.Timber
import java.io.*
import java.util.*
import java.io.File
// Anki maintains a cache of used tags so it can quickly present a list of tags
// for autocomplete and in the browser. For efficiency, deletions are not

View File

@ -37,13 +37,16 @@ import anki.decks.SetDeckCollapsedRequest
import com.google.protobuf.kotlin.toByteStringUtf8
import com.ichi2.annotations.NeedsTest
import com.ichi2.libanki.backend.BackendUtils
import com.ichi2.libanki.utils.*
import com.ichi2.libanki.utils.LibAnkiAlias
import com.ichi2.libanki.utils.NotInLibAnki
import com.ichi2.libanki.utils.append
import com.ichi2.libanki.utils.len
import com.ichi2.utils.jsonObjectIterable
import net.ankiweb.rsdroid.RustCleanup
import net.ankiweb.rsdroid.exceptions.BackendDeckIsFilteredException
import net.ankiweb.rsdroid.exceptions.BackendNotFoundException
import org.json.JSONArray
import java.util.*
import java.util.LinkedList
typealias UpdateDeckConfigs = UpdateDeckConfigsRequest
data class DeckNameId(val name: String, val id: DeckId)

View File

@ -21,7 +21,7 @@ import androidx.annotation.WorkerThread
import com.google.protobuf.kotlin.toByteString
import com.ichi2.libanki.exception.EmptyMediaException
import timber.log.Timber
import java.io.*
import java.io.File
/**
* Media manager - handles the addition and removal of media files from the media directory (collection.media) and

View File

@ -29,7 +29,7 @@ import com.ichi2.utils.KotlinCleanup
import com.ichi2.utils.deepClone
import com.ichi2.utils.emptyStringArray
import org.json.JSONObject
import java.util.*
import java.util.AbstractSet
import java.util.regex.Pattern
@KotlinCleanup("lots to do")

View File

@ -17,7 +17,9 @@
package com.ichi2.libanki
import androidx.annotation.CheckResult
import com.ichi2.utils.*
import com.ichi2.utils.KotlinCleanup
import com.ichi2.utils.deepClonedInto
import com.ichi2.utils.toStringList
import org.intellij.lang.annotations.Language
import org.json.JSONArray
import org.json.JSONObject

View File

@ -45,7 +45,13 @@ import com.ichi2.libanki.Utils.checksum
import com.ichi2.libanki.backend.BackendUtils
import com.ichi2.libanki.backend.BackendUtils.to_json_bytes
import com.ichi2.libanki.exception.ConfirmModSchemaException
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.Assert
import com.ichi2.utils.HashUtil
import com.ichi2.utils.jsonObjectIterable

View File

@ -21,14 +21,15 @@ package com.ichi2.libanki
import androidx.core.text.HtmlCompat
import com.ichi2.libanki.Consts.FIELD_SEPARATOR
import timber.log.Timber
import java.io.*
import java.io.UnsupportedEncodingException
import java.math.BigInteger
import java.security.MessageDigest
import java.security.NoSuchAlgorithmException
import java.util.*
import java.util.Locale
import java.util.Random
import java.util.regex.Matcher
import java.util.regex.Pattern
import kotlin.math.*
import kotlin.math.pow
// TODO switch to standalone functions and properties and remove Utils container
object Utils {

View File

@ -19,7 +19,7 @@ import anki.decks.DeckTreeNode
import com.ichi2.libanki.DeckId
import com.ichi2.libanki.utils.append
import java.lang.ref.WeakReference
import java.util.*
import java.util.Locale
data class DeckNode(
val node: DeckTreeNode,

View File

@ -18,7 +18,7 @@
package com.ichi2.libanki.sched
import com.ichi2.libanki.*
import com.ichi2.libanki.Card
import com.ichi2.libanki.Collection
import java.lang.Exception

View File

@ -27,7 +27,19 @@ import anki.config.OptionalStringConfigKey
import anki.config.optionalStringConfigKey
import anki.frontend.SchedulingStatesWithContext
import anki.i18n.FormatTimespanRequest
import anki.scheduler.*
import anki.scheduler.BuryOrSuspendCardsRequest
import anki.scheduler.CardAnswer
import anki.scheduler.CongratsInfoResponse
import anki.scheduler.CustomStudyDefaultsResponse
import anki.scheduler.CustomStudyRequest
import anki.scheduler.QueuedCards
import anki.scheduler.SchedTimingTodayResponse
import anki.scheduler.SchedulingContext
import anki.scheduler.SchedulingState
import anki.scheduler.SchedulingStates
import anki.scheduler.UnburyDeckRequest
import anki.scheduler.cardAnswer
import anki.scheduler.scheduleCardsAsNewRequest
import com.google.android.material.snackbar.Snackbar
import com.ichi2.anki.R
import com.ichi2.anki.snackbar.showSnackbar

View File

@ -19,7 +19,7 @@ package com.ichi2.libanki.utils
import com.ichi2.utils.jsonObjectIterable
import org.json.JSONArray
import org.json.JSONObject
import java.util.*
import java.util.Optional
fun <T> MutableList<T>.append(value: T) {
this.add(value)

View File

@ -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

View File

@ -33,14 +33,19 @@ import com.ichi2.anki.dialogs.WarningDisplay
import com.ichi2.anki.preferences.sharedPrefs
import com.ichi2.anki.reviewer.CardSide
import com.ichi2.anki.reviewer.MappableBinding
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.anki.reviewer.MappableBinding.Screen
import com.ichi2.anki.reviewer.screenBuilder
import com.ichi2.anki.showThemedToast
import com.ichi2.ui.AxisPicker
import com.ichi2.ui.KeyPicker
import com.ichi2.utils.*
import com.ichi2.utils.customView
import com.ichi2.utils.message
import com.ichi2.utils.negativeButton
import com.ichi2.utils.positiveButton
import com.ichi2.utils.show
import com.ichi2.utils.title
/**
* A preference which allows mapping of inputs to actions (example: keys -> commands)

View File

@ -25,7 +25,6 @@ import android.widget.Button
import android.widget.LinearLayout
import com.ichi2.anki.R
import com.ichi2.utils.KotlinCleanup
import java.lang.NumberFormatException
// TODO Tracked in https://github.com/ankidroid/Anki-Android/issues/5019 : use IncrementerNumberRangePreferenceCompat
@Suppress("deprecation", "OVERRIDE_DEPRECATION")

View File

@ -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.AlertDialog
@ -35,13 +44,18 @@ import com.ichi2.anki.receiver.SdCardReceiver
import com.ichi2.compat.CompatHelper.Companion.registerReceiverCompat
import com.ichi2.libanki.Collection
import com.ichi2.libanki.Deck
import com.ichi2.utils.*
import com.ichi2.utils.HashUtil
import com.ichi2.utils.KotlinCleanup
import com.ichi2.utils.message
import com.ichi2.utils.positiveButton
import com.ichi2.utils.show
import com.ichi2.utils.title
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.cancel
import net.ankiweb.rsdroid.BackendException
import timber.log.Timber
import java.util.*
import java.util.LinkedList
/**
* A [android.preference.PreferenceActivity] which implements and proxies the necessary calls

Some files were not shown because too many files have changed in this diff Show More