mirror of
https://github.com/ankidroid/Anki-Android.git
synced 2024-09-19 19:42:17 +02:00
Remove wildcard from imports
This commit is contained in:
parent
1a3c1a1ab0
commit
c63e93a09f
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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() {
|
||||
|
@ -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
|
||||
|
@ -15,7 +15,7 @@
|
||||
*/
|
||||
package com.ichi2.anki.testutil
|
||||
|
||||
import java.util.*
|
||||
import java.util.Locale
|
||||
|
||||
object TestEnvironment {
|
||||
fun isDisplayingDefaultEnglishStrings(): Boolean {
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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 {
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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")
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
package com.ichi2.anki
|
||||
|
||||
import java.util.*
|
||||
import java.util.Locale
|
||||
|
||||
object LanguageUtils {
|
||||
/**
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 {
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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()
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
/**
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
/**
|
||||
|
@ -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
|
||||
|
@ -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 {
|
||||
|
@ -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
|
||||
|
@ -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 {
|
||||
|
@ -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) {
|
||||
|
@ -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 {
|
||||
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
||||
/**
|
||||
|
@ -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 {
|
||||
|
@ -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
|
||||
|
||||
/**
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
/**
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
/**
|
||||
|
@ -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. */
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 {
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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 {
|
||||
|
@ -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")
|
||||
|
@ -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]
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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")
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 {
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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")
|
||||
|
@ -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
Loading…
Reference in New Issue
Block a user