mirror of
https://github.com/KDE/kdeconnect-android
synced 2025-08-31 22:25:08 +00:00
Use ButterKnife in MprisActivity
This commit is contained in:
@@ -32,8 +32,10 @@ import android.view.KeyEvent;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.AdapterView;
|
import android.widget.AdapterView;
|
||||||
import android.widget.ArrayAdapter;
|
import android.widget.ArrayAdapter;
|
||||||
|
import android.widget.Button;
|
||||||
import android.widget.ImageButton;
|
import android.widget.ImageButton;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
import android.widget.SeekBar;
|
import android.widget.SeekBar;
|
||||||
import android.widget.Spinner;
|
import android.widget.Spinner;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
@@ -53,6 +55,8 @@ import androidx.annotation.NonNull;
|
|||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
import androidx.core.graphics.drawable.DrawableCompat;
|
import androidx.core.graphics.drawable.DrawableCompat;
|
||||||
import androidx.fragment.app.FragmentManager;
|
import androidx.fragment.app.FragmentManager;
|
||||||
|
import butterknife.BindView;
|
||||||
|
import butterknife.ButterKnife;
|
||||||
|
|
||||||
public class MprisActivity extends AppCompatActivity {
|
public class MprisActivity extends AppCompatActivity {
|
||||||
|
|
||||||
@@ -61,6 +65,55 @@ public class MprisActivity extends AppCompatActivity {
|
|||||||
private Runnable positionSeekUpdateRunnable = null;
|
private Runnable positionSeekUpdateRunnable = null;
|
||||||
private MprisPlugin.MprisPlayer targetPlayer = null;
|
private MprisPlugin.MprisPlayer targetPlayer = null;
|
||||||
|
|
||||||
|
@BindView(R.id.play_button)
|
||||||
|
ImageButton playButton;
|
||||||
|
|
||||||
|
@BindView(R.id.prev_button)
|
||||||
|
ImageButton prevButton;
|
||||||
|
|
||||||
|
@BindView(R.id.next_button)
|
||||||
|
ImageButton nextButton;
|
||||||
|
|
||||||
|
@BindView(R.id.rew_button)
|
||||||
|
ImageButton rewButton;
|
||||||
|
|
||||||
|
@BindView(R.id.ff_button)
|
||||||
|
ImageButton ffButton;
|
||||||
|
|
||||||
|
@BindView(R.id.time_textview)
|
||||||
|
TextView timeText;
|
||||||
|
|
||||||
|
@BindView(R.id.album_art)
|
||||||
|
ImageView albumArtView;
|
||||||
|
|
||||||
|
@BindView(R.id.player_spinner)
|
||||||
|
Spinner playerSpinner;
|
||||||
|
|
||||||
|
@BindView(R.id.no_players)
|
||||||
|
TextView noPlayers;
|
||||||
|
|
||||||
|
@BindView(R.id.now_playing_textview)
|
||||||
|
TextView nowPlayingText;
|
||||||
|
|
||||||
|
@BindView(R.id.positionSeek)
|
||||||
|
SeekBar positionBar;
|
||||||
|
|
||||||
|
@BindView(R.id.progress_slider)
|
||||||
|
LinearLayout progressSlider;
|
||||||
|
|
||||||
|
@BindView(R.id.volume_seek)
|
||||||
|
SeekBar volumeSeek;
|
||||||
|
|
||||||
|
@BindView(R.id.volume_layout)
|
||||||
|
LinearLayout volumeLayout;
|
||||||
|
|
||||||
|
@BindView(R.id.stop_button)
|
||||||
|
ImageButton stopButton;
|
||||||
|
|
||||||
|
@BindView(R.id.progress_textview)
|
||||||
|
TextView progressText;
|
||||||
|
|
||||||
|
|
||||||
private static String milisToProgress(long milis) {
|
private static String milisToProgress(long milis) {
|
||||||
int length = (int) (milis / 1000); //From milis to seconds
|
int length = (int) (milis / 1000); //From milis to seconds
|
||||||
StringBuilder text = new StringBuilder();
|
StringBuilder text = new StringBuilder();
|
||||||
@@ -104,20 +157,19 @@ public class MprisActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||||
runOnUiThread(() -> {
|
runOnUiThread(() -> {
|
||||||
Spinner spinner = findViewById(R.id.player_spinner);
|
|
||||||
//String prevPlayer = (String)spinner.getSelectedItem();
|
playerSpinner.setAdapter(adapter);
|
||||||
spinner.setAdapter(adapter);
|
|
||||||
|
|
||||||
if (playerList.isEmpty()) {
|
if (playerList.isEmpty()) {
|
||||||
findViewById(R.id.no_players).setVisibility(View.VISIBLE);
|
noPlayers.setVisibility(View.VISIBLE);
|
||||||
spinner.setVisibility(View.GONE);
|
playerSpinner.setVisibility(View.GONE);
|
||||||
((TextView) findViewById(R.id.now_playing_textview)).setText("");
|
nowPlayingText.setText("");
|
||||||
} else {
|
} else {
|
||||||
findViewById(R.id.no_players).setVisibility(View.GONE);
|
noPlayers.setVisibility(View.GONE);
|
||||||
spinner.setVisibility(View.VISIBLE);
|
playerSpinner.setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
playerSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onItemSelected(AdapterView<?> arg0, View arg1, int pos, long id) {
|
public void onItemSelected(AdapterView<?> arg0, View arg1, int pos, long id) {
|
||||||
|
|
||||||
@@ -149,7 +201,7 @@ public class MprisActivity extends AppCompatActivity {
|
|||||||
if (targetPlayer != null) {
|
if (targetPlayer != null) {
|
||||||
int targetIndex = adapter.getPosition(targetPlayer.getPlayer());
|
int targetIndex = adapter.getPosition(targetPlayer.getPlayer());
|
||||||
if (targetIndex >= 0) {
|
if (targetIndex >= 0) {
|
||||||
spinner.setSelection(targetIndex);
|
playerSpinner.setSelection(targetIndex);
|
||||||
} else {
|
} else {
|
||||||
targetPlayer = null;
|
targetPlayer = null;
|
||||||
}
|
}
|
||||||
@@ -157,7 +209,7 @@ public class MprisActivity extends AppCompatActivity {
|
|||||||
//If no player selected, select the first one (if any)
|
//If no player selected, select the first one (if any)
|
||||||
if (targetPlayer == null && !playerList.isEmpty()) {
|
if (targetPlayer == null && !playerList.isEmpty()) {
|
||||||
targetPlayer = mpris.getPlayerStatus(playerList.get(0));
|
targetPlayer = mpris.getPlayerStatus(playerList.get(0));
|
||||||
spinner.setSelection(0);
|
playerSpinner.setSelection(0);
|
||||||
}
|
}
|
||||||
updatePlayerStatus(mpris);
|
updatePlayerStatus(mpris);
|
||||||
});
|
});
|
||||||
@@ -202,55 +254,53 @@ public class MprisActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
String song = playerStatus.getCurrentSong();
|
String song = playerStatus.getCurrentSong();
|
||||||
|
|
||||||
TextView nowPlaying = findViewById(R.id.now_playing_textview);
|
if (!nowPlayingText.getText().toString().equals(song)) {
|
||||||
if (!nowPlaying.getText().toString().equals(song)) {
|
nowPlayingText.setText(song);
|
||||||
nowPlaying.setText(song);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Bitmap albumArt = playerStatus.getAlbumArt();
|
Bitmap albumArt = playerStatus.getAlbumArt();
|
||||||
if (albumArt == null) {
|
if (albumArt == null) {
|
||||||
Drawable placeholder_art = DrawableCompat.wrap(getResources().getDrawable(R.drawable.ic_album_art_placeholder));
|
Drawable placeholder_art = DrawableCompat.wrap(getResources().getDrawable(R.drawable.ic_album_art_placeholder));
|
||||||
DrawableCompat.setTint(placeholder_art, getResources().getColor(R.color.primary));
|
DrawableCompat.setTint(placeholder_art, getResources().getColor(R.color.primary));
|
||||||
((ImageView) findViewById(R.id.album_art)).setImageDrawable(placeholder_art);
|
albumArtView.setImageDrawable(placeholder_art);
|
||||||
} else {
|
} else {
|
||||||
((ImageView) findViewById(R.id.album_art)).setImageBitmap(albumArt);
|
albumArtView.setImageBitmap(albumArt);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (playerStatus.isSeekAllowed()) {
|
if (playerStatus.isSeekAllowed()) {
|
||||||
((TextView) findViewById(R.id.time_textview)).setText(milisToProgress(playerStatus.getLength()));
|
timeText.setText(milisToProgress(playerStatus.getLength()));
|
||||||
SeekBar positionSeek = findViewById(R.id.positionSeek);
|
positionBar.setMax((int) (playerStatus.getLength()));
|
||||||
positionSeek.setMax((int) (playerStatus.getLength()));
|
positionBar.setProgress((int) (playerStatus.getPosition()));
|
||||||
positionSeek.setProgress((int) (playerStatus.getPosition()));
|
progressSlider.setVisibility(View.VISIBLE);
|
||||||
findViewById(R.id.progress_slider).setVisibility(View.VISIBLE);
|
|
||||||
} else {
|
} else {
|
||||||
findViewById(R.id.progress_slider).setVisibility(View.GONE);
|
progressSlider.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
int volume = playerStatus.getVolume();
|
int volume = playerStatus.getVolume();
|
||||||
((SeekBar) findViewById(R.id.volume_seek)).setProgress(volume);
|
volumeSeek.setProgress(volume);
|
||||||
|
|
||||||
boolean isPlaying = playerStatus.isPlaying();
|
boolean isPlaying = playerStatus.isPlaying();
|
||||||
if (isPlaying) {
|
if (isPlaying) {
|
||||||
((ImageButton) findViewById(R.id.play_button)).setImageResource(R.drawable.ic_pause_black);
|
playButton.setImageResource(R.drawable.ic_pause_black);
|
||||||
findViewById(R.id.play_button).setEnabled(playerStatus.isPauseAllowed());
|
playButton.setEnabled(playerStatus.isPauseAllowed());
|
||||||
} else {
|
} else {
|
||||||
((ImageButton) findViewById(R.id.play_button)).setImageResource(R.drawable.ic_play_black);
|
playButton.setImageResource(R.drawable.ic_play_black);
|
||||||
findViewById(R.id.play_button).setEnabled(playerStatus.isPlayAllowed());
|
playButton.setEnabled(playerStatus.isPlayAllowed());
|
||||||
}
|
}
|
||||||
|
|
||||||
findViewById(R.id.volume_layout).setVisibility(playerStatus.isSetVolumeAllowed() ? View.VISIBLE : View.GONE);
|
volumeLayout.setVisibility(playerStatus.isSetVolumeAllowed() ? View.VISIBLE : View.GONE);
|
||||||
findViewById(R.id.rew_button).setVisibility(playerStatus.isSeekAllowed() ? View.VISIBLE : View.GONE);
|
rewButton.setVisibility(playerStatus.isSeekAllowed() ? View.VISIBLE : View.GONE);
|
||||||
findViewById(R.id.ff_button).setVisibility(playerStatus.isSeekAllowed() ? View.VISIBLE : View.GONE);
|
ffButton.setVisibility(playerStatus.isSeekAllowed() ? View.VISIBLE : View.GONE);
|
||||||
|
|
||||||
//Show and hide previous/next buttons simultaneously
|
//Show and hide previous/next buttons simultaneously
|
||||||
if (playerStatus.isGoPreviousAllowed() || playerStatus.isGoNextAllowed()) {
|
if (playerStatus.isGoPreviousAllowed() || playerStatus.isGoNextAllowed()) {
|
||||||
findViewById(R.id.prev_button).setVisibility(View.VISIBLE);
|
prevButton.setVisibility(View.VISIBLE);
|
||||||
findViewById(R.id.prev_button).setEnabled(playerStatus.isGoPreviousAllowed());
|
prevButton.setEnabled(playerStatus.isGoPreviousAllowed());
|
||||||
findViewById(R.id.next_button).setVisibility(View.VISIBLE);
|
nextButton.setVisibility(View.VISIBLE);
|
||||||
findViewById(R.id.next_button).setEnabled(playerStatus.isGoNextAllowed());
|
nextButton.setEnabled(playerStatus.isGoNextAllowed());
|
||||||
} else {
|
} else {
|
||||||
findViewById(R.id.prev_button).setVisibility(View.GONE);
|
prevButton.setVisibility(View.GONE);
|
||||||
findViewById(R.id.next_button).setVisibility(View.GONE);
|
nextButton.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -307,6 +357,7 @@ public class MprisActivity extends AppCompatActivity {
|
|||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
ThemeUtil.setUserPreferredTheme(this);
|
ThemeUtil.setUserPreferredTheme(this);
|
||||||
setContentView(R.layout.activity_mpris);
|
setContentView(R.layout.activity_mpris);
|
||||||
|
ButterKnife.bind(this);
|
||||||
|
|
||||||
final String targetPlayerName = getIntent().getStringExtra("player");
|
final String targetPlayerName = getIntent().getStringExtra("player");
|
||||||
getIntent().removeExtra("player");
|
getIntent().removeExtra("player");
|
||||||
@@ -320,37 +371,37 @@ public class MprisActivity extends AppCompatActivity {
|
|||||||
BackgroundService.RunCommand(MprisActivity.this, service -> service.addConnectionListener(connectionReceiver));
|
BackgroundService.RunCommand(MprisActivity.this, service -> service.addConnectionListener(connectionReceiver));
|
||||||
connectToPlugin(targetPlayerName);
|
connectToPlugin(targetPlayerName);
|
||||||
|
|
||||||
findViewById(R.id.play_button).setOnClickListener(view -> BackgroundService.RunCommand(MprisActivity.this, service -> {
|
playButton.setOnClickListener(view -> BackgroundService.RunCommand(MprisActivity.this, service -> {
|
||||||
if (targetPlayer == null) return;
|
if (targetPlayer == null) return;
|
||||||
targetPlayer.playPause();
|
targetPlayer.playPause();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
findViewById(R.id.prev_button).setOnClickListener(view -> BackgroundService.RunCommand(MprisActivity.this, service -> {
|
prevButton.setOnClickListener(view -> BackgroundService.RunCommand(MprisActivity.this, service -> {
|
||||||
if (targetPlayer == null) return;
|
if (targetPlayer == null) return;
|
||||||
targetPlayer.previous();
|
targetPlayer.previous();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
findViewById(R.id.rew_button).setOnClickListener(view -> BackgroundService.RunCommand(MprisActivity.this, service -> {
|
rewButton.setOnClickListener(view -> BackgroundService.RunCommand(MprisActivity.this, service -> {
|
||||||
if (targetPlayer == null) return;
|
if (targetPlayer == null) return;
|
||||||
targetPlayer.seek(interval_time * -1);
|
targetPlayer.seek(interval_time * -1);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
findViewById(R.id.ff_button).setOnClickListener(view -> BackgroundService.RunCommand(MprisActivity.this, service -> {
|
ffButton.setOnClickListener(view -> BackgroundService.RunCommand(MprisActivity.this, service -> {
|
||||||
if (targetPlayer == null) return;
|
if (targetPlayer == null) return;
|
||||||
targetPlayer.seek(interval_time);
|
targetPlayer.seek(interval_time);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
findViewById(R.id.next_button).setOnClickListener(view -> BackgroundService.RunCommand(MprisActivity.this, service -> {
|
nextButton.setOnClickListener(view -> BackgroundService.RunCommand(MprisActivity.this, service -> {
|
||||||
if (targetPlayer == null) return;
|
if (targetPlayer == null) return;
|
||||||
targetPlayer.next();
|
targetPlayer.next();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
findViewById(R.id.stop_button).setOnClickListener(view -> BackgroundService.RunCommand(MprisActivity.this, service -> {
|
stopButton.setOnClickListener(view -> BackgroundService.RunCommand(MprisActivity.this, service -> {
|
||||||
if (targetPlayer == null) return;
|
if (targetPlayer == null) return;
|
||||||
targetPlayer.stop();
|
targetPlayer.stop();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
((SeekBar) findViewById(R.id.volume_seek)).setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
|
volumeSeek.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
|
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
|
||||||
}
|
}
|
||||||
@@ -370,10 +421,9 @@ public class MprisActivity extends AppCompatActivity {
|
|||||||
});
|
});
|
||||||
|
|
||||||
positionSeekUpdateRunnable = () -> {
|
positionSeekUpdateRunnable = () -> {
|
||||||
final SeekBar positionSeek = findViewById(R.id.positionSeek);
|
|
||||||
BackgroundService.RunCommand(MprisActivity.this, service -> {
|
BackgroundService.RunCommand(MprisActivity.this, service -> {
|
||||||
if (targetPlayer != null) {
|
if (targetPlayer != null) {
|
||||||
positionSeek.setProgress((int) (targetPlayer.getPosition()));
|
positionBar.setProgress((int) (targetPlayer.getPosition()));
|
||||||
}
|
}
|
||||||
positionSeekUpdateHandler.removeCallbacks(positionSeekUpdateRunnable);
|
positionSeekUpdateHandler.removeCallbacks(positionSeekUpdateRunnable);
|
||||||
positionSeekUpdateHandler.postDelayed(positionSeekUpdateRunnable, 1000);
|
positionSeekUpdateHandler.postDelayed(positionSeekUpdateRunnable, 1000);
|
||||||
@@ -381,10 +431,10 @@ public class MprisActivity extends AppCompatActivity {
|
|||||||
};
|
};
|
||||||
positionSeekUpdateHandler.postDelayed(positionSeekUpdateRunnable, 200);
|
positionSeekUpdateHandler.postDelayed(positionSeekUpdateRunnable, 200);
|
||||||
|
|
||||||
((SeekBar) findViewById(R.id.positionSeek)).setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
|
positionBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onProgressChanged(SeekBar seekBar, int progress, boolean byUser) {
|
public void onProgressChanged(SeekBar seekBar, int progress, boolean byUser) {
|
||||||
((TextView) findViewById(R.id.progress_textview)).setText(milisToProgress(progress));
|
progressText.setText(milisToProgress(progress));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -404,7 +454,7 @@ public class MprisActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
findViewById(R.id.now_playing_textview).setSelected(true);
|
nowPlayingText.setSelected(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Reference in New Issue
Block a user