diff --git a/Clover/app/src/main/java/org/floens/chan/ui/adapter/PinAdapter.java b/Clover/app/src/main/java/org/floens/chan/ui/adapter/PinAdapter.java index a4416268..c3bb53d9 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/adapter/PinAdapter.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/adapter/PinAdapter.java @@ -42,7 +42,7 @@ public class PinAdapter extends RecyclerView.Adapter im public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { switch (viewType) { case TYPE_HEADER: - return new PinHeaderHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.cell_header, parent, false)); + return new HeaderHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.cell_header, parent, false)); case TYPE_PIN: return new PinViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.cell_pin, parent, false)); case TYPE_LINK: @@ -55,7 +55,10 @@ public class PinAdapter extends RecyclerView.Adapter im public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { switch (holder.getItemViewType()) { case TYPE_HEADER: - ((PinHeaderHolder) holder).text.setText(R.string.drawer_pinned); + HeaderHolder headerHolder = (HeaderHolder) holder; + headerHolder.text.setText(R.string.drawer_pinned); + headerHolder.image.setImageResource(R.drawable.ic_settings_grey600_24dp); + break; case TYPE_PIN: final Pin pin = pins.get(position - PIN_OFFSET); @@ -259,13 +262,26 @@ public class PinAdapter extends RecyclerView.Adapter im } } - public class PinHeaderHolder extends RecyclerView.ViewHolder { + public class HeaderHolder extends RecyclerView.ViewHolder { private TextView text; + private ImageView image; - public PinHeaderHolder(View itemView) { + public HeaderHolder(View itemView) { super(itemView); text = (TextView) itemView.findViewById(R.id.text); text.setTypeface(ROBOTO_MEDIUM); + image = (ImageView) itemView.findViewById(R.id.image); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + image.setBackground(getAttrDrawable(itemView.getContext(), android.R.attr.selectableItemBackgroundBorderless)); + } else { + image.setBackgroundResource(R.drawable.gray_background_selector); + } + image.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + callback.onHeaderClicked(HeaderHolder.this); + } + }); } } @@ -293,6 +309,8 @@ public class PinAdapter extends RecyclerView.Adapter im void onWatchCountClicked(Pin pin); + void onHeaderClicked(HeaderHolder holder); + boolean isHighlighted(Pin pin); } } diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/RootNavigationController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/RootNavigationController.java index 3671fc82..b3c0e1cd 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/controller/RootNavigationController.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/RootNavigationController.java @@ -155,6 +155,11 @@ public class RootNavigationController extends NavigationController implements Pi ChanApplication.getWatchManager().toggleWatch(pin); } + @Override + public void onHeaderClicked(PinAdapter.HeaderHolder holder) { + pushController(new WatchSettingsController(context)); + } + public void onEvent(WatchManager.PinAddedMessage message) { pinAdapter.onPinAdded(message.pin); drawerLayout.openDrawer(drawer); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/WatchSettingsController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/WatchSettingsController.java index 784d42df..5f33a460 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/controller/WatchSettingsController.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/WatchSettingsController.java @@ -62,7 +62,9 @@ public class WatchSettingsController extends SettingsController implements Compo @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { ChanSettings.watchEnabled.set(isChecked); - ((WatchSettingControllerListener) previousSiblingController).onWatchEnabledChanged(isChecked); + if (previousSiblingController instanceof WatchSettingControllerListener) { + ((WatchSettingControllerListener) previousSiblingController).onWatchEnabledChanged(isChecked); + } crossfadeView.toggle(isChecked, true); } diff --git a/Clover/app/src/main/res/drawable-hdpi/ic_settings_grey600_24dp.png b/Clover/app/src/main/res/drawable-hdpi/ic_settings_grey600_24dp.png new file mode 100644 index 00000000..20d2b66e Binary files /dev/null and b/Clover/app/src/main/res/drawable-hdpi/ic_settings_grey600_24dp.png differ diff --git a/Clover/app/src/main/res/drawable-mdpi/ic_settings_grey600_24dp.png b/Clover/app/src/main/res/drawable-mdpi/ic_settings_grey600_24dp.png new file mode 100644 index 00000000..5a1b41f0 Binary files /dev/null and b/Clover/app/src/main/res/drawable-mdpi/ic_settings_grey600_24dp.png differ diff --git a/Clover/app/src/main/res/drawable-xhdpi/ic_settings_grey600_24dp.png b/Clover/app/src/main/res/drawable-xhdpi/ic_settings_grey600_24dp.png new file mode 100644 index 00000000..2251d2bb Binary files /dev/null and b/Clover/app/src/main/res/drawable-xhdpi/ic_settings_grey600_24dp.png differ diff --git a/Clover/app/src/main/res/drawable-xxhdpi/ic_settings_grey600_24dp.png b/Clover/app/src/main/res/drawable-xxhdpi/ic_settings_grey600_24dp.png new file mode 100644 index 00000000..6a70402b Binary files /dev/null and b/Clover/app/src/main/res/drawable-xxhdpi/ic_settings_grey600_24dp.png differ diff --git a/Clover/app/src/main/res/drawable-xxxhdpi/ic_settings_grey600_24dp.png b/Clover/app/src/main/res/drawable-xxxhdpi/ic_settings_grey600_24dp.png new file mode 100644 index 00000000..5eba9e8e Binary files /dev/null and b/Clover/app/src/main/res/drawable-xxxhdpi/ic_settings_grey600_24dp.png differ diff --git a/Clover/app/src/main/res/layout/cell_header.xml b/Clover/app/src/main/res/layout/cell_header.xml index 9e02566c..f3c7da9b 100644 --- a/Clover/app/src/main/res/layout/cell_header.xml +++ b/Clover/app/src/main/res/layout/cell_header.xml @@ -6,8 +6,9 @@ + +