This commit is contained in:
h4h13 2018-08-11 01:18:18 +05:30
parent 74ae7f517e
commit e5774b422c
22 changed files with 756 additions and 637 deletions

View file

@ -14,10 +14,8 @@ public class Constants {
public static final String ACTION_SKIP = RETRO_MUSIC_PACKAGE_NAME + ".skip";
public static final String ACTION_REWIND = RETRO_MUSIC_PACKAGE_NAME + ".rewind";
public static final String ACTION_QUIT = RETRO_MUSIC_PACKAGE_NAME + ".quitservice";
public static final String INTENT_EXTRA_PLAYLIST =
RETRO_MUSIC_PACKAGE_NAME + "intentextra.playlist";
public static final String INTENT_EXTRA_SHUFFLE_MODE =
RETRO_MUSIC_PACKAGE_NAME + ".intentextra.shufflemode";
public static final String INTENT_EXTRA_PLAYLIST = RETRO_MUSIC_PACKAGE_NAME + "intentextra.playlist";
public static final String INTENT_EXTRA_SHUFFLE_MODE = RETRO_MUSIC_PACKAGE_NAME + ".intentextra.shufflemode";
public static final String APP_WIDGET_UPDATE = RETRO_MUSIC_PACKAGE_NAME + ".appwidgetupdate";
public static final String EXTRA_APP_WIDGET_NAME = RETRO_MUSIC_PACKAGE_NAME + "app_widget_name";
// do not change these three strings as it will break support with other apps (e.g. last.fm scrobbling)
@ -25,8 +23,7 @@ public class Constants {
public static final String QUEUE_CHANGED = RETRO_MUSIC_PACKAGE_NAME + ".queuechanged";
public static final String PLAY_STATE_CHANGED = RETRO_MUSIC_PACKAGE_NAME + ".playstatechanged";
public static final String REPEAT_MODE_CHANGED = RETRO_MUSIC_PACKAGE_NAME + ".repeatmodechanged";
public static final String SHUFFLE_MODE_CHANGED =
RETRO_MUSIC_PACKAGE_NAME + ".shufflemodechanged";
public static final String SHUFFLE_MODE_CHANGED = RETRO_MUSIC_PACKAGE_NAME + ".shufflemodechanged";
public static final String MEDIA_STORE_CHANGED = RETRO_MUSIC_PACKAGE_NAME + ".mediastorechanged";
public static final String RATE_ON_GOOGLE_PLAY = "https://play.google.com/store/apps/details?id=code.name.monkey.retromusic";
public static final String PAYPAL_ME_URL = "https://www.paypal.me/h4h14";

View file

@ -1,12 +1,16 @@
package code.name.monkey.retromusic;
import android.content.Intent;
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.multidex.MultiDexApplication;
import code.name.monkey.appthemehelper.ThemeStore;
import code.name.monkey.retromusic.appshortcuts.DynamicShortcutManager;
import com.anjlab.android.iab.v3.BillingProcessor;
import com.anjlab.android.iab.v3.TransactionDetails;
import code.name.monkey.appthemehelper.ThemeStore;
import code.name.monkey.retromusic.appshortcuts.DynamicShortcutManager;
import code.name.monkey.retromusic.ui.activities.ErrorHandlerActivity;
import uk.co.chrisjenx.calligraphy.CalligraphyConfig;
public class RetroApplication extends MultiDexApplication {
@ -25,11 +29,26 @@ public class RetroApplication extends MultiDexApplication {
return BuildConfig.DEBUG || app.billingProcessor.isPurchased(PRO_VERSION_PRODUCT_ID);
}
public static void deleteAppData() {
try {
// clearing app data
String packageName = app.getPackageName();
Runtime runtime = Runtime.getRuntime();
runtime.exec("pm clear " + packageName);
System.exit(0);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onCreate() {
super.onCreate();
app = this;
// default theme
if (!ThemeStore.isConfigured(this, 1)) {
ThemeStore.editTheme(this)
@ -69,6 +88,22 @@ public class RetroApplication extends MultiDexApplication {
});
}
private void setupErrorHandler() {
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable throwable) {
handleUncaughtException(thread, throwable);
}
});
}
private void handleUncaughtException(Thread thread, Throwable throwable) {
throwable.printStackTrace();
//Intent intent = new Intent(this, ErrorHandlerActivity.class);
//intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//startActivity(intent);
}
@Override
public void onTerminate() {
super.onTerminate();

View file

@ -10,6 +10,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
@ -20,6 +21,7 @@ import code.name.monkey.retromusic.model.Playlist;
import code.name.monkey.retromusic.model.Song;
import code.name.monkey.retromusic.ui.adapter.playlist.AddToPlaylist;
import code.name.monkey.retromusic.views.RoundedBottomSheetDialogFragment;
import java.util.ArrayList;
/**
@ -29,8 +31,10 @@ public class AddToPlaylistDialog extends RoundedBottomSheetDialogFragment {
@BindView(R.id.playlists)
RecyclerView playlist;
@BindView(R.id.title)
TextView title;
ArrayList<Playlist> playlists;
@NonNull

View file

@ -3,12 +3,12 @@ package code.name.monkey.retromusic.dialogs;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.BottomSheetDialogFragment;
import android.support.design.widget.TextInputEditText;
import android.support.v7.widget.CardView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.Objects;
@ -17,7 +17,8 @@ import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import code.name.monkey.appthemehelper.ThemeStore;
import code.name.monkey.appthemehelper.util.TintHelper;
import code.name.monkey.appthemehelper.util.ColorUtil;
import code.name.monkey.appthemehelper.util.MaterialValueHelper;
import code.name.monkey.retromusic.R;
import code.name.monkey.retromusic.model.Song;
import code.name.monkey.retromusic.util.PlaylistsUtil;
@ -29,11 +30,16 @@ import code.name.monkey.retromusic.views.RoundedBottomSheetDialogFragment;
public class CreatePlaylistDialog extends RoundedBottomSheetDialogFragment {
@BindView(R.id.option_1)
EditText playlistName;
TextInputEditText playlistName;
@BindView(R.id.action_cancel)
Button actionCancel;
TextView actionCancel;
@BindView(R.id.action_create)
Button actionCreate;
TextView actionCreate;
@BindView(R.id.action_create_container)
CardView actionCreateContainer;
@NonNull
public static CreatePlaylistDialog create() {
@ -70,9 +76,17 @@ public class CreatePlaylistDialog extends RoundedBottomSheetDialogFragment {
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
int accentColor = ThemeStore.accentColor(Objects.requireNonNull(getContext()));
TintHelper.setTintAuto(playlistName, accentColor, true);
TintHelper.setTintAuto(actionCreate, accentColor, true);
actionCancel.setTextColor(accentColor);
actionCreateContainer.setCardBackgroundColor(ThemeStore.accentColor(getContext()));
int primaryTextColor = MaterialValueHelper.getPrimaryTextColor(getContext(), ColorUtil
.isColorLight(accentColor));
int secondaryTextColor = MaterialValueHelper.getSecondaryTextColor(getContext(), ColorUtil
.isColorLight(accentColor));
actionCreate.setTextColor(primaryTextColor);
actionCancel.setTextColor(secondaryTextColor);
}
@OnClick({R.id.action_cancel, R.id.action_create})

View file

@ -8,13 +8,16 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import code.name.monkey.appthemehelper.ThemeStore;
import code.name.monkey.retromusic.R;
import code.name.monkey.retromusic.model.Song;
import code.name.monkey.retromusic.util.MusicUtil;
import code.name.monkey.retromusic.views.RoundedBottomSheetDialogFragment;
import java.util.ArrayList;
public class DeleteSongsDialog extends RoundedBottomSheetDialogFragment {
@ -63,6 +66,11 @@ public class DeleteSongsDialog extends RoundedBottomSheetDialogFragment {
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
delete.setTextColor(ThemeStore.textColorPrimary(getContext()));
title.setTextColor(ThemeStore.textColorPrimary(getContext()));
cancel.setTextColor(ThemeStore.textColorPrimary(getContext()));
//noinspection unchecked,ConstantConditions
final ArrayList<Song> songs = getArguments().getParcelableArrayList("songs");
int title;

View file

@ -9,14 +9,21 @@ import android.support.v7.widget.AppCompatTextView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.io.File;
import java.util.Calendar;
import java.util.List;
import java.util.Objects;
import butterknife.BindView;
import butterknife.BindViews;
import butterknife.ButterKnife;
import butterknife.OnClick;
import butterknife.Unbinder;
import code.name.monkey.appthemehelper.ThemeStore;
import code.name.monkey.appthemehelper.common.views.ATEPrimaryTextView;
import code.name.monkey.appthemehelper.common.views.ATESecondaryTextView;
import code.name.monkey.retromusic.R;
import code.name.monkey.retromusic.RetroApplication;
import code.name.monkey.retromusic.ui.activities.MainActivity;
@ -46,6 +53,12 @@ public class HomeOptionDialog extends RoundedBottomSheetDialogFragment {
@BindView(R.id.title_welcome)
AppCompatTextView titleWelcome;
@BindViews({R.id.tv_about, R.id.title_welcome, R.id.text, R.id.tv_buy_pro, R.id.tv_folder, R.id.tv_rate_app,
R.id.tv_settings, R.id.tv_sleep_timer})
List<TextView> textViews;
static ButterKnife.Setter<TextView, Integer> textColor = (view, value, index) -> view.setTextColor(value.intValue());
private CompositeDisposable disposable = new CompositeDisposable();
@Nullable
@ -56,6 +69,7 @@ public class HomeOptionDialog extends RoundedBottomSheetDialogFragment {
mUnbinder = ButterKnife.bind(this, layout);
layout.findViewById(R.id.action_buy_pro).setVisibility(RetroApplication.isProVersion() ? View
.GONE : View.VISIBLE);
ButterKnife.apply(textViews, textColor, ThemeStore.textColorPrimary(getContext()));
return layout;
}
@ -102,7 +116,8 @@ public class HomeOptionDialog extends RoundedBottomSheetDialogFragment {
switch (view.getId()) {
case R.id.user_info_container:
NavigationUtil.goToUserInfo(getActivity());
break; case R.id.action_rate:
break;
case R.id.action_rate:
NavigationUtil.goToPlayStore(getActivity());
break;
case R.id.action_folder:

View file

@ -5,6 +5,9 @@ import android.app.PendingIntent;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.PorterDuff;
import android.graphics.drawable.ClipDrawable;
import android.graphics.drawable.LayerDrawable;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.os.SystemClock;
@ -24,7 +27,6 @@ import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import code.name.monkey.appthemehelper.ThemeStore;
import code.name.monkey.appthemehelper.util.TintHelper;
import code.name.monkey.retromusic.R;
import code.name.monkey.retromusic.service.MusicService;
import code.name.monkey.retromusic.util.MusicUtil;
@ -39,9 +41,9 @@ public class SleepTimerDialog extends RoundedBottomSheetDialogFragment {
@BindView(R.id.timer_display)
TextView timerDisplay;
@BindView(R.id.action_set)
Button setButton;
TextView setButton;
@BindView(R.id.action_cancel)
Button cancelButton;
TextView cancelButton;
private int seekArcProgress;
private TimerUpdater timerUpdater;
@ -68,6 +70,12 @@ public class SleepTimerDialog extends RoundedBottomSheetDialogFragment {
return layout;
}
private void setProgressBarColor(int dark) {
LayerDrawable ld = (LayerDrawable) seekArc.getProgressDrawable();
ClipDrawable clipDrawable = (ClipDrawable) ld.findDrawableByLayerId(android.R.id.progress);
clipDrawable.setColorFilter(dark, PorterDuff.Mode.SRC_IN);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
@ -77,10 +85,8 @@ public class SleepTimerDialog extends RoundedBottomSheetDialogFragment {
updateTimeDisplayTime();
seekArc.setProgress(seekArcProgress);
int accentColor = ThemeStore.accentColor(getContext());
TintHelper.setTintAuto(seekArc, accentColor, true);
setButton.setTextColor(accentColor);
cancelButton.setTextColor(accentColor);
//noinspection ConstantConditions
setProgressBarColor(ThemeStore.accentColor(getContext()));
seekArc.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override

View file

@ -23,7 +23,12 @@ import org.jaudiotagger.tag.TagException;
import java.io.File;
import java.io.IOException;
import java.util.List;
import butterknife.BindView;
import butterknife.BindViews;
import butterknife.ButterKnife;
import code.name.monkey.appthemehelper.ThemeStore;
import code.name.monkey.retromusic.R;
import code.name.monkey.retromusic.model.Song;
import code.name.monkey.retromusic.util.MusicUtil;
@ -55,60 +60,65 @@ public class SongDetailDialog extends RoundedBottomSheetDialogFragment {
return fileSizeInMB + " MB";
}
private void setTextColor(List<TextView> textColor) {
for (TextView textView : textColor) {
//noinspection ConstantConditions
textView.setTextColor(ThemeStore.textColorPrimary(getContext()));
}
}
@BindViews({R.id.title,
R.id.file_name,
R.id.file_path,
R.id.file_size,
R.id.file_format,
R.id.track_length,
R.id.bitrate,
R.id.sampling_rate})
List<TextView> textViews;
@SuppressWarnings("ConstantConditions")
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View dialogView = inflater.inflate(R.layout.dialog_file_details, container, false);
ButterKnife.bind(this, dialogView);
Context context = getContext();
final TextView fileName = dialogView.findViewById(R.id.file_name);
final TextView filePath = dialogView.findViewById(R.id.file_path);
final TextView fileSize = dialogView.findViewById(R.id.file_size);
final TextView fileFormat = dialogView.findViewById(R.id.file_format);
final TextView trackLength = dialogView.findViewById(R.id.track_length);
final TextView bitRate = dialogView.findViewById(R.id.bitrate);
final TextView samplingRate = dialogView.findViewById(R.id.sampling_rate);
setTextColor(textViews);
fileName.setText(makeTextWithTitle(context, R.string.label_file_name, "-"));
filePath.setText(makeTextWithTitle(context, R.string.label_file_path, "-"));
fileSize.setText(makeTextWithTitle(context, R.string.label_file_size, "-"));
fileFormat.setText(makeTextWithTitle(context, R.string.label_file_format, "-"));
trackLength.setText(makeTextWithTitle(context, R.string.label_track_length, "-"));
bitRate.setText(makeTextWithTitle(context, R.string.label_bit_rate, "-"));
samplingRate.setText(makeTextWithTitle(context, R.string.label_sampling_rate, "-"));
textViews.get(1).setText(makeTextWithTitle(context, R.string.label_file_name, "-"));
textViews.get(2).setText(makeTextWithTitle(context, R.string.label_file_path, "-"));
textViews.get(3).setText(makeTextWithTitle(context, R.string.label_file_size, "-"));
textViews.get(4).setText(makeTextWithTitle(context, R.string.label_file_format, "-"));
textViews.get(5).setText(makeTextWithTitle(context, R.string.label_track_length, "-"));
textViews.get(6).setText(makeTextWithTitle(context, R.string.label_bit_rate, "-"));
textViews.get(7).setText(makeTextWithTitle(context, R.string.label_sampling_rate, "-"));
final Song song = getArguments().getParcelable("song");
if (song != null) {
final File songFile = new File(song.data);
if (songFile.exists()) {
fileName.setText(makeTextWithTitle(context, R.string.label_file_name, songFile.getName()));
filePath.setText(
makeTextWithTitle(context, R.string.label_file_path, songFile.getAbsolutePath()));
fileSize.setText(makeTextWithTitle(context, R.string.label_file_size,
getFileSizeString(songFile.length())));
textViews.get(1).setText(makeTextWithTitle(context, R.string.label_file_name, songFile.getName()));
textViews.get(2).setText(makeTextWithTitle(context, R.string.label_file_path, songFile.getAbsolutePath()));
textViews.get(3).setText(makeTextWithTitle(context, R.string.label_file_size, getFileSizeString(songFile.length())));
try {
AudioFile audioFile = AudioFileIO.read(songFile);
AudioHeader audioHeader = audioFile.getAudioHeader();
fileFormat.setText(
makeTextWithTitle(context, R.string.label_file_format, audioHeader.getFormat()));
trackLength.setText(makeTextWithTitle(context, R.string.label_track_length, MusicUtil
.getReadableDurationString(audioHeader.getTrackLength() * 1000)));
bitRate.setText(makeTextWithTitle(context, R.string.label_bit_rate,
audioHeader.getBitRate() + " kb/s"));
samplingRate.setText(makeTextWithTitle(context, R.string.label_sampling_rate,
audioHeader.getSampleRate() + " Hz"));
textViews.get(4).setText(makeTextWithTitle(context, R.string.label_file_format, audioHeader.getFormat()));
textViews.get(5).setText(makeTextWithTitle(context, R.string.label_track_length, MusicUtil.getReadableDurationString(audioHeader.getTrackLength() * 1000)));
textViews.get(6).setText(makeTextWithTitle(context, R.string.label_bit_rate, audioHeader.getBitRate() + " kb/s"));
textViews.get(7).setText(makeTextWithTitle(context, R.string.label_sampling_rate, audioHeader.getSampleRate() + " Hz"));
} catch (@NonNull CannotReadException | IOException | TagException | ReadOnlyFileException | InvalidAudioFrameException e) {
Log.e(TAG, "error while reading the song file", e);
// fallback
trackLength.setText(makeTextWithTitle(context, R.string.label_track_length,
MusicUtil.getReadableDurationString(song.duration)));
textViews.get(5).setText(makeTextWithTitle(context, R.string.label_track_length, MusicUtil.getReadableDurationString(song.duration)));
}
} else {
// fallback
fileName.setText(makeTextWithTitle(context, R.string.label_file_name, song.title));
trackLength.setText(makeTextWithTitle(context, R.string.label_track_length,
MusicUtil.getReadableDurationString(song.duration)));
textViews.get(1).setText(makeTextWithTitle(context, R.string.label_file_name, song.title));
textViews.get(5).setText(makeTextWithTitle(context, R.string.label_track_length, MusicUtil.getReadableDurationString(song.duration)));
}
}

View file

@ -13,7 +13,7 @@ import code.name.monkey.retromusic.util.PreferenceUtil;
import io.reactivex.Observable;
public class ArtistLoader {
public static String getSongLoaderSortOrder(Context context) {
private static String getSongLoaderSortOrder(Context context) {
return PreferenceUtil.getInstance(context).getArtistSortOrder() + ", " +
PreferenceUtil.getInstance(context).getArtistAlbumSortOrder() + ", " +
PreferenceUtil.getInstance(context).getAlbumDetailSongSortOrder() + ", " +
@ -98,22 +98,4 @@ public class ArtistLoader {
});
});
}
/* public static Observable<ArrayList<Artist>> getAllArtists(Context context) {
return getArtistsForCursor(makeArtistCursor(context, null, null));
}
public static Observable<Artist> getArtist(Context context, long id) {
return getArtist(makeArtistCursor(context, "_id=?", new String[]{String.valueOf(id)}));
}
public static Observable<ArrayList<Artist>> getArtists(Context context, String paramString) {
return getArtistsForCursor(makeArtistCursor(context, "artist LIKE ?", new String[]{"%" + paramString + "%"}));
}
private static Cursor makeArtistCursor(Context context, String selection, String[] paramArrayOfString) {
final String artistSortOrder = PreferenceUtil.getInstance(context).getArtistSortOrder();
Cursor cursor = context.getContentResolver().query(MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI, new String[]{"_id", "artist", "number_of_albums", "number_of_tracks"}, selection, paramArrayOfString, artistSortOrder);
return cursor;
}*/
}

View file

@ -16,6 +16,6 @@ public interface ArtistDetailContract {
}
interface Presenter extends BasePresenter<ArtistsDetailsView> {
void loadArtistById(int artistId);
void loadArtistById();
}
}

View file

@ -1,11 +1,14 @@
package code.name.monkey.retromusic.mvp.presenter;
import android.os.Bundle;
import android.support.annotation.NonNull;
import code.name.monkey.retromusic.model.Artist;
import code.name.monkey.retromusic.mvp.Presenter;
import code.name.monkey.retromusic.mvp.contract.ArtistDetailContract;
import static code.name.monkey.retromusic.ui.activities.ArtistDetailActivity.EXTRA_ARTIST_ID;
/**
* Created by hemanths on 20/08/17.
@ -13,19 +16,19 @@ import code.name.monkey.retromusic.mvp.contract.ArtistDetailContract;
public class ArtistDetailsPresenter extends Presenter implements ArtistDetailContract.Presenter {
private final int artistId;
@NonNull
private final ArtistDetailContract.ArtistsDetailsView view;
private Bundle bundle;
public ArtistDetailsPresenter(@NonNull ArtistDetailContract.ArtistsDetailsView view,
int artistId) {
Bundle artistId) {
this.view = view;
this.artistId = artistId;
this.bundle = artistId;
}
@Override
public void subscribe() {
loadArtistById(artistId);
loadArtistById();
}
@Override
@ -34,14 +37,14 @@ public class ArtistDetailsPresenter extends Presenter implements ArtistDetailCon
}
@Override
public void loadArtistById(int artistId) {
disposable.add(repository.getArtistById(artistId)
public void loadArtistById() {
disposable.add(repository.getArtistById(bundle.getInt(EXTRA_ARTIST_ID))
.subscribeOn(schedulerProvider.computation())
.observeOn(schedulerProvider.ui())
.doOnSubscribe(disposable1 -> view.loading())
.subscribe(this::showArtist,
throwable -> view.showEmptyView(),
() -> view.completed()));
view::completed));
}
private void showArtist(Artist album) {

View file

@ -171,9 +171,10 @@ public class AlbumDetailsActivity extends AbsSlidingMusicPanelActivity implement
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.artist_image:
Pair<View, String> pair = new Pair<>(artistImage,
getString(R.string.transition_artist_image));
NavigationUtil.goToArtist(this, getAlbum().getArtistId(), pair);
Pair[] artistPairs = new Pair[]{Pair.create(image,
getResources().getString(R.string.transition_artist_image))};
NavigationUtil.goToArtist(this, getAlbum().getArtistId(),
artistPairs);
break;
case R.id.action_shuffle_all:
MusicPlayerRemote.openAndShuffleQueue(album.songs, true);

View file

@ -125,18 +125,19 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
setDrawUnderStatusBar(true);
super.onCreate(bundle);
ButterKnife.bind(this);
supportPostponeEnterTransition();
setBottomBarVisibility(View.GONE);
setNavigationbarColorAuto();
setLightNavigationBar(true);
supportPostponeEnterTransition();
lastFMRestClient = new LastFMRestClient(this);
setUpViews();
int artistID = getIntent().getIntExtra(EXTRA_ARTIST_ID, -1);
artistDetailsPresenter = new ArtistDetailsPresenter(this, artistID);
artistDetailsPresenter = new ArtistDetailsPresenter(this, getIntent().getExtras());
artistDetailsPresenter.subscribe();
}
private void setUpViews() {
@ -232,7 +233,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
@Override
protected void onResume() {
super.onResume();
artistDetailsPresenter.subscribe();
}
@Override

View file

@ -0,0 +1 @@
package code.name.monkey.retromusic.ui.activities; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import butterknife.OnClick; import code.name.monkey.retromusic.R; import code.name.monkey.retromusic.RetroApplication; import code.name.monkey.retromusic.ui.activities.base.AbsBaseActivity; public class ErrorHandlerActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_error_handler); } @OnClick(R.id.clear_app_data) void clearAppDate(View view) { RetroApplication.deleteAppData(); } }

View file

@ -37,11 +37,14 @@ public class ProVersionActivity extends AbsBaseActivity implements
private static final String TAG = "ProVersionActivity";
@BindView(R.id.toolbar)
Toolbar toolbar;
@BindView(R.id.restore_button)
View restoreButton;
@BindView(R.id.purchase_button)
View purchaseButton;
@BindView(R.id.app_bar)
AppBarLayout appBar;
@BindView(R.id.status_bar)
View statusBar;

View file

@ -11,6 +11,10 @@ import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.animation.PathInterpolator;
import com.sothree.slidinguppanel.SlidingUpPanelLayout;
import com.sothree.slidinguppanel.SlidingUpPanelLayout.PanelState;
import butterknife.BindView;
import butterknife.ButterKnife;
import code.name.monkey.appthemehelper.ThemeStore;
@ -35,8 +39,6 @@ import code.name.monkey.retromusic.ui.fragments.player.simple.SimplePlayerFragme
import code.name.monkey.retromusic.util.PreferenceUtil;
import code.name.monkey.retromusic.util.ViewUtil;
import code.name.monkey.retromusic.views.BottomNavigationViewEx;
import com.sothree.slidinguppanel.SlidingUpPanelLayout;
import com.sothree.slidinguppanel.SlidingUpPanelLayout.PanelState;
public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivity implements
SlidingUpPanelLayout.PanelSlideListener,

View file

@ -43,10 +43,13 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity {
private static final int REQUEST_CODE_SELECT_IMAGE = 1000;
@BindView(R.id.save_fab)
FloatingActionButton save;
@BindView(R.id.image)
ImageView image;
@BindView(R.id.image_container)
FrameLayout imageContainer;
CharSequence[] items;
private int id;
private int paletteColorPrimary;

View file

@ -8,6 +8,7 @@ import android.support.v7.widget.Toolbar;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.TextView;
import org.jaudiotagger.tag.FieldKey;
@ -28,22 +29,34 @@ public class SongTagEditorActivity extends AbsTagEditorActivity implements TextW
public static final String TAG = SongTagEditorActivity.class.getSimpleName();
@BindView(R.id.toolbar)
Toolbar toolbar;
@BindView(R.id.app_bar)
AppBarLayout appBarLayout;
@BindView(R.id.title)
TextView title;
@BindView(R.id.title1)
EditText songTitle;
@BindView(R.id.title2)
EditText albumTitle;
@BindView(R.id.artist)
EditText artist;
@BindView(R.id.genre)
EditText genre;
@BindView(R.id.year)
EditText year;
@BindView(R.id.image_text)
EditText trackNumber;
@BindView(R.id.lyrics)
EditText lyrics;
@BindView(R.id.album_artist)
EditText albumArtist;
@ -51,7 +64,8 @@ public class SongTagEditorActivity extends AbsTagEditorActivity implements TextW
appBarLayout.setBackgroundColor(ThemeStore.primaryColor(this));
toolbar.setBackgroundColor(ThemeStore.primaryColor(this));
toolbar.setNavigationOnClickListener(v -> onBackPressed());
setTitle(R.string.action_tag_editor);
setTitle(null);
title.setTextColor(ThemeStore.textColorPrimary(this));
setSupportActionBar(toolbar);
}

View file

@ -31,9 +31,7 @@ import code.name.monkey.retromusic.util.MusicUtil;
import code.name.monkey.retromusic.util.NavigationUtil;
public class ArtistAdapter extends
AbsMultiSelectAdapter<ArtistAdapter.ViewHolder, Artist> implements
FastScrollRecyclerView.SectionedAdapter {
public class ArtistAdapter extends AbsMultiSelectAdapter<ArtistAdapter.ViewHolder, Artist> implements FastScrollRecyclerView.SectionedAdapter {
protected final AppCompatActivity activity;
protected ArrayList<Artist> dataSet;

View file

@ -55,10 +55,13 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde
@BindView(R.id.toolbar)
Toolbar toolbar;
@BindView(R.id.app_bar)
AppBarLayout appbar;
@BindView(R.id.title)
TextView title;
@BindView(R.id.search)
IconImageView search;

View file

@ -86,18 +86,25 @@ public class FoldersFragment extends AbsMainActivityFragment implements
private static final int LOADER_ID = LoaderIds.FOLDERS_FRAGMENT;
@BindView(R.id.coordinator_layout)
CoordinatorLayout coordinatorLayout;
@BindView(R.id.container)
View container;
@BindView(R.id.title)
TextView title;
@BindView(android.R.id.empty)
View empty;
@BindView(R.id.toolbar)
Toolbar toolbar;
@BindView(R.id.bread_crumbs)
BreadCrumbLayout breadCrumbs;
@BindView(R.id.appbar)
AppBarLayout appbar;
@BindView(R.id.recycler_view)
FastScrollRecyclerView recyclerView;

View file

@ -42,27 +42,39 @@ import code.name.monkey.retromusic.util.PreferenceUtil;
public class FullPlaybackControlsFragment extends AbsPlayerControlsFragment {
@BindView(R.id.player_song_current_progress)
TextView mPlayerSongCurrentProgress;
@BindView(R.id.player_song_total_time)
TextView songTotalTime;
@BindView(R.id.player_progress_slider)
SeekBar progressSlider;
@BindView(R.id.player_prev_button)
ImageButton playerPrevButton;
@BindView(R.id.player_next_button)
ImageButton playerNextButton;
@BindView(R.id.player_repeat_button)
ImageButton playerRepeatButton;
@BindView(R.id.player_shuffle_button)
ImageButton playerShuffleButton;
@BindView(R.id.player_play_pause_button)
ImageButton playerPlayPauseFab;
Unbinder unbinder;
@BindView(R.id.title)
TextView mTitle;
@BindView(R.id.text)
TextView mText;
@BindView(R.id.volume_fragment_container)
View mVolumeContainer;
Unbinder unbinder;
private int lastPlaybackControlsColor;
private int lastDisabledPlaybackControlsColor;
private MusicProgressViewUpdateHelper progressViewUpdateHelper;