diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/CategoryAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/CategoryAdapter.java index af594f0c..eacff7ca 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/CategoryAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/CategoryAdapter.java @@ -1,20 +1,6 @@ package com.kabouzeid.gramophone.adapter; -import android.content.Context; -import android.content.res.ColorStateList; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.ColorFilter; -import android.graphics.Paint; -import android.graphics.PixelFormat; -import android.graphics.Rect; -import android.graphics.drawable.Drawable; -import android.graphics.drawable.GradientDrawable; -import android.os.Build; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.content.ContextCompat; -import android.support.v4.graphics.drawable.DrawableCompat; +import android.annotation.SuppressLint; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.helper.ItemTouchHelper; import android.view.LayoutInflater; @@ -24,117 +10,46 @@ import android.view.ViewGroup; import android.widget.CheckBox; import android.widget.TextView; -import com.kabouzeid.appthemehelper.ThemeStore; import com.kabouzeid.gramophone.R; -import com.kabouzeid.gramophone.util.SwipeAndDragHelper; import com.kabouzeid.gramophone.model.Category; +import com.kabouzeid.gramophone.util.SwipeAndDragHelper; import java.util.ArrayList; -public class CategoryAdapter extends RecyclerView.Adapter implements SwipeAndDragHelper.ActionCompletionContract { +public class CategoryAdapter extends RecyclerView.Adapter implements SwipeAndDragHelper.ActionCompletionContract { private ArrayList categories; private ItemTouchHelper touchHelper; - private ColorStateList color; - public CategoryAdapter(ArrayList categories, ColorStateList color) { - this.categories = copy(categories); - this.color = color; + public CategoryAdapter(ArrayList categories) { + this.categories = categories; } @Override - public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + public CategoryAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.preference_dialog_library_categories_listitem, parent, false); - return new CategoryViewHolder(view); + return new ViewHolder(view); } + @SuppressLint("ClickableViewAccessibility") @Override - public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { + public void onBindViewHolder(CategoryAdapter.ViewHolder holder, int position) { Category category = categories.get(position); - CategoryViewHolder h = (CategoryViewHolder) holder; - h.checkBox.setChecked(category.visible); - h.title.setText(h.title.getResources().getString(category.id.key)); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { - h.checkBox.setButtonTintList(color); - } else { - Drawable checkDrawable = - ContextCompat.getDrawable(h.checkBox.getContext(), R.drawable.abc_btn_check_material); - Drawable drawable = DrawableCompat.wrap(checkDrawable); - DrawableCompat.setTintList(drawable, color); - h.checkBox.setButtonDrawable(drawable); - } + holder.checkBox.setChecked(category.visible); + holder.title.setText(holder.title.getResources().getString(category.id.key)); - h.checkBox.setOnClickListener((view) -> { - h.checkBox.setChecked(category.visible = !category.visible); - notifyDataSetChanged(); - } - ); + holder.itemView.setOnClickListener(v -> { + category.visible = !category.visible; + holder.checkBox.setChecked(category.visible); + }); - h.title.setOnClickListener((view) -> { - h.checkBox.setChecked(category.visible = !category.visible); - notifyDataSetChanged(); - } - ); - - h.dragHandle.setOnTouchListener((view, event) -> { + holder.dragView.setOnTouchListener((view, event) -> { if (event.getActionMasked() == MotionEvent.ACTION_DOWN) { - touchHelper.startDrag(h); + touchHelper.startDrag(holder); } return false; } ); - - Context context = h.dragHandle.getContext(); - int backgroundColor = ThemeStore.textColorSecondary(context); - int borderColor = ThemeStore.textColorSecondaryInverse(context); - h.dragHandle.setBackground(new DragHandle(h.dragHandle.getResources().getDisplayMetrics().density, backgroundColor, borderColor)); - } - - private static class DragHandle extends Drawable { - private float density; - private Paint shape; - private Paint outline; - - public DragHandle(float density, int color, int borderColor) { - this.shape = new Paint(); - this.shape.setStyle(Paint.Style.FILL); - this.shape.setColor(color); - - this.outline = new Paint(); - this.outline.setAntiAlias(true); - this.outline.setStyle(Paint.Style.STROKE); - this.outline.setColor(borderColor); - - this.density = density; - } - - @Override - public void draw(@NonNull Canvas canvas) { - Rect bounds = getBounds(); - float width = 15 * density; - float left = bounds.centerX() - width / 2; - float top = bounds.top + bounds.centerY() - 3 * density; - canvas.save(); - canvas.drawRect(left, top, left + width, top + 2 * density, shape); - canvas.drawRect(left, top, left + width, top + 2 * density, outline); - canvas.translate(0, (density * 2) * 2); - canvas.drawRect(left, top, left + width, top + 2 * density, shape); - canvas.drawRect(left, top, left + width, top + 2 * density, outline); - canvas.restore(); - } - - @Override - public void setAlpha(int i) { - } - - @Override - public void setColorFilter(@Nullable ColorFilter filter) { - } - - @Override - public int getOpacity() { - return PixelFormat.TRANSLUCENT; - } } @Override @@ -142,13 +57,9 @@ public class CategoryAdapter extends RecyclerView.Adapter categories) { - this.categories = copy(categories); + this.categories = categories; notifyDataSetChanged(); } @@ -168,24 +79,16 @@ public class CategoryAdapter extends RecyclerView.Adapter copy(ArrayList categories) { - ArrayList result = new ArrayList<>(); - for (Category category : categories) { - result.add(new Category(category)); - } - return result; - } - - private static class CategoryViewHolder extends RecyclerView.ViewHolder { + static class ViewHolder extends RecyclerView.ViewHolder { public CheckBox checkBox; public TextView title; - public View dragHandle; + public View dragView; - public CategoryViewHolder(View view) { + public ViewHolder(View view) { super(view); checkBox = view.findViewById(R.id.checkbox); title = view.findViewById(R.id.title); - dragHandle = view.findViewById(R.id.drag_handle); + dragView = view.findViewById(R.id.drag_view); } } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/preferences/LibraryPreferenceDialog.java b/app/src/main/java/com/kabouzeid/gramophone/preferences/LibraryPreferenceDialog.java index 54774614..62caf782 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/preferences/LibraryPreferenceDialog.java +++ b/app/src/main/java/com/kabouzeid/gramophone/preferences/LibraryPreferenceDialog.java @@ -1,7 +1,6 @@ package com.kabouzeid.gramophone.preferences; import android.app.Dialog; -import android.content.res.ColorStateList; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.app.DialogFragment; @@ -11,10 +10,7 @@ import android.support.v7.widget.helper.ItemTouchHelper; import android.view.LayoutInflater; import android.view.View; -import com.afollestad.materialdialogs.DialogAction; import com.afollestad.materialdialogs.MaterialDialog; -import com.afollestad.materialdialogs.util.DialogUtils; -import com.kabouzeid.appthemehelper.ThemeStore; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.adapter.CategoryAdapter; import com.kabouzeid.gramophone.model.Category; @@ -35,10 +31,10 @@ public class LibraryPreferenceDialog extends DialogFragment { LayoutInflater inflater = getActivity().getLayoutInflater(); View view = inflater.inflate(R.layout.preference_dialog_library_categories, null); - final ArrayList categories = PreferenceUtil.getInstance(getContext()).getLibraryCategories(); + ArrayList categories = PreferenceUtil.getInstance(getContext()).getLibraryCategories(); RecyclerView categoriesView = view.findViewById(R.id.recycler_view); categoriesView.setLayoutManager(new LinearLayoutManager(getActivity())); - final CategoryAdapter adapter = new CategoryAdapter(categories, getCheckboxColors()); + CategoryAdapter adapter = new CategoryAdapter(categories); SwipeAndDragHelper swipeAndDragHelper = new SwipeAndDragHelper(adapter); ItemTouchHelper touchHelper = new ItemTouchHelper(swipeAndDragHelper); adapter.setTouchHelper(touchHelper); @@ -59,10 +55,10 @@ public class LibraryPreferenceDialog extends DialogFragment { .onPositive((dialog13, action) -> { if (!updateCategories(adapter.getCategories())) { new MaterialDialog.Builder(getContext()) - .title(R.string.edit_categories) - .content(R.string.at_least_one_category_must_be_enabled) - .positiveText(android.R.string.ok) - .show(); + .title(R.string.edit_categories) + .content(R.string.at_least_one_category_must_be_enabled) + .positiveText(android.R.string.ok) + .show(); } else { dismiss(); } @@ -84,25 +80,8 @@ public class LibraryPreferenceDialog extends DialogFragment { int selected = 0; for (Category category : categories) { if (category.visible) - selected ++; + selected++; } return selected; } - - private ColorStateList getCheckboxColors() { - int disabledColor = DialogUtils.getDisabledColor(getContext()); - return new ColorStateList( - new int[][] { - new int[] {android.R.attr.state_enabled, -android.R.attr.state_checked}, - new int[] {android.R.attr.state_enabled, android.R.attr.state_checked}, - new int[] {-android.R.attr.state_enabled, -android.R.attr.state_checked}, - new int[] {-android.R.attr.state_enabled, android.R.attr.state_checked} - }, - new int[] { - DialogUtils.resolveColor(getContext(), R.attr.colorControlNormal), - ThemeStore.accentColor(getContext()), - disabledColor, - disabledColor - }); - } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java index 18af25a2..3c31482c 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java @@ -466,24 +466,16 @@ public final class PreferenceUtil { return result; } - return LibraryCategories.DEFAULTS; + return getDefaultLibraryCategories(); } public ArrayList getDefaultLibraryCategories() { - return LibraryCategories.DEFAULTS; - } - - private static class LibraryCategories { - public final static ArrayList DEFAULTS = getDefaults(); - - private static ArrayList getDefaults() { - ArrayList result = new ArrayList<>(); - result.add(new Category(Category.Id.SONGS, true, 0)); - result.add(new Category(Category.Id.ALBUMS, true, 1)); - result.add(new Category(Category.Id.ARTISTS, true, 2)); - result.add(new Category(Category.Id.GENRES, true, 3)); - result.add(new Category(Category.Id.PLAYLISTS, true, 4)); - return result; - } + ArrayList result = new ArrayList<>(); + result.add(new Category(Category.Id.SONGS, true, 0)); + result.add(new Category(Category.Id.ALBUMS, true, 1)); + result.add(new Category(Category.Id.ARTISTS, true, 2)); + result.add(new Category(Category.Id.GENRES, true, 3)); + result.add(new Category(Category.Id.PLAYLISTS, true, 4)); + return result; } }