use view binding for three more activities

This commit is contained in:
dkanada 2020-09-02 12:40:32 +09:00
commit 1809a5d1dd
4 changed files with 73 additions and 106 deletions

View file

@ -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);
}

View file

@ -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<AuthenticationResult>() {
App.getApiClient().ChangeServerLocation(binding.server.getText().toString());
App.getApiClient().AuthenticateUserAsync(binding.username.getText().toString(), binding.password.getText().toString(), new Response<AuthenticationResult>() {
@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

View file

@ -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 {

View file

@ -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);