From ccbd77918b5eccec6522cca21c7c8c0a55179b81 Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Sun, 29 Jan 2023 19:55:53 -0700 Subject: [PATCH] all: add di framework Add dagger/hilt dependency injection. Does nothing right now, will actually add modules later. --- app/build.gradle | 12 ++++++++++-- app/src/main/java/org/oxycblt/auxio/Auxio.kt | 2 ++ app/src/main/java/org/oxycblt/auxio/MainActivity.kt | 2 ++ app/src/main/java/org/oxycblt/auxio/MainFragment.kt | 2 ++ .../org/oxycblt/auxio/detail/AlbumDetailFragment.kt | 2 ++ .../org/oxycblt/auxio/detail/ArtistDetailFragment.kt | 2 ++ .../org/oxycblt/auxio/detail/GenreDetailFragment.kt | 2 ++ .../org/oxycblt/auxio/detail/SongDetailDialog.kt | 2 ++ .../main/java/org/oxycblt/auxio/home/HomeFragment.kt | 2 ++ .../org/oxycblt/auxio/home/list/AlbumListFragment.kt | 2 ++ .../oxycblt/auxio/home/list/ArtistListFragment.kt | 2 ++ .../org/oxycblt/auxio/home/list/GenreListFragment.kt | 2 ++ .../org/oxycblt/auxio/home/list/SongListFragment.kt | 2 ++ .../oxycblt/auxio/home/tabs/TabCustomizeDialog.kt | 2 ++ .../music/picker/ArtistNavigationPickerDialog.kt | 2 ++ .../oxycblt/auxio/music/picker/ArtistPickerDialog.kt | 2 ++ .../auxio/music/picker/ArtistPlaybackPickerDialog.kt | 2 ++ .../auxio/music/picker/GenrePlaybackPickerDialog.kt | 2 ++ .../oxycblt/auxio/music/storage/MusicDirsDialog.kt | 2 ++ .../org/oxycblt/auxio/music/system/IndexerService.kt | 2 ++ .../oxycblt/auxio/playback/PlaybackBarFragment.kt | 2 ++ .../oxycblt/auxio/playback/PlaybackPanelFragment.kt | 2 ++ .../oxycblt/auxio/playback/queue/QueueFragment.kt | 2 ++ .../oxycblt/auxio/playback/system/PlaybackService.kt | 2 ++ .../java/org/oxycblt/auxio/search/SearchFragment.kt | 2 ++ .../java/org/oxycblt/auxio/settings/AboutFragment.kt | 2 ++ .../oxycblt/auxio/settings/RootPreferenceFragment.kt | 2 ++ .../oxycblt/auxio/ui/accent/AccentCustomizeDialog.kt | 2 ++ build.gradle | 2 ++ 29 files changed, 66 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 3cba147ea..cfc8f743b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,7 +4,8 @@ plugins { id "androidx.navigation.safeargs.kotlin" id "com.diffplug.spotless" id "kotlin-parcelize" - id 'kotlin-kapt' + id "dagger.hilt.android.plugin" + id "kotlin-kapt" } android { @@ -118,7 +119,14 @@ dependencies { // Locked below 1.7.0-alpha03 to avoid the same ripple bug implementation "com.google.android.material:material:1.7.0-alpha02" - // Development + // Dependency Injection + def dagger_version = "2.40" + implementation "com.google.dagger:dagger:$dagger_version" + kapt "com.google.dagger:dagger-compiler:$dagger_version" + implementation "com.google.dagger:hilt-android:$hilt_version" + kapt "com.google.dagger:hilt-android-compiler:$hilt_version" + + // Testing debugImplementation "com.squareup.leakcanary:leakcanary-android:2.9.1" testImplementation "junit:junit:4.13.2" androidTestImplementation 'androidx.test.ext:junit:1.1.5' diff --git a/app/src/main/java/org/oxycblt/auxio/Auxio.kt b/app/src/main/java/org/oxycblt/auxio/Auxio.kt index bcb8777e8..a545b8b18 100644 --- a/app/src/main/java/org/oxycblt/auxio/Auxio.kt +++ b/app/src/main/java/org/oxycblt/auxio/Auxio.kt @@ -25,6 +25,7 @@ import androidx.core.graphics.drawable.IconCompat import coil.ImageLoader import coil.ImageLoaderFactory import coil.request.CachePolicy +import dagger.hilt.android.HiltAndroidApp import org.oxycblt.auxio.image.ImageSettings import org.oxycblt.auxio.image.extractor.AlbumCoverFetcher import org.oxycblt.auxio.image.extractor.ArtistImageFetcher @@ -38,6 +39,7 @@ import org.oxycblt.auxio.ui.UISettings * A simple, rational music player for android. * @author Alexander Capehart (OxygenCobalt) */ +@HiltAndroidApp class Auxio : Application(), ImageLoaderFactory { override fun onCreate() { super.onCreate() diff --git a/app/src/main/java/org/oxycblt/auxio/MainActivity.kt b/app/src/main/java/org/oxycblt/auxio/MainActivity.kt index 201abbd18..cdf21c75e 100644 --- a/app/src/main/java/org/oxycblt/auxio/MainActivity.kt +++ b/app/src/main/java/org/oxycblt/auxio/MainActivity.kt @@ -24,6 +24,7 @@ import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatDelegate import androidx.core.view.WindowCompat import androidx.core.view.updatePadding +import dagger.hilt.android.AndroidEntryPoint import org.oxycblt.auxio.databinding.ActivityMainBinding import org.oxycblt.auxio.music.system.IndexerService import org.oxycblt.auxio.playback.PlaybackViewModel @@ -50,6 +51,7 @@ import org.oxycblt.auxio.util.systemBarInsetsCompat * * @author Alexander Capehart (OxygenCobalt) */ +@AndroidEntryPoint class MainActivity : AppCompatActivity() { private val playbackModel: PlaybackViewModel by androidViewModels() diff --git a/app/src/main/java/org/oxycblt/auxio/MainFragment.kt b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt index 8b93763f5..860358542 100644 --- a/app/src/main/java/org/oxycblt/auxio/MainFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt @@ -33,6 +33,7 @@ import androidx.navigation.fragment.findNavController import com.google.android.material.bottomsheet.BackportBottomSheetBehavior import com.google.android.material.shape.MaterialShapeDrawable import com.google.android.material.transition.MaterialFadeThrough +import dagger.hilt.android.AndroidEntryPoint import kotlin.math.max import kotlin.math.min import org.oxycblt.auxio.databinding.FragmentMainBinding @@ -52,6 +53,7 @@ import org.oxycblt.auxio.util.* * high-level navigation features. * @author Alexander Capehart (OxygenCobalt) */ +@AndroidEntryPoint class MainFragment : ViewBindingFragment(), ViewTreeObserver.OnPreDrawListener, diff --git a/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt index 72cefeacd..4a6f74a32 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt @@ -26,6 +26,7 @@ import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import androidx.recyclerview.widget.LinearSmoothScroller import com.google.android.material.transition.MaterialSharedAxis +import dagger.hilt.android.AndroidEntryPoint import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.FragmentDetailBinding import org.oxycblt.auxio.detail.recycler.AlbumDetailAdapter @@ -48,6 +49,7 @@ import org.oxycblt.auxio.util.* * A [ListFragment] that shows information about an [Album]. * @author Alexander Capehart (OxygenCobalt) */ +@AndroidEntryPoint class AlbumDetailFragment : ListFragment(), AlbumDetailAdapter.Listener { private val detailModel: DetailViewModel by activityViewModels() diff --git a/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt index 995c35ade..88c007344 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt @@ -25,6 +25,7 @@ import androidx.fragment.app.activityViewModels import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import com.google.android.material.transition.MaterialSharedAxis +import dagger.hilt.android.AndroidEntryPoint import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.FragmentDetailBinding import org.oxycblt.auxio.detail.recycler.ArtistDetailAdapter @@ -52,6 +53,7 @@ import org.oxycblt.auxio.util.unlikelyToBeNull * A [ListFragment] that shows information about an [Artist]. * @author Alexander Capehart (OxygenCobalt) */ +@AndroidEntryPoint class ArtistDetailFragment : ListFragment(), DetailAdapter.Listener { private val detailModel: DetailViewModel by activityViewModels() diff --git a/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt index 571780a4e..c0173171a 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt @@ -25,6 +25,7 @@ import androidx.fragment.app.activityViewModels import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import com.google.android.material.transition.MaterialSharedAxis +import dagger.hilt.android.AndroidEntryPoint import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.FragmentDetailBinding import org.oxycblt.auxio.detail.recycler.DetailAdapter @@ -53,6 +54,7 @@ import org.oxycblt.auxio.util.unlikelyToBeNull * A [ListFragment] that shows information for a particular [Genre]. * @author Alexander Capehart (OxygenCobalt) */ +@AndroidEntryPoint class GenreDetailFragment : ListFragment(), DetailAdapter.Listener { private val detailModel: DetailViewModel by activityViewModels() diff --git a/app/src/main/java/org/oxycblt/auxio/detail/SongDetailDialog.kt b/app/src/main/java/org/oxycblt/auxio/detail/SongDetailDialog.kt index 45779f597..798fc78d1 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/SongDetailDialog.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/SongDetailDialog.kt @@ -24,6 +24,7 @@ import androidx.appcompat.app.AlertDialog import androidx.core.view.isInvisible import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs +import dagger.hilt.android.AndroidEntryPoint import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.DialogSongDetailBinding import org.oxycblt.auxio.music.Song @@ -37,6 +38,7 @@ import org.oxycblt.auxio.util.collectImmediately * A [ViewBindingDialogFragment] that shows information about a Song. * @author Alexander Capehart (OxygenCobalt) */ +@AndroidEntryPoint class SongDetailDialog : ViewBindingDialogFragment() { private val detailModel: DetailViewModel by androidActivityViewModels() // Information about what song to display is initially within the navigation arguments diff --git a/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt index f30ef9ff6..402fbb205 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt @@ -37,6 +37,7 @@ import androidx.viewpager2.widget.ViewPager2 import com.google.android.material.appbar.AppBarLayout import com.google.android.material.tabs.TabLayoutMediator import com.google.android.material.transition.MaterialSharedAxis +import dagger.hilt.android.AndroidEntryPoint import java.lang.reflect.Field import kotlin.math.abs import org.oxycblt.auxio.BuildConfig @@ -64,6 +65,7 @@ import org.oxycblt.auxio.util.* * to other views. * @author Alexander Capehart (OxygenCobalt) */ +@AndroidEntryPoint class HomeFragment : SelectionFragment(), AppBarLayout.OnOffsetChangedListener { private val homeModel: HomeViewModel by androidActivityViewModels() diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/AlbumListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/AlbumListFragment.kt index ab83a1c80..894f7e42d 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/AlbumListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/AlbumListFragment.kt @@ -23,6 +23,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.activityViewModels +import dagger.hilt.android.AndroidEntryPoint import java.util.Formatter import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.FragmentHomeListBinding @@ -48,6 +49,7 @@ import org.oxycblt.auxio.util.collectImmediately * A [ListFragment] that shows a list of [Album]s. * @author Alexander Capehart (OxygenCobalt) */ +@AndroidEntryPoint class AlbumListFragment : ListFragment(), FastScrollRecyclerView.Listener, diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/ArtistListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/ArtistListFragment.kt index 0f0dbc618..2ac8ea745 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/ArtistListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/ArtistListFragment.kt @@ -22,6 +22,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.activityViewModels +import dagger.hilt.android.AndroidEntryPoint import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.FragmentHomeListBinding import org.oxycblt.auxio.home.HomeViewModel @@ -49,6 +50,7 @@ import org.oxycblt.auxio.util.nonZeroOrNull * A [ListFragment] that shows a list of [Artist]s. * @author Alexander Capehart (OxygenCobalt) */ +@AndroidEntryPoint class ArtistListFragment : ListFragment(), FastScrollRecyclerView.PopupProvider, diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/GenreListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/GenreListFragment.kt index e5bfa355d..c71929803 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/GenreListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/GenreListFragment.kt @@ -22,6 +22,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.activityViewModels +import dagger.hilt.android.AndroidEntryPoint import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.FragmentHomeListBinding import org.oxycblt.auxio.home.HomeViewModel @@ -48,6 +49,7 @@ import org.oxycblt.auxio.util.collectImmediately * A [ListFragment] that shows a list of [Genre]s. * @author Alexander Capehart (OxygenCobalt) */ +@AndroidEntryPoint class GenreListFragment : ListFragment(), FastScrollRecyclerView.PopupProvider, diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt index e2aa8bbbb..18d918d70 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt @@ -23,6 +23,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.activityViewModels +import dagger.hilt.android.AndroidEntryPoint import java.util.Formatter import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.FragmentHomeListBinding @@ -51,6 +52,7 @@ import org.oxycblt.auxio.util.collectImmediately * A [ListFragment] that shows a list of [Song]s. * @author Alexander Capehart (OxygenCobalt) */ +@AndroidEntryPoint class SongListFragment : ListFragment(), FastScrollRecyclerView.PopupProvider, diff --git a/app/src/main/java/org/oxycblt/auxio/home/tabs/TabCustomizeDialog.kt b/app/src/main/java/org/oxycblt/auxio/home/tabs/TabCustomizeDialog.kt index e514413a4..595b17096 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/tabs/TabCustomizeDialog.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/tabs/TabCustomizeDialog.kt @@ -22,6 +22,7 @@ import android.view.LayoutInflater import androidx.appcompat.app.AlertDialog import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.RecyclerView +import dagger.hilt.android.AndroidEntryPoint import org.oxycblt.auxio.BuildConfig import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.DialogTabsBinding @@ -34,6 +35,7 @@ import org.oxycblt.auxio.util.logD * A [ViewBindingDialogFragment] that allows the user to modify the home [Tab] configuration. * @author Alexander Capehart (OxygenCobalt) */ +@AndroidEntryPoint class TabCustomizeDialog : ViewBindingDialogFragment(), EditableListListener { private val tabAdapter = TabAdapter(this) diff --git a/app/src/main/java/org/oxycblt/auxio/music/picker/ArtistNavigationPickerDialog.kt b/app/src/main/java/org/oxycblt/auxio/music/picker/ArtistNavigationPickerDialog.kt index 99be53312..804277ff6 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/picker/ArtistNavigationPickerDialog.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/picker/ArtistNavigationPickerDialog.kt @@ -21,6 +21,7 @@ import android.os.Bundle import androidx.fragment.app.activityViewModels import androidx.navigation.fragment.navArgs import androidx.recyclerview.widget.RecyclerView +import dagger.hilt.android.AndroidEntryPoint import org.oxycblt.auxio.databinding.DialogMusicPickerBinding import org.oxycblt.auxio.music.Artist import org.oxycblt.auxio.ui.NavigationViewModel @@ -29,6 +30,7 @@ import org.oxycblt.auxio.ui.NavigationViewModel * An [ArtistPickerDialog] intended for when [Artist] navigation is ambiguous. * @author Alexander Capehart (OxygenCobalt) */ +@AndroidEntryPoint class ArtistNavigationPickerDialog : ArtistPickerDialog() { private val navModel: NavigationViewModel by activityViewModels() // Information about what Song to show choices for is initially within the navigation arguments diff --git a/app/src/main/java/org/oxycblt/auxio/music/picker/ArtistPickerDialog.kt b/app/src/main/java/org/oxycblt/auxio/music/picker/ArtistPickerDialog.kt index 0e537e3ea..716841a9f 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/picker/ArtistPickerDialog.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/picker/ArtistPickerDialog.kt @@ -23,6 +23,7 @@ import androidx.appcompat.app.AlertDialog import androidx.fragment.app.viewModels import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.RecyclerView +import dagger.hilt.android.AndroidEntryPoint import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.DialogMusicPickerBinding import org.oxycblt.auxio.list.ClickableListListener @@ -36,6 +37,7 @@ import org.oxycblt.auxio.util.collectImmediately * to choose from. * @author Alexander Capehart (OxygenCobalt) */ +@AndroidEntryPoint abstract class ArtistPickerDialog : ViewBindingDialogFragment(), ClickableListListener { protected val pickerModel: PickerViewModel by viewModels() diff --git a/app/src/main/java/org/oxycblt/auxio/music/picker/ArtistPlaybackPickerDialog.kt b/app/src/main/java/org/oxycblt/auxio/music/picker/ArtistPlaybackPickerDialog.kt index 186404a9d..367584f95 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/picker/ArtistPlaybackPickerDialog.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/picker/ArtistPlaybackPickerDialog.kt @@ -20,6 +20,7 @@ package org.oxycblt.auxio.music.picker import android.os.Bundle import androidx.navigation.fragment.navArgs import androidx.recyclerview.widget.RecyclerView +import dagger.hilt.android.AndroidEntryPoint import org.oxycblt.auxio.databinding.DialogMusicPickerBinding import org.oxycblt.auxio.music.Artist import org.oxycblt.auxio.music.Song @@ -32,6 +33,7 @@ import org.oxycblt.auxio.util.unlikelyToBeNull * An [ArtistPickerDialog] intended for when [Artist] playback is ambiguous. * @author Alexander Capehart (OxygenCobalt) */ +@AndroidEntryPoint class ArtistPlaybackPickerDialog : ArtistPickerDialog() { private val playbackModel: PlaybackViewModel by androidActivityViewModels() // Information about what Song to show choices for is initially within the navigation arguments diff --git a/app/src/main/java/org/oxycblt/auxio/music/picker/GenrePlaybackPickerDialog.kt b/app/src/main/java/org/oxycblt/auxio/music/picker/GenrePlaybackPickerDialog.kt index dc7b3d6af..e52896dea 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/picker/GenrePlaybackPickerDialog.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/picker/GenrePlaybackPickerDialog.kt @@ -24,6 +24,7 @@ import androidx.fragment.app.viewModels import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import androidx.recyclerview.widget.RecyclerView +import dagger.hilt.android.AndroidEntryPoint import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.DialogMusicPickerBinding import org.oxycblt.auxio.list.ClickableListListener @@ -40,6 +41,7 @@ import org.oxycblt.auxio.util.unlikelyToBeNull * A picker [ViewBindingDialogFragment] intended for when [Genre] playback is ambiguous. * @author Alexander Capehart (OxygenCobalt) */ +@AndroidEntryPoint class GenrePlaybackPickerDialog : ViewBindingDialogFragment(), ClickableListListener { private val pickerModel: PickerViewModel by viewModels() diff --git a/app/src/main/java/org/oxycblt/auxio/music/storage/MusicDirsDialog.kt b/app/src/main/java/org/oxycblt/auxio/music/storage/MusicDirsDialog.kt index 3db2c0dff..c09043b4c 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/storage/MusicDirsDialog.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/storage/MusicDirsDialog.kt @@ -28,6 +28,7 @@ import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AlertDialog import androidx.core.view.ViewCompat import androidx.core.view.isVisible +import dagger.hilt.android.AndroidEntryPoint import org.oxycblt.auxio.BuildConfig import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.DialogMusicDirsBinding @@ -41,6 +42,7 @@ import org.oxycblt.auxio.util.showToast * Dialog that manages the music dirs setting. * @author Alexander Capehart (OxygenCobalt) */ +@AndroidEntryPoint class MusicDirsDialog : ViewBindingDialogFragment(), DirectoryAdapter.Listener { private val dirAdapter = DirectoryAdapter(this) diff --git a/app/src/main/java/org/oxycblt/auxio/music/system/IndexerService.kt b/app/src/main/java/org/oxycblt/auxio/music/system/IndexerService.kt index 79f0d5d96..547fb4b01 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/system/IndexerService.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/system/IndexerService.kt @@ -26,6 +26,7 @@ import android.os.Looper import android.os.PowerManager import android.provider.MediaStore import coil.imageLoader +import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -53,6 +54,7 @@ import org.oxycblt.auxio.util.logD * * @author Alexander Capehart (OxygenCobalt) */ +@AndroidEntryPoint class IndexerService : Service(), Indexer.Controller, MusicSettings.Listener { private val indexer = Indexer.get() private val musicRepository = MusicRepository.get() diff --git a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackBarFragment.kt b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackBarFragment.kt index 5addedb70..deee9f8c0 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackBarFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackBarFragment.kt @@ -20,6 +20,7 @@ package org.oxycblt.auxio.playback import android.os.Bundle import android.view.LayoutInflater import androidx.fragment.app.activityViewModels +import dagger.hilt.android.AndroidEntryPoint import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.FragmentPlaybackBarBinding import org.oxycblt.auxio.music.Song @@ -36,6 +37,7 @@ import org.oxycblt.auxio.util.getColorCompat * A [ViewBindingFragment] that shows the current playback state in a compact manner. * @author Alexander Capehart (OxygenCobalt) */ +@AndroidEntryPoint class PlaybackBarFragment : ViewBindingFragment() { private val playbackModel: PlaybackViewModel by androidActivityViewModels() private val navModel: NavigationViewModel by activityViewModels() diff --git a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackPanelFragment.kt b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackPanelFragment.kt index d5450722d..61bd598b1 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackPanelFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackPanelFragment.kt @@ -28,6 +28,7 @@ import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.widget.Toolbar import androidx.core.view.updatePadding import androidx.fragment.app.activityViewModels +import dagger.hilt.android.AndroidEntryPoint import org.oxycblt.auxio.MainFragmentDirections import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.FragmentPlaybackPanelBinding @@ -48,6 +49,7 @@ import org.oxycblt.auxio.util.systemBarInsetsCompat * available controls. * @author Alexander Capehart (OxygenCobalt) */ +@AndroidEntryPoint class PlaybackPanelFragment : ViewBindingFragment(), Toolbar.OnMenuItemClickListener, diff --git a/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueFragment.kt b/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueFragment.kt index 50c363721..96902a31e 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueFragment.kt @@ -24,6 +24,7 @@ import androidx.fragment.app.activityViewModels import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView +import dagger.hilt.android.AndroidEntryPoint import kotlin.math.min import org.oxycblt.auxio.databinding.FragmentQueueBinding import org.oxycblt.auxio.list.EditableListListener @@ -38,6 +39,7 @@ import org.oxycblt.auxio.util.collectImmediately * A [ViewBindingFragment] that displays an editable queue. * @author Alexander Capehart (OxygenCobalt) */ +@AndroidEntryPoint class QueueFragment : ViewBindingFragment(), EditableListListener { private val queueModel: QueueViewModel by activityViewModels() private val playbackModel: PlaybackViewModel by androidActivityViewModels() diff --git a/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackService.kt b/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackService.kt index b9fd8fe3d..dfcf54188 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackService.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackService.kt @@ -38,6 +38,7 @@ import com.google.android.exoplayer2.ext.flac.LibflacAudioRenderer import com.google.android.exoplayer2.extractor.DefaultExtractorsFactory import com.google.android.exoplayer2.mediacodec.MediaCodecSelector import com.google.android.exoplayer2.source.DefaultMediaSourceFactory +import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -75,6 +76,7 @@ import org.oxycblt.auxio.widgets.WidgetProvider * * @author Alexander Capehart (OxygenCobalt) */ +@AndroidEntryPoint class PlaybackService : Service(), Player.Listener, diff --git a/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt b/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt index ac5e2b8dc..5bcf805d3 100644 --- a/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt @@ -28,6 +28,7 @@ import androidx.core.widget.addTextChangedListener import androidx.fragment.app.activityViewModels import androidx.navigation.fragment.findNavController import com.google.android.material.transition.MaterialSharedAxis +import dagger.hilt.android.AndroidEntryPoint import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.FragmentSearchBinding import org.oxycblt.auxio.list.Item @@ -53,6 +54,7 @@ import org.oxycblt.auxio.util.* * * @author Alexander Capehart (OxygenCobalt) */ +@AndroidEntryPoint class SearchFragment : ListFragment() { private val searchModel: SearchViewModel by androidViewModels() override val navModel: NavigationViewModel by activityViewModels() diff --git a/app/src/main/java/org/oxycblt/auxio/settings/AboutFragment.kt b/app/src/main/java/org/oxycblt/auxio/settings/AboutFragment.kt index aa94552d8..c5a01cfb5 100644 --- a/app/src/main/java/org/oxycblt/auxio/settings/AboutFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/settings/AboutFragment.kt @@ -28,6 +28,7 @@ import androidx.core.view.updatePadding import androidx.fragment.app.activityViewModels import androidx.navigation.fragment.findNavController import com.google.android.material.transition.MaterialFadeThrough +import dagger.hilt.android.AndroidEntryPoint import org.oxycblt.auxio.BuildConfig import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.FragmentAboutBinding @@ -43,6 +44,7 @@ import org.oxycblt.auxio.util.systemBarInsetsCompat * A [ViewBindingFragment] that displays information about the app and the current music library. * @author Alexander Capehart (OxygenCobalt) */ +@AndroidEntryPoint class AboutFragment : ViewBindingFragment() { private val musicModel: MusicViewModel by activityViewModels() diff --git a/app/src/main/java/org/oxycblt/auxio/settings/RootPreferenceFragment.kt b/app/src/main/java/org/oxycblt/auxio/settings/RootPreferenceFragment.kt index 4bb3acecb..1cc0ed126 100644 --- a/app/src/main/java/org/oxycblt/auxio/settings/RootPreferenceFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/settings/RootPreferenceFragment.kt @@ -24,6 +24,7 @@ import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat import com.google.android.material.transition.MaterialFadeThrough import com.google.android.material.transition.MaterialSharedAxis +import dagger.hilt.android.AndroidEntryPoint import org.oxycblt.auxio.R import org.oxycblt.auxio.music.MusicViewModel import org.oxycblt.auxio.playback.PlaybackViewModel @@ -35,6 +36,7 @@ import org.oxycblt.auxio.util.showToast * The [PreferenceFragmentCompat] that displays the root settings list. * @author Alexander Capehart (OxygenCobalt) */ +@AndroidEntryPoint class RootPreferenceFragment : BasePreferenceFragment(R.xml.preferences_root) { private val playbackModel: PlaybackViewModel by androidActivityViewModels() private val musicModel: MusicViewModel by activityViewModels() diff --git a/app/src/main/java/org/oxycblt/auxio/ui/accent/AccentCustomizeDialog.kt b/app/src/main/java/org/oxycblt/auxio/ui/accent/AccentCustomizeDialog.kt index c1ec29ad2..6056e76e6 100644 --- a/app/src/main/java/org/oxycblt/auxio/ui/accent/AccentCustomizeDialog.kt +++ b/app/src/main/java/org/oxycblt/auxio/ui/accent/AccentCustomizeDialog.kt @@ -21,6 +21,7 @@ import android.os.Bundle import android.view.LayoutInflater import androidx.appcompat.app.AlertDialog import androidx.recyclerview.widget.RecyclerView +import dagger.hilt.android.AndroidEntryPoint import org.oxycblt.auxio.BuildConfig import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.DialogAccentBinding @@ -34,6 +35,7 @@ import org.oxycblt.auxio.util.unlikelyToBeNull * A [ViewBindingDialogFragment] that allows the user to configure the current [Accent]. * @author Alexander Capehart (OxygenCobalt) */ +@AndroidEntryPoint class AccentCustomizeDialog : ViewBindingDialogFragment(), ClickableListListener { private var accentAdapter = AccentAdapter(this) diff --git a/build.gradle b/build.gradle index 4cf2d2bd6..70045f6e8 100644 --- a/build.gradle +++ b/build.gradle @@ -2,6 +2,7 @@ buildscript { ext { kotlin_version = '1.7.21' navigation_version = "2.5.3" + hilt_version = "2.42" } repositories { @@ -14,6 +15,7 @@ buildscript { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$navigation_version" classpath "com.diffplug.spotless:spotless-plugin-gradle:6.10.0" + classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files