diff --git a/app/src/main/java/com/dkanada/gramophone/dialogs/SleepTimerDialog.java b/app/src/main/java/com/dkanada/gramophone/dialogs/SleepTimerDialog.java index 3b124755..4791483b 100644 --- a/app/src/main/java/com/dkanada/gramophone/dialogs/SleepTimerDialog.java +++ b/app/src/main/java/com/dkanada/gramophone/dialogs/SleepTimerDialog.java @@ -11,47 +11,40 @@ import android.os.CountDownTimer; import android.os.SystemClock; import androidx.annotation.NonNull; import androidx.fragment.app.DialogFragment; -import android.widget.CheckBox; import android.widget.FrameLayout; -import android.widget.TextView; import android.widget.Toast; import com.afollestad.materialdialogs.DialogAction; import com.afollestad.materialdialogs.MaterialDialog; import com.afollestad.materialdialogs.internal.ThemeSingleton; import com.dkanada.gramophone.R; +import com.dkanada.gramophone.databinding.DialogSleepTimerBinding; import com.dkanada.gramophone.helper.MusicPlayerRemote; import com.dkanada.gramophone.service.MusicService; import com.dkanada.gramophone.util.MusicUtil; import com.dkanada.gramophone.util.PreferenceUtil; import com.triggertrap.seekarc.SeekArc; -import butterknife.BindView; -import butterknife.ButterKnife; - public class SleepTimerDialog extends DialogFragment { - @BindView(R.id.seek_arc) - SeekArc seekArc; + private DialogSleepTimerBinding binding; - @BindView(R.id.timer_display) - TextView timerDisplay; - - @BindView(R.id.should_finish_last_song) - CheckBox shouldFinishLastSong; + private TimerUpdater timerUpdater; + private MaterialDialog materialDialog; private int seekArcProgress; - private MaterialDialog materialDialog; - private TimerUpdater timerUpdater; @Override public void onDismiss(DialogInterface dialog) { super.onDismiss(dialog); + timerUpdater.cancel(); } @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { + binding = DialogSleepTimerBinding.inflate(getLayoutInflater()); + timerUpdater = new TimerUpdater(); materialDialog = new MaterialDialog.Builder(getActivity()) .title(getActivity().getResources().getString(R.string.action_sleep_timer)) @@ -61,7 +54,7 @@ public class SleepTimerDialog extends DialogFragment { return; } - PreferenceUtil.getInstance(getActivity()).setSleepTimerFinishMusic(shouldFinishLastSong.isChecked()); + PreferenceUtil.getInstance(getActivity()).setSleepTimerFinishMusic(binding.shouldFinishLastSong.isChecked()); final int minutes = seekArcProgress; @@ -98,36 +91,34 @@ public class SleepTimerDialog extends DialogFragment { timerUpdater.start(); } }) - .customView(R.layout.dialog_sleep_timer, false) + .customView(binding.getRoot(), false) .build(); if (getActivity() == null || materialDialog.getCustomView() == null) { return materialDialog; } - ButterKnife.bind(this, materialDialog.getCustomView()); - boolean finishMusic = PreferenceUtil.getInstance(getActivity()).getSleepTimerFinishMusic(); - shouldFinishLastSong.setChecked(finishMusic); + binding.shouldFinishLastSong.setChecked(finishMusic); - seekArc.setProgressColor(ThemeSingleton.get().positiveColor.getDefaultColor()); - seekArc.setThumbColor(ThemeSingleton.get().positiveColor.getDefaultColor()); + binding.seekArc.setProgressColor(ThemeSingleton.get().positiveColor.getDefaultColor()); + binding.seekArc.setThumbColor(ThemeSingleton.get().positiveColor.getDefaultColor()); - seekArc.post(() -> { - int width = seekArc.getWidth(); - int height = seekArc.getHeight(); + binding.seekArc.post(() -> { + int width = binding.seekArc.getWidth(); + int height = binding.seekArc.getHeight(); int small = Math.min(width, height); - FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(seekArc.getLayoutParams()); + FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(binding.seekArc.getLayoutParams()); layoutParams.height = small; - seekArc.setLayoutParams(layoutParams); + binding.seekArc.setLayoutParams(layoutParams); }); seekArcProgress = PreferenceUtil.getInstance(getActivity()).getLastSleepTimerValue(); updateTimeDisplayTime(); - seekArc.setProgress(seekArcProgress); + binding.seekArc.setProgress(seekArcProgress); - seekArc.setOnSeekArcChangeListener(new SeekArc.OnSeekArcChangeListener() { + binding.seekArc.setOnSeekArcChangeListener(new SeekArc.OnSeekArcChangeListener() { @Override public void onProgressChanged(@NonNull SeekArc seekArc, int i, boolean b) { if (i < 1) { @@ -153,7 +144,7 @@ public class SleepTimerDialog extends DialogFragment { } private void updateTimeDisplayTime() { - timerDisplay.setText(seekArcProgress + " min"); + binding.timerDisplay.setText(seekArcProgress + " min"); } private PendingIntent makeTimerPendingIntent(int flag) { @@ -162,7 +153,7 @@ public class SleepTimerDialog extends DialogFragment { private Intent makeTimerIntent() { Intent intent = new Intent(getActivity(), MusicService.class); - if (shouldFinishLastSong.isChecked()) { + if (binding.shouldFinishLastSong.isChecked()) { return intent.setAction(MusicService.ACTION_PENDING_QUIT); } diff --git a/app/src/main/java/com/dkanada/gramophone/ui/activities/LoginActivity.java b/app/src/main/java/com/dkanada/gramophone/ui/activities/LoginActivity.java index f0abc705..5e24752e 100644 --- a/app/src/main/java/com/dkanada/gramophone/ui/activities/LoginActivity.java +++ b/app/src/main/java/com/dkanada/gramophone/ui/activities/LoginActivity.java @@ -5,15 +5,13 @@ import android.content.Intent; import android.os.Bundle; import android.view.MenuItem; import android.view.View; -import android.widget.Button; -import android.widget.EditText; import android.widget.Toast; import androidx.annotation.NonNull; -import androidx.appcompat.widget.Toolbar; import com.dkanada.gramophone.App; import com.dkanada.gramophone.R; +import com.dkanada.gramophone.databinding.ActivityLoginBinding; import com.dkanada.gramophone.ui.activities.base.AbsBaseActivity; import com.dkanada.gramophone.util.PreferenceUtil; import com.kabouzeid.appthemehelper.ThemeStore; @@ -22,29 +20,19 @@ import org.jellyfin.apiclient.interaction.Response; import org.jellyfin.apiclient.model.system.SystemInfo; import org.jellyfin.apiclient.model.users.AuthenticationResult; -import butterknife.BindView; -import butterknife.ButterKnife; - public class LoginActivity extends AbsBaseActivity implements View.OnClickListener { - @BindView(R.id.toolbar) - Toolbar toolbar; - @BindView(R.id.username) - EditText username; - @BindView(R.id.password) - EditText password; - @BindView(R.id.server) - EditText server; - @BindView(R.id.login) - Button login; + private ActivityLoginBinding binding; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_login); - setDrawUnderStatusbar(); - ButterKnife.bind(this); + binding = ActivityLoginBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + + setDrawUnderStatusbar(); setStatusbarColorAuto(); + setNavigationbarColorAuto(); setTaskDescriptionColorAuto(); @@ -57,13 +45,13 @@ public class LoginActivity extends AbsBaseActivity implements View.OnClickListen } private void setUpToolbar() { - toolbar.setBackgroundColor(ThemeStore.primaryColor(this)); - setSupportActionBar(toolbar); + binding.toolbar.setBackgroundColor(ThemeStore.primaryColor(this)); + setSupportActionBar(binding.toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); } private void setUpOnClickListeners() { - login.setOnClickListener(this); + binding.login.setOnClickListener(this); } @Override @@ -78,24 +66,24 @@ public class LoginActivity extends AbsBaseActivity implements View.OnClickListen @Override public void onClick(View v) { - if (v == login) { + if (v == binding.login) { final Context context = this; - if (server.getText().toString().trim().length() == 0) { + if (binding.server.getText().toString().trim().length() == 0) { Toast.makeText(context, context.getResources().getString(R.string.error_login_empty_addr), Toast.LENGTH_SHORT).show(); return; } - if (username.getText().toString().trim().length() == 0) { + if (binding.username.getText().toString().trim().length() == 0) { Toast.makeText(context, context.getResources().getString(R.string.error_no_username), Toast.LENGTH_SHORT).show(); return; } - App.getApiClient().ChangeServerLocation(server.getText().toString()); - App.getApiClient().AuthenticateUserAsync(username.getText().toString(), password.getText().toString(), new Response() { + App.getApiClient().ChangeServerLocation(binding.server.getText().toString()); + App.getApiClient().AuthenticateUserAsync(binding.username.getText().toString(), binding.password.getText().toString(), new Response() { @Override public void onResponse(AuthenticationResult result) { if (result.getAccessToken() == null) return; - check(context, server.getText().toString(), result.getUser().getId(), result.getAccessToken()); + check(context, binding.server.getText().toString(), result.getUser().getId(), result.getAccessToken()); } @Override diff --git a/app/src/main/java/com/dkanada/gramophone/ui/activities/MainActivity.java b/app/src/main/java/com/dkanada/gramophone/ui/activities/MainActivity.java index 861f24cd..788512b8 100644 --- a/app/src/main/java/com/dkanada/gramophone/ui/activities/MainActivity.java +++ b/app/src/main/java/com/dkanada/gramophone/ui/activities/MainActivity.java @@ -1,6 +1,5 @@ package com.dkanada.gramophone.ui.activities; -import android.annotation.SuppressLint; import android.content.Intent; import android.os.Build; import android.os.Bundle; @@ -8,8 +7,8 @@ import android.os.Handler; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.dkanada.gramophone.databinding.ActivityMainDrawerLayoutBinding; import com.dkanada.gramophone.dialogs.ConfirmLogoutDialog; -import com.google.android.material.navigation.NavigationView; import androidx.fragment.app.Fragment; import androidx.drawerlayout.widget.DrawerLayout; @@ -41,16 +40,8 @@ import org.jellyfin.apiclient.model.dto.BaseItemDto; import java.util.List; -import butterknife.BindView; -import butterknife.ButterKnife; - public class MainActivity extends AbsSlidingMusicPanelActivity { - public static final String TAG = MainActivity.class.getSimpleName(); - - @BindView(R.id.navigation_view) - NavigationView navigationView; - @BindView(R.id.drawer_layout) - DrawerLayout drawerLayout; + private ActivityMainDrawerLayoutBinding binding; @Nullable MainActivityFragmentCallbacks currentFragment; @@ -65,13 +56,12 @@ public class MainActivity extends AbsSlidingMusicPanelActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setDrawUnderStatusbar(); - ButterKnife.bind(this); if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) { - navigationView.setFitsSystemWindows(false); + binding.navigationView.setFitsSystemWindows(false); } - Menu menu = navigationView.getMenu(); + Menu menu = binding.navigationView.getMenu(); QueryUtil.getLibraries(new MediaCallback() { @Override public void onLoadMedia(List media) { @@ -118,20 +108,21 @@ public class MainActivity extends AbsSlidingMusicPanelActivity { @Override protected View createContentView() { - @SuppressLint("InflateParams") - View contentView = getLayoutInflater().inflate(R.layout.activity_main_drawer_layout, null); - ViewGroup drawerContent = contentView.findViewById(R.id.drawer_content_container); + binding = ActivityMainDrawerLayoutBinding.inflate(getLayoutInflater()); + + ViewGroup drawerContent = binding.getRoot().findViewById(R.id.drawer_content_container); drawerContent.addView(wrapSlidingMusicPanel(R.layout.activity_main_content)); - return contentView; + + return binding.getRoot(); } private void setUpNavigationView() { int accentColor = ThemeStore.accentColor(this); - NavigationViewUtil.setItemIconColors(navigationView, ATHUtil.resolveColor(this, R.attr.iconColor, ThemeStore.textColorSecondary(this)), accentColor); - NavigationViewUtil.setItemTextColors(navigationView, ThemeStore.textColorPrimary(this), accentColor); + NavigationViewUtil.setItemIconColors(binding.navigationView, ATHUtil.resolveColor(this, R.attr.iconColor, ThemeStore.textColorSecondary(this)), accentColor); + NavigationViewUtil.setItemTextColors(binding.navigationView, ThemeStore.textColorPrimary(this), accentColor); - navigationView.setNavigationItemSelectedListener(menuItem -> { - drawerLayout.closeDrawers(); + binding.navigationView.setNavigationItemSelectedListener(menuItem -> { + binding.drawerLayout.closeDrawers(); switch (menuItem.getItemId()) { case R.id.nav_settings: new Handler().postDelayed(() -> startActivity(new Intent(MainActivity.this, SettingsActivity.class)), 200); @@ -161,11 +152,11 @@ public class MainActivity extends AbsSlidingMusicPanelActivity { || menuItem.getItemId() == R.id.nav_about || menuItem.getItemId() == R.id.nav_logout) return true; - for (int i = 0; i < navigationView.getMenu().size(); i++) { - if (navigationView.getMenu().getItem(i) == menuItem) { - navigationView.getMenu().getItem(i).setChecked(true); + for (int i = 0; i < binding.navigationView.getMenu().size(); i++) { + if (binding.navigationView.getMenu().getItem(i) == menuItem) { + binding.navigationView.getMenu().getItem(i).setChecked(true); } else { - navigationView.getMenu().getItem(i).setChecked(false); + binding.navigationView.getMenu().getItem(i).setChecked(false); } } @@ -181,9 +172,9 @@ public class MainActivity extends AbsSlidingMusicPanelActivity { if (!MusicPlayerRemote.getPlayingQueue().isEmpty()) { Song song = MusicPlayerRemote.getCurrentSong(); if (navigationDrawerHeader == null) { - navigationDrawerHeader = navigationView.inflateHeaderView(R.layout.navigation_drawer_header); + navigationDrawerHeader = binding.navigationView.inflateHeaderView(R.layout.navigation_drawer_header); navigationDrawerHeader.setOnClickListener(v -> { - drawerLayout.closeDrawers(); + binding.drawerLayout.closeDrawers(); if (getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) { expandPanel(); } @@ -198,7 +189,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity { .build().into(((ImageView) navigationDrawerHeader.findViewById(R.id.image))); } else { if (navigationDrawerHeader != null) { - navigationView.removeHeaderView(navigationDrawerHeader); + binding.navigationView.removeHeaderView(navigationDrawerHeader); navigationDrawerHeader = null; } } @@ -219,10 +210,10 @@ public class MainActivity extends AbsSlidingMusicPanelActivity { @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { if (item.getItemId() == android.R.id.home) { - if (drawerLayout.isDrawerOpen(navigationView)) { - drawerLayout.closeDrawer(navigationView); + if (binding.drawerLayout.isDrawerOpen(binding.navigationView)) { + binding.drawerLayout.closeDrawer(binding.navigationView); } else { - drawerLayout.openDrawer(navigationView); + binding.drawerLayout.openDrawer(binding.navigationView); } return true; @@ -233,8 +224,8 @@ public class MainActivity extends AbsSlidingMusicPanelActivity { @Override public boolean handleBackPress() { - if (drawerLayout.isDrawerOpen(navigationView)) { - drawerLayout.closeDrawers(); + if (binding.drawerLayout.isDrawerOpen(binding.navigationView)) { + binding.drawerLayout.closeDrawers(); return true; } @@ -244,13 +235,13 @@ public class MainActivity extends AbsSlidingMusicPanelActivity { @Override public void onPanelExpanded(View view) { super.onPanelExpanded(view); - drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); + binding.drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); } @Override public void onPanelCollapsed(View view) { super.onPanelCollapsed(view); - drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED); + binding.drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED); } public interface MainActivityFragmentCallbacks { diff --git a/app/src/main/java/com/dkanada/gramophone/ui/activities/SettingsActivity.java b/app/src/main/java/com/dkanada/gramophone/ui/activities/SettingsActivity.java index b43e2833..d3c3e682 100644 --- a/app/src/main/java/com/dkanada/gramophone/ui/activities/SettingsActivity.java +++ b/app/src/main/java/com/dkanada/gramophone/ui/activities/SettingsActivity.java @@ -11,11 +11,11 @@ import androidx.preference.ListPreference; import androidx.preference.Preference; import androidx.preference.PreferenceManager; import androidx.preference.TwoStatePreference; -import androidx.appcompat.widget.Toolbar; import android.view.MenuItem; import android.view.View; import com.afollestad.materialdialogs.color.ColorChooserDialog; +import com.dkanada.gramophone.databinding.ActivitySettingsBinding; import com.dkanada.gramophone.preferences.DirectPlayPreference; import com.dkanada.gramophone.preferences.DirectPlayPreferenceDialog; import com.kabouzeid.appthemehelper.ThemeStore; @@ -31,27 +31,24 @@ import com.dkanada.gramophone.preferences.NowPlayingScreenPreferenceDialog; import com.dkanada.gramophone.ui.activities.base.AbsBaseActivity; import com.dkanada.gramophone.util.PreferenceUtil; -import butterknife.BindView; -import butterknife.ButterKnife; - public class SettingsActivity extends AbsBaseActivity implements ColorChooserDialog.ColorCallback { - - @BindView(R.id.toolbar) - Toolbar toolbar; + private ActivitySettingsBinding binding; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_settings); - setDrawUnderStatusbar(); - ButterKnife.bind(this); + binding = ActivitySettingsBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + + setDrawUnderStatusbar(); setStatusbarColorAuto(); + setNavigationbarColorAuto(); setTaskDescriptionColorAuto(); - toolbar.setBackgroundColor(ThemeStore.primaryColor(this)); - setSupportActionBar(toolbar); + binding.toolbar.setBackgroundColor(ThemeStore.primaryColor(this)); + setSupportActionBar(binding.toolbar); //noinspection ConstantConditions getSupportActionBar().setDisplayHomeAsUpEnabled(true);