From 4d6f75031afcc5cf08e44cce2779dc7a949c6e24 Mon Sep 17 00:00:00 2001 From: Prathamesh More Date: Mon, 27 Sep 2021 20:26:22 +0530 Subject: [PATCH] Converted Lyrics activity to fragment --- app/src/main/AndroidManifest.xml | 2 +- .../LyricsFragment.kt} | 49 +++-- .../monkey/retromusic/util/NavigationUtil.kt | 176 ++++++++---------- ...ctivity_lyrics.xml => fragment_lyrics.xml} | 7 +- app/src/main/res/navigation/main_graph.xml | 4 + 5 files changed, 113 insertions(+), 125 deletions(-) rename app/src/main/java/code/name/monkey/retromusic/{activities/LyricsActivity.kt => fragments/LyricsFragment.kt} (89%) rename app/src/main/res/layout/{activity_lyrics.xml => fragment_lyrics.xml} (91%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 917cad85..313c7e76 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -111,7 +111,7 @@ - + diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/LyricsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/LyricsFragment.kt similarity index 89% rename from app/src/main/java/code/name/monkey/retromusic/activities/LyricsActivity.kt rename to app/src/main/java/code/name/monkey/retromusic/fragments/LyricsFragment.kt index a0263db6..cf2b9229 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/LyricsActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/LyricsFragment.kt @@ -12,7 +12,7 @@ * See the GNU General Public License for more details. * */ -package code.name.monkey.retromusic.activities +package code.name.monkey.retromusic.fragments import android.os.Bundle import android.text.InputType @@ -20,13 +20,13 @@ import android.view.* import androidx.core.view.ViewCompat import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentActivity +import androidx.navigation.fragment.findNavController import androidx.viewpager2.adapter.FragmentStateAdapter import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper import code.name.monkey.retromusic.R -import code.name.monkey.retromusic.activities.base.AbsMusicServiceActivity import code.name.monkey.retromusic.activities.tageditor.WriteTagsAsyncTask -import code.name.monkey.retromusic.databinding.ActivityLyricsBinding +import code.name.monkey.retromusic.databinding.FragmentLyricsBinding import code.name.monkey.retromusic.databinding.FragmentNormalLyricsBinding import code.name.monkey.retromusic.databinding.FragmentSyncedLyricsBinding import code.name.monkey.retromusic.extensions.accentColor @@ -53,12 +53,13 @@ import org.jaudiotagger.tag.FieldKey import java.io.File import java.util.* -class LyricsActivity : AbsMusicServiceActivity() { +class LyricsFragment : AbsMusicServiceFragment(R.layout.fragment_lyrics) { - private lateinit var binding: ActivityLyricsBinding + private var _binding: FragmentLyricsBinding? = null + private val binding get() = _binding!! private lateinit var song: Song - private val lyricsSectionsAdapter = LyricsSectionsAdapter(this) + private lateinit var lyricsSectionsAdapter: LyricsSectionsAdapter private val googleSearchLrcUrl: String get() { @@ -80,20 +81,18 @@ class LyricsActivity : AbsMusicServiceActivity() { private fun buildContainerTransform(): MaterialContainerTransform { val transform = MaterialContainerTransform() transform.setAllContainerColors( - MaterialColors.getColor(findViewById(R.id.container), R.attr.colorSurface) + MaterialColors.getColor(requireView().findViewById(R.id.container), R.attr.colorSurface) ) transform.addTarget(R.id.container) transform.duration = 300 return transform } - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = ActivityLyricsBinding.inflate(layoutInflater) - setContentView(binding.root) + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + lyricsSectionsAdapter = LyricsSectionsAdapter(requireActivity()) + _binding = FragmentLyricsBinding.bind(view) ViewCompat.setTransitionName(binding.container, "lyrics") - setStatusbarColorAuto() - setTaskDescriptionColorAuto() setupWakelock() @@ -101,12 +100,10 @@ class LyricsActivity : AbsMusicServiceActivity() { binding.tabLyrics.setBackgroundColor(surfaceColor()) binding.container.setBackgroundColor(surfaceColor()) ToolbarContentTintHelper.colorBackButton(binding.toolbar) - setSupportActionBar(binding.toolbar) setupViews() - + updateTitleSong() } - private fun setupViews() { binding.lyricsPager.adapter = lyricsSectionsAdapter TabLayoutMediator(binding.tabLyrics, binding.lyricsPager) { tab, position -> @@ -118,7 +115,7 @@ class LyricsActivity : AbsMusicServiceActivity() { }.attach() // lyricsPager.isUserInputEnabled = false - binding.tabLyrics.setSelectedTabIndicatorColor(ThemeStore.accentColor(this)) + binding.tabLyrics.setSelectedTabIndicatorColor(ThemeStore.accentColor(requireContext())) binding.tabLyrics.setTabTextColors(textColorSecondary(), accentColor()) } @@ -140,22 +137,22 @@ class LyricsActivity : AbsMusicServiceActivity() { } private fun setupWakelock() { - window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + requireActivity().window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } - override fun onCreateOptionsMenu(menu: Menu?): Boolean { - menuInflater.inflate(R.menu.menu_search, menu) - return super.onCreateOptionsMenu(menu) + override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { + inflater.inflate(R.menu.menu_search, menu) + return super.onCreateOptionsMenu(menu, inflater) } override fun onOptionsItemSelected(item: MenuItem): Boolean { if (item.itemId == android.R.id.home) { - finish() + findNavController().navigateUp() return true } if (item.itemId == R.id.action_search) { RetroUtil.openUrl( - this, when (binding.lyricsPager.currentItem) { + requireActivity(), when (binding.lyricsPager.currentItem) { 0 -> syairSearchLrcUrl 1 -> googleSearchLrcUrl else -> googleSearchLrcUrl @@ -184,7 +181,7 @@ class LyricsActivity : AbsMusicServiceActivity() { e.printStackTrace() } - MaterialDialog(this, BottomSheet(LayoutMode.WRAP_CONTENT)).show { + MaterialDialog(requireContext(), BottomSheet(LayoutMode.WRAP_CONTENT)).show { title(res = R.string.edit_normal_lyrics) input( hintRes = R.string.paste_lyrics_here, @@ -193,7 +190,7 @@ class LyricsActivity : AbsMusicServiceActivity() { ) { _, input -> val fieldKeyValueMap = EnumMap(FieldKey::class.java) fieldKeyValueMap[FieldKey.LYRICS] = input.toString() - WriteTagsAsyncTask(this@LyricsActivity).execute( + WriteTagsAsyncTask(requireActivity()).execute( LoadingInfo( listOf(song.data), fieldKeyValueMap, null ) @@ -216,7 +213,7 @@ class LyricsActivity : AbsMusicServiceActivity() { } val content: String = LyricUtil.getStringFromLrc(lrcFile) - MaterialDialog(this, BottomSheet(LayoutMode.WRAP_CONTENT)).show { + MaterialDialog(requireContext(), BottomSheet(LayoutMode.WRAP_CONTENT)).show { title(res = R.string.edit_synced_lyrics) input( hintRes = R.string.paste_timeframe_lyrics_here, diff --git a/app/src/main/java/code/name/monkey/retromusic/util/NavigationUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/NavigationUtil.kt index 17c9b343..a3b3624e 100755 --- a/app/src/main/java/code/name/monkey/retromusic/util/NavigationUtil.kt +++ b/app/src/main/java/code/name/monkey/retromusic/util/NavigationUtil.kt @@ -11,100 +11,88 @@ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. */ +package code.name.monkey.retromusic.util -package code.name.monkey.retromusic.util; +import android.app.Activity +import android.content.ActivityNotFoundException +import android.content.Context +import android.content.Intent +import android.media.audiofx.AudioEffect +import android.widget.Toast +import androidx.core.app.ActivityCompat +import androidx.navigation.findNavController +import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.activities.* +import code.name.monkey.retromusic.activities.bugreport.BugReportActivity +import code.name.monkey.retromusic.helper.MusicPlayerRemote.audioSessionId -import android.app.Activity; -import android.app.ActivityOptions; -import android.content.ActivityNotFoundException; -import android.content.Context; -import android.content.Intent; -import android.media.audiofx.AudioEffect; -import android.widget.Toast; - -import androidx.annotation.NonNull; -import androidx.core.app.ActivityCompat; - -import org.jetbrains.annotations.NotNull; - -import code.name.monkey.retromusic.R; -import code.name.monkey.retromusic.activities.DriveModeActivity; -import code.name.monkey.retromusic.activities.LicenseActivity; -import code.name.monkey.retromusic.activities.LyricsActivity; -import code.name.monkey.retromusic.activities.PlayingQueueActivity; -import code.name.monkey.retromusic.activities.PurchaseActivity; -import code.name.monkey.retromusic.activities.SupportDevelopmentActivity; -import code.name.monkey.retromusic.activities.WhatsNewActivity; -import code.name.monkey.retromusic.activities.bugreport.BugReportActivity; -import code.name.monkey.retromusic.fragments.UserInfoFragment; -import code.name.monkey.retromusic.helper.MusicPlayerRemote; - -public class NavigationUtil { - - public static void bugReport(@NonNull Activity activity) { - ActivityCompat.startActivity(activity, new Intent(activity, BugReportActivity.class), null); - } - - public static void goToLyrics(@NonNull Activity activity) { - Intent intent = new Intent(activity, LyricsActivity.class); - ActivityCompat.startActivity(activity, intent, null); - } - - public static void goToOpenSource(@NonNull Activity activity) { - ActivityCompat.startActivity(activity, new Intent(activity, LicenseActivity.class), null); - } - - public static void goToPlayingQueue(@NonNull Activity activity) { - Intent intent = new Intent(activity, PlayingQueueActivity.class); - ActivityCompat.startActivity(activity, intent, null); - } - - public static void goToProVersion(@NonNull Context context) { - ActivityCompat.startActivity(context, new Intent(context, PurchaseActivity.class), null); - } - - public static void goToSupportDevelopment(@NonNull Activity activity) { - ActivityCompat.startActivity( - activity, new Intent(activity, SupportDevelopmentActivity.class), null); - } - - public static void goToUserInfo( - @NonNull Activity activity, @NonNull ActivityOptions activityOptions) { - ActivityCompat.startActivity( - activity, new Intent(activity, UserInfoFragment.class), activityOptions.toBundle()); - } - - public static void gotoDriveMode(@NotNull final Activity activity) { - ActivityCompat.startActivity(activity, new Intent(activity, DriveModeActivity.class), null); - } - - public static void gotoWhatNews(@NonNull Activity activity) { - ActivityCompat.startActivity(activity, new Intent(activity, WhatsNewActivity.class), null); - } - - public static void openEqualizer(@NonNull final Activity activity) { - stockEqalizer(activity); - } - - private static void stockEqalizer(@NonNull Activity activity) { - final int sessionId = MusicPlayerRemote.INSTANCE.getAudioSessionId(); - if (sessionId == AudioEffect.ERROR_BAD_VALUE) { - Toast.makeText( - activity, activity.getResources().getString(R.string.no_audio_ID), Toast.LENGTH_LONG) - .show(); - } else { - try { - final Intent effects = new Intent(AudioEffect.ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL); - effects.putExtra(AudioEffect.EXTRA_AUDIO_SESSION, sessionId); - effects.putExtra(AudioEffect.EXTRA_CONTENT_TYPE, AudioEffect.CONTENT_TYPE_MUSIC); - activity.startActivityForResult(effects, 0); - } catch (@NonNull final ActivityNotFoundException notFound) { - Toast.makeText( - activity, - activity.getResources().getString(R.string.no_equalizer), - Toast.LENGTH_SHORT) - .show(); - } +object NavigationUtil { + fun bugReport(activity: Activity) { + ActivityCompat.startActivity( + activity, + Intent(activity, BugReportActivity::class.java), + null + ) } - } -} + + fun goToOpenSource(activity: Activity) { + ActivityCompat.startActivity(activity, Intent(activity, LicenseActivity::class.java), null) + } + + fun goToLyrics(activity: Activity) { + if (activity is MainActivity) { + activity.collapsePanel() + } + activity.findNavController(R.id.fragment_container).navigate(R.id.lyrics_fragment) + } + + fun goToProVersion(context: Context) { + ActivityCompat.startActivity(context, Intent(context, PurchaseActivity::class.java), null) + } + + fun goToSupportDevelopment(activity: Activity) { + ActivityCompat.startActivity( + activity, Intent(activity, SupportDevelopmentActivity::class.java), null + ) + } + + fun gotoDriveMode(activity: Activity) { + ActivityCompat.startActivity( + activity, + Intent(activity, DriveModeActivity::class.java), + null + ) + } + + fun gotoWhatNews(activity: Activity) { + ActivityCompat.startActivity(activity, Intent(activity, WhatsNewActivity::class.java), null) + } + + fun openEqualizer(activity: Activity) { + stockEqalizer(activity) + } + + private fun stockEqalizer(activity: Activity) { + val sessionId = audioSessionId + if (sessionId == AudioEffect.ERROR_BAD_VALUE) { + Toast.makeText( + activity, activity.resources.getString(R.string.no_audio_ID), Toast.LENGTH_LONG + ) + .show() + } else { + try { + val effects = Intent(AudioEffect.ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL) + effects.putExtra(AudioEffect.EXTRA_AUDIO_SESSION, sessionId) + effects.putExtra(AudioEffect.EXTRA_CONTENT_TYPE, AudioEffect.CONTENT_TYPE_MUSIC) + activity.startActivityForResult(effects, 0) + } catch (notFound: ActivityNotFoundException) { + Toast.makeText( + activity, + activity.resources.getString(R.string.no_equalizer), + Toast.LENGTH_SHORT + ) + .show() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_lyrics.xml b/app/src/main/res/layout/fragment_lyrics.xml similarity index 91% rename from app/src/main/res/layout/activity_lyrics.xml rename to app/src/main/res/layout/fragment_lyrics.xml index 50d55be9..97c32a23 100644 --- a/app/src/main/res/layout/activity_lyrics.xml +++ b/app/src/main/res/layout/fragment_lyrics.xml @@ -7,11 +7,10 @@ android:layout_height="match_parent" android:fitsSystemWindows="true"> - - + + android:layout_marginTop="?attr/actionBarSize"> + + \ No newline at end of file