reduce number of packages in root directory

This commit is contained in:
dkanada 2021-05-06 18:22:28 +09:00
commit 5bde02dc8b
11 changed files with 17 additions and 18 deletions

View file

@ -0,0 +1,86 @@
package com.dkanada.gramophone.dialogs.preferences;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.fragment.app.DialogFragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.afollestad.materialdialogs.MaterialDialog;
import com.dkanada.gramophone.R;
import com.dkanada.gramophone.adapter.CategoryAdapter;
import com.dkanada.gramophone.model.CategoryInfo;
import com.dkanada.gramophone.util.PreferenceUtil;
import java.util.ArrayList;
import java.util.List;
public class CategoryPreferenceDialog extends DialogFragment {
public static final String TAG = CategoryPreferenceDialog.class.getSimpleName();
public static CategoryPreferenceDialog newInstance() {
return new CategoryPreferenceDialog();
}
private CategoryAdapter adapter;
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
View view = requireActivity().getLayoutInflater().inflate(R.layout.preference_dialog_category, null);
List<CategoryInfo> categories;
if (savedInstanceState != null) {
categories = savedInstanceState.getParcelableArrayList(PreferenceUtil.CATEGORIES);
} else {
categories = PreferenceUtil.getInstance(getContext()).getCategories();
}
adapter = new CategoryAdapter(categories);
RecyclerView recyclerView = view.findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.setAdapter(adapter);
adapter.attachToRecyclerView(recyclerView);
return new MaterialDialog.Builder(requireActivity())
.title(R.string.pref_title_categories)
.customView(view, false)
.positiveText(android.R.string.ok)
.negativeText(android.R.string.cancel)
.neutralText(R.string.reset_action)
.autoDismiss(false)
.onNeutral((dialog, action) -> adapter.setCategories(PreferenceUtil.getInstance(getContext()).getDefaultCategories()))
.onNegative((dialog, action) -> dismiss())
.onPositive((dialog, action) -> {
updateCategories(adapter.getCategories());
dismiss();
})
.build();
}
@Override
public void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
outState.putParcelableArrayList(PreferenceUtil.CATEGORIES, new ArrayList<>(adapter.getCategories()));
}
private void updateCategories(List<CategoryInfo> categories) {
if (getSelected(categories) == 0) return;
PreferenceUtil.getInstance(getContext()).setCategories(categories);
}
private int getSelected(List<CategoryInfo> categories) {
int selected = 0;
for (CategoryInfo category : categories) {
if (category.visible) selected++;
}
return selected;
}
}

View file

@ -0,0 +1,50 @@
package com.dkanada.gramophone.dialogs.preferences;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.fragment.app.DialogFragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.afollestad.materialdialogs.MaterialDialog;
import com.dkanada.gramophone.R;
import com.dkanada.gramophone.adapter.DirectPlayCodecAdapter;
import com.dkanada.gramophone.util.PreferenceUtil;
public class DirectPlayPreferenceDialog extends DialogFragment {
public static final String TAG = DirectPlayPreferenceDialog.class.getSimpleName();
public static DirectPlayPreferenceDialog newInstance() {
return new DirectPlayPreferenceDialog();
}
private DirectPlayCodecAdapter adapter;
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
View view = requireActivity().getLayoutInflater().inflate(R.layout.preference_dialog_direct_play_codecs, null);
adapter = new DirectPlayCodecAdapter(PreferenceUtil.getInstance(getContext()).getDirectPlayCodecs());
RecyclerView recyclerView = view.findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.setAdapter(adapter);
return new MaterialDialog.Builder(requireActivity())
.title(R.string.pref_title_direct_play_codecs)
.customView(view, false)
.positiveText(android.R.string.ok)
.negativeText(android.R.string.cancel)
.autoDismiss(false)
.onNegative((dialog, action) -> dismiss())
.onPositive((dialog, action) -> {
PreferenceUtil.getInstance(getContext()).setDirectPlayCodecs(adapter.getDirectPlayCodecs());
dismiss();
})
.build();
}
}

View file

@ -0,0 +1,127 @@
package com.dkanada.gramophone.dialogs.preferences;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.fragment.app.DialogFragment;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.dkanada.gramophone.R;
import com.dkanada.gramophone.fragments.player.NowPlayingScreen;
import com.dkanada.gramophone.util.PreferenceUtil;
import com.pixelcan.inkpageindicator.InkPageIndicator;
public class NowPlayingPreferenceDialog extends DialogFragment implements MaterialDialog.SingleButtonCallback, ViewPager.OnPageChangeListener {
public static final String TAG = NowPlayingPreferenceDialog.class.getSimpleName();
private DialogAction whichButtonClicked;
private int viewPagerPosition;
public static NowPlayingPreferenceDialog newInstance() {
return new NowPlayingPreferenceDialog();
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
View view = LayoutInflater.from(getContext()).inflate(R.layout.preference_dialog_now_playing, null);
ViewPager viewPager = view.findViewById(R.id.now_playing_screen_view_pager);
viewPager.setAdapter(new NowPlayingScreenAdapter(getContext()));
viewPager.addOnPageChangeListener(this);
viewPager.setCurrentItem(PreferenceUtil.getInstance(getContext()).getNowPlayingScreen().ordinal());
InkPageIndicator pageIndicator = view.findViewById(R.id.page_indicator);
pageIndicator.setViewPager(viewPager);
pageIndicator.onPageSelected(viewPager.getCurrentItem());
return new MaterialDialog.Builder(requireActivity())
.title(R.string.pref_title_now_playing_appearance)
.positiveText(android.R.string.ok)
.negativeText(android.R.string.cancel)
.onAny(this)
.customView(view, false)
.build();
}
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
whichButtonClicked = which;
}
@Override
public void onDismiss(@NonNull DialogInterface dialog) {
super.onDismiss(dialog);
if (whichButtonClicked == DialogAction.POSITIVE) {
PreferenceUtil.getInstance(getContext()).setNowPlayingScreen(NowPlayingScreen.values()[viewPagerPosition]);
}
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
this.viewPagerPosition = position;
}
@Override
public void onPageScrollStateChanged(int state) {
}
private static class NowPlayingScreenAdapter extends PagerAdapter {
private final Context context;
public NowPlayingScreenAdapter(Context context) {
this.context = context;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup collection, int position) {
NowPlayingScreen nowPlayingScreen = NowPlayingScreen.values()[position];
LayoutInflater inflater = LayoutInflater.from(context);
ViewGroup layout = (ViewGroup) inflater.inflate(R.layout.preference_dialog_now_playing_item, collection, false);
collection.addView(layout);
ImageView image = layout.findViewById(R.id.image);
TextView title = layout.findViewById(R.id.title);
image.setImageResource(nowPlayingScreen.drawableRes);
title.setText(nowPlayingScreen.titleRes);
return layout;
}
@Override
public void destroyItem(@NonNull ViewGroup collection, int position, @NonNull Object view) {
collection.removeView((View) view);
}
@Override
public int getCount() {
return NowPlayingScreen.values().length;
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
@Override
public CharSequence getPageTitle(int position) {
return context.getString(NowPlayingScreen.values()[position].titleRes);
}
}
}