Skip to content

Commit 1512be9

Browse files
sonalyadav1BrayanDSO
authored andcommitted
lint: enforce layout naming conventions
(activity_, fragment_, view_, dialog_) Add email to copyright headers Refactor layout prefix detectors: extract shared utils, use Kotlin tests lint: enforce dialog_ prefix for Dialog layouts lint: enforce view_ prefix for View layouts lint: enforce fragment_ prefix for Fragment layouts lint: enforce activity_ prefix for Activity layouts
1 parent a6415cc commit 1512be9

36 files changed

+941
-38
lines changed

AnkiDroid/src/main/java/com/ichi2/anki/CardBrowser.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ import com.ichi2.anki.browser.registerFindReplaceHandler
6868
import com.ichi2.anki.browser.toCardBrowserLaunchOptions
6969
import com.ichi2.anki.common.annotations.NeedsTest
7070
import com.ichi2.anki.common.utils.annotation.KotlinCleanup
71-
import com.ichi2.anki.databinding.CardBrowserBinding
71+
import com.ichi2.anki.databinding.ActivityCardBrowserBinding
7272
import com.ichi2.anki.dialogs.DeckSelectionDialog.DeckSelectionListener
7373
import com.ichi2.anki.dialogs.DiscardChangesDialog
7474
import com.ichi2.anki.dialogs.GradeNowDialog
@@ -143,7 +143,7 @@ open class CardBrowser :
143143

144144
lateinit var viewModel: CardBrowserViewModel
145145

146-
private lateinit var binding: CardBrowserBinding
146+
private lateinit var binding: ActivityCardBrowserBinding
147147

148148
lateinit var cardBrowserFragment: CardBrowserFragment
149149

@@ -165,14 +165,14 @@ open class CardBrowser :
165165
}
166166

167167
// Dev option for Issue 18709
168-
// TODO: Broken currently; needs R.layout.card_browser_searchview
168+
// TODO: Broken currently; needs R.layout.activity_card_browser_searchview
169169
val useSearchView: Boolean
170170
get() = Prefs.devUsingCardBrowserSearchView
171171

172172
@Suppress("unused")
173173
@get:LayoutRes
174174
private val layout: Int
175-
get() = if (useSearchView) R.layout.card_browser_searchview else R.layout.card_browser
175+
get() = if (useSearchView) R.layout.activity_card_browser_searchview else R.layout.activity_card_browser
176176

177177
private var onEditCardActivityResult =
178178
registerForActivityResult(StartActivityForResult()) { result: ActivityResult ->
@@ -295,7 +295,7 @@ open class CardBrowser :
295295
}
296296
tagsDialogFactory = TagsDialogFactory(this).attachToActivity<TagsDialogFactory>(this)
297297
super.onCreate(savedInstanceState)
298-
binding = CardBrowserBinding.inflate(layoutInflater)
298+
binding = ActivityCardBrowserBinding.inflate(layoutInflater)
299299
if (!ensureStoragePermissions()) {
300300
return
301301
}

AnkiDroid/src/main/java/com/ichi2/anki/DeckPicker.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,9 @@ import com.ichi2.anki.common.time.TimeManager
101101
import com.ichi2.anki.common.utils.annotation.KotlinCleanup
102102
import com.ichi2.anki.contextmenu.DeckPickerMenuContentProvider
103103
import com.ichi2.anki.contextmenu.MouseContextMenuHandler
104+
import com.ichi2.anki.databinding.ActivityHomescreenBinding
104105
import com.ichi2.anki.databinding.DeckPickerBinding
105106
import com.ichi2.anki.databinding.FloatingAddButtonBinding
106-
import com.ichi2.anki.databinding.HomescreenBinding
107107
import com.ichi2.anki.deckpicker.BITMAP_BYTES_PER_PIXEL
108108
import com.ichi2.anki.deckpicker.BackgroundImage
109109
import com.ichi2.anki.deckpicker.DeckDeletionResult
@@ -253,7 +253,7 @@ open class DeckPicker :
253253
CollectionPermissionScreenLauncher {
254254
val viewModel: DeckPickerViewModel by viewModels()
255255

256-
private lateinit var binding: HomescreenBinding
256+
private lateinit var binding: ActivityHomescreenBinding
257257

258258
@VisibleForTesting
259259
internal val deckPickerBinding: DeckPickerBinding
@@ -519,7 +519,7 @@ open class DeckPicker :
519519
// Then set theme and content view
520520
super.onCreate(savedInstanceState)
521521

522-
binding = HomescreenBinding.inflate(layoutInflater)
522+
binding = ActivityHomescreenBinding.inflate(layoutInflater)
523523

524524
// handle the first load: display the app introduction
525525
// This screen is currently better equipped to handle errors than IntroductionActivity
@@ -2073,7 +2073,7 @@ open class DeckPicker :
20732073
/**
20742074
* Displays [StudyOptionsFragment] in a side panel on larger devices
20752075
*
2076-
* @see [HomescreenBinding.studyoptionsFragment]
2076+
* @see [ActivityHomescreenBinding.studyoptionsFragment]
20772077
*
20782078
* @return whether the panel was shown
20792079
*/
@@ -2539,5 +2539,5 @@ private fun AnkiActivity.launchCatchingRequiringOneWaySync(block: suspend () ->
25392539
}
25402540
}
25412541

2542-
val HomescreenBinding.studyoptionsFrame: FragmentContainerView?
2542+
val ActivityHomescreenBinding.studyoptionsFrame: FragmentContainerView?
25432543
get() = studyoptionsFragment

AnkiDroid/src/main/java/com/ichi2/anki/FieldEditLine.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,15 @@ import androidx.constraintlayout.widget.ConstraintSet
3232
import androidx.core.os.ParcelCompat
3333
import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat
3434
import com.ichi2.anki.common.utils.annotation.KotlinCleanup
35-
import com.ichi2.anki.databinding.CardMultimediaEditlineBinding
35+
import com.ichi2.anki.databinding.ViewCardMultimediaEditlineBinding
3636
import com.ichi2.compat.setTooltipTextCompat
3737
import com.ichi2.ui.AnimationUtil.collapseView
3838
import com.ichi2.ui.AnimationUtil.expandView
3939
import java.util.Locale
4040

4141
@KotlinCleanup("replace _name with `field`")
4242
class FieldEditLine : FrameLayout {
43-
val binding = CardMultimediaEditlineBinding.inflate(LayoutInflater.from(context), this, true)
43+
val binding = ViewCardMultimediaEditlineBinding.inflate(LayoutInflater.from(context), this, true)
4444
private var _name: String? = null
4545
private var expansionState = ExpansionState.EXPANDED
4646

AnkiDroid/src/main/java/com/ichi2/anki/NoteEditorActivity.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import com.ichi2.anki.NoteEditorActivity.Companion.FRAGMENT_ARGS_EXTRA
2727
import com.ichi2.anki.NoteEditorActivity.Companion.FRAGMENT_NAME_EXTRA
2828
import com.ichi2.anki.android.input.ShortcutGroup
2929
import com.ichi2.anki.android.input.ShortcutGroupProvider
30-
import com.ichi2.anki.databinding.NoteEditorBinding
30+
import com.ichi2.anki.databinding.ActivityNoteEditorBinding
3131
import com.ichi2.anki.libanki.Collection
3232
import com.ichi2.anki.noteeditor.NoteEditorFragmentDelegate
3333
import com.ichi2.anki.noteeditor.NoteEditorLauncher
@@ -85,7 +85,7 @@ class NoteEditorActivity :
8585
val fragmented: Boolean
8686
get() = previewerFrame?.isVisible == true
8787

88-
private lateinit var binding: NoteEditorBinding
88+
private lateinit var binding: ActivityNoteEditorBinding
8989

9090
override fun onCreate(savedInstanceState: Bundle?) {
9191
if (showedActivityFailedScreen(savedInstanceState)) {
@@ -96,7 +96,7 @@ class NoteEditorActivity :
9696
return
9797
}
9898

99-
binding = NoteEditorBinding.inflate(layoutInflater)
99+
binding = ActivityNoteEditorBinding.inflate(layoutInflater)
100100
setContentView(binding.root)
101101

102102
previewerFrame = binding.previewerFrame

AnkiDroid/src/main/java/com/ichi2/anki/dialogs/BrowserOptionsDialog.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,17 @@ import com.ichi2.anki.CollectionManager.TR
2626
import com.ichi2.anki.R
2727
import com.ichi2.anki.browser.BrowserColumnSelectionFragment
2828
import com.ichi2.anki.browser.CardBrowserViewModel
29-
import com.ichi2.anki.databinding.BrowserOptionsDialogBinding
29+
import com.ichi2.anki.databinding.DialogBrowserOptionsBinding
3030
import com.ichi2.anki.model.CardsOrNotes
3131
import com.ichi2.utils.create
3232
import com.ichi2.utils.negativeButton
3333
import com.ichi2.utils.positiveButton
3434
import timber.log.Timber
3535

36-
class BrowserOptionsDialog : AppCompatDialogFragment(R.layout.browser_options_dialog) {
36+
class BrowserOptionsDialog : AppCompatDialogFragment(R.layout.dialog_browser_options) {
3737
private val viewModel: CardBrowserViewModel by activityViewModels()
3838

39-
private lateinit var binding: BrowserOptionsDialogBinding
39+
private lateinit var binding: DialogBrowserOptionsBinding
4040

4141
/** The unsaved value of [CardsOrNotes] */
4242
private val dialogCardsOrNotes: CardsOrNotes
@@ -84,7 +84,7 @@ class BrowserOptionsDialog : AppCompatDialogFragment(R.layout.browser_options_di
8484
}
8585

8686
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
87-
binding = BrowserOptionsDialogBinding.inflate(layoutInflater)
87+
binding = DialogBrowserOptionsBinding.inflate(layoutInflater)
8888

8989
if (cardsOrNotes == CardsOrNotes.CARDS) {
9090
binding.selectCardsMode.isChecked = true

AnkiDroid/src/main/java/com/ichi2/anki/dialogs/tags/TagsDialog.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ import com.ichi2.anki.R
3535
import com.ichi2.anki.analytics.AnalyticsDialogFragment
3636
import com.ichi2.anki.browser.IdsFile
3737
import com.ichi2.anki.common.annotations.NeedsTest
38-
import com.ichi2.anki.databinding.TagsDialogBinding
38+
import com.ichi2.anki.databinding.DialogTagsBinding
3939
import com.ichi2.anki.launchCatchingTask
4040
import com.ichi2.anki.libanki.NoteId
4141
import com.ichi2.anki.libanki.withCollapsedWhitespace
@@ -80,7 +80,7 @@ class TagsDialog : AnalyticsDialogFragment {
8080
CUSTOM_STUDY,
8181
}
8282

83-
private lateinit var binding: TagsDialogBinding
83+
private lateinit var binding: DialogTagsBinding
8484
private var type: DialogType? = null
8585
private var tagsArrayAdapter: TagsArrayAdapter? = null
8686
private var toolbarSearchView: AccessibleSearchView? = null
@@ -175,7 +175,7 @@ class TagsDialog : AnalyticsDialogFragment {
175175
"filled as prefix properly. In other dialog types, long-clicking a tag behaves like a short click.",
176176
)
177177
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
178-
binding = TagsDialogBinding.inflate(layoutInflater)
178+
binding = DialogTagsBinding.inflate(layoutInflater)
179179

180180
val positiveText =
181181
if (type == DialogType.EDIT_TAGS) {

AnkiDroid/src/main/java/com/ichi2/anki/previewer/TemplatePreviewerFragment.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import androidx.fragment.app.viewModels
2222
import androidx.lifecycle.lifecycleScope
2323
import com.google.android.material.tabs.TabLayout
2424
import com.ichi2.anki.R
25-
import com.ichi2.anki.databinding.TemplatePreviewerBinding
25+
import com.ichi2.anki.databinding.FragmentTemplatePreviewerBinding
2626
import com.ichi2.anki.launchCatchingTask
2727
import com.ichi2.anki.snackbar.BaseSnackbarBuilderProvider
2828
import com.ichi2.anki.snackbar.SnackbarBuilder
@@ -36,11 +36,11 @@ import kotlinx.coroutines.flow.onEach
3636
import timber.log.Timber
3737

3838
class TemplatePreviewerFragment :
39-
CardViewerFragment(R.layout.template_previewer),
39+
CardViewerFragment(R.layout.fragment_template_previewer),
4040
BaseSnackbarBuilderProvider {
4141
override val viewModel: TemplatePreviewerViewModel by viewModels()
4242

43-
lateinit var binding: TemplatePreviewerBinding
43+
lateinit var binding: FragmentTemplatePreviewerBinding
4444

4545
override val webViewLayout: SafeWebViewLayout get() = binding.webViewLayout
4646

@@ -53,7 +53,7 @@ class TemplatePreviewerFragment :
5353
) {
5454
// binding must be set before super.onViewCreated
5555
// as super.onViewCreated depends on webViewLayout, which depends on the binding
56-
binding = TemplatePreviewerBinding.bind(view)
56+
binding = FragmentTemplatePreviewerBinding.bind(view)
5757

5858
super.onViewCreated(view, savedInstanceState)
5959

AnkiDroid/src/main/java/com/ichi2/anki/ui/windows/permissions/PermissionsItem.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import android.widget.FrameLayout
2323
import androidx.core.content.withStyledAttributes
2424
import com.google.android.material.color.MaterialColors
2525
import com.ichi2.anki.R
26-
import com.ichi2.anki.databinding.PermissionsItemBinding
26+
import com.ichi2.anki.databinding.ViewPermissionsItemBinding
2727
import com.ichi2.anki.utils.ext.usingStyledAttributes
2828
import com.ichi2.utils.Permissions
2929
import timber.log.Timber
@@ -54,7 +54,7 @@ class PermissionsItem(
5454
context: Context,
5555
attrs: AttributeSet,
5656
) : FrameLayout(context, attrs) {
57-
val binding = PermissionsItemBinding.inflate(LayoutInflater.from(context), this, true)
57+
val binding = ViewPermissionsItemBinding.inflate(LayoutInflater.from(context), this, true)
5858

5959
/**
6060
* The value of either app:permissions or app:permission.

AnkiDroid/src/main/java/com/ichi2/anki/ui/windows/reviewer/audiorecord/AudioPlayView.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@ import android.view.LayoutInflater
2121
import android.view.animation.DecelerateInterpolator
2222
import androidx.annotation.DrawableRes
2323
import androidx.constraintlayout.widget.ConstraintLayout
24-
import com.ichi2.anki.databinding.AudioPlayViewBinding
24+
import com.ichi2.anki.databinding.ViewAudioPlayBinding
2525

2626
/**
2727
* Simple player with a progress bar, a play button and a cancel button
2828
*/
2929
class AudioPlayView : ConstraintLayout {
30-
private val binding = AudioPlayViewBinding.inflate(LayoutInflater.from(context), this, true)
30+
private val binding = ViewAudioPlayBinding.inflate(LayoutInflater.from(context), this, true)
3131

3232
constructor(context: Context) : this(context, null, 0, 0)
3333
constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0, 0)

AnkiDroid/src/main/java/com/ichi2/ui/AxisSelector.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import android.util.AttributeSet
2121
import android.view.LayoutInflater
2222
import android.widget.LinearLayout
2323
import com.ichi2.anki.R
24-
import com.ichi2.anki.databinding.AxisDisplayBinding
24+
import com.ichi2.anki.databinding.ViewAxisDisplayBinding
2525
import com.ichi2.anki.reviewer.Axis
2626
import com.ichi2.anki.reviewer.Binding
2727
import timber.log.Timber
@@ -30,13 +30,13 @@ import timber.log.Timber
3030
* Displays live values of an [Axis] (joystick/trigger), and allows selection of a binding if an
3131
* [extremity][AxisValueDisplay.isExtremity] has been received
3232
*
33-
* The [axisName][AxisDisplayBinding.axisName] of the Axis (AXIS_X)
33+
* The [axisName][ViewAxisDisplayBinding.axisName] of the Axis (AXIS_X)
3434
*
3535
* The [value] of the Axis [-1, 1]
3636
* - If a value hits an extremity, the display changes color. See [AxisValueDisplay]
3737
*
38-
* Two buttons: [selectMinExtremity][AxisDisplayBinding.selectMinExtremity] and
39-
* [selectMaxExtremity][AxisDisplayBinding.selectMaxExtremity]
38+
* Two buttons: [selectMinExtremity][ViewAxisDisplayBinding.selectMinExtremity] and
39+
* [selectMaxExtremity][ViewAxisDisplayBinding.selectMaxExtremity]
4040
* - If an [extremity][AxisValueDisplay.isExtremity] is reached, these are activated
4141
* - Calls [onExtremitySelectedListener] if tapped
4242
*
@@ -52,7 +52,7 @@ class AxisSelector : LinearLayout {
5252
defStyle,
5353
)
5454

55-
private val binding = AxisDisplayBinding.inflate(LayoutInflater.from(context), this, true)
55+
private val binding = ViewAxisDisplayBinding.inflate(LayoutInflater.from(context), this, true)
5656

5757
private var onExtremitySelectedListener: ((Binding.AxisButtonBinding) -> Unit)? = null
5858

0 commit comments

Comments
 (0)