Pin an addon as an addons activity tab

This commit is contained in:
David Eisner 2016-05-04 09:41:21 +01:00
parent b0f2adb876
commit 51680a835c
No known key found for this signature in database
GPG Key ID: 572A0C31753FF551
3 changed files with 61 additions and 0 deletions

View File

@ -16,6 +16,8 @@
package org.xbmc.kore.ui;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.os.Bundle;
@ -45,6 +47,10 @@ import org.xbmc.kore.utils.LogUtils;
import org.xbmc.kore.utils.UIUtils;
import org.xbmc.kore.utils.Utils;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import butterknife.ButterKnife;
import butterknife.InjectView;
import butterknife.OnClick;
@ -80,6 +86,7 @@ public class AddonDetailsFragment extends Fragment {
// Buttons
@InjectView(R.id.fab) ImageButton fabButton;
@InjectView(R.id.enable_disable) ImageButton enabledButton;
@InjectView(R.id.pin_unpin) ImageButton pinButton;
// Detail views
@InjectView(R.id.media_panel) ScrollView mediaPanel;
@ -170,6 +177,7 @@ public class AddonDetailsFragment extends Fragment {
setImages(bundle.getString(BUNDLE_KEY_POSTER), bundle.getString(BUNDLE_KEY_FANART));
setupEnableButton(bundle.getBoolean(BUNDLE_KEY_ENABLED, false));
updatePinButton();
// Pad main content view to overlap with bottom system bar
// UIUtils.setPaddingForSystemBars(getActivity(), mediaPanel, false, false, true);
@ -318,4 +326,47 @@ public class AddonDetailsFragment extends Fragment {
}
}, callbackHandler);
}
@OnClick(R.id.pin_unpin)
public void onPinClicked(View v) {
final boolean enable = (v.getTag() == null)? true : !(Boolean)v.getTag();
String name = mediaTitle.getText().toString();
String path = addonId;
SharedPreferences prefs = getActivity().getSharedPreferences("addons", Context.MODE_PRIVATE);
Set<String> bookmarked = new HashSet<>(prefs.getStringSet("bookmarked", Collections.<String>emptySet()));
if (enable)
bookmarked.add(path);
else
bookmarked.remove(path);
prefs
.edit()
.putStringSet("bookmarked", bookmarked)
.putString("name_" + path, name)
.commit();
Toast.makeText(getActivity(), enable? R.string.addon_pinned : R.string.addon_unpinned, Toast.LENGTH_SHORT).show();
setupPinButton(enable);
}
private void setupPinButton(boolean enabled) {
// Enabled button
if (enabled) {
Resources.Theme theme = getActivity().getTheme();
TypedArray styledAttributes = theme.obtainStyledAttributes(new int[]{
R.attr.colorAccent});
pinButton.setColorFilter(styledAttributes.getColor(0,
getActivity().getResources().getColor(R.color.accent_default)));
styledAttributes.recycle();
} else {
pinButton.clearColorFilter();
}
pinButton.setTag(enabled);
}
private void updatePinButton() {
SharedPreferences prefs = getActivity().getSharedPreferences("addons", Context.MODE_PRIVATE);
Set<String> bookmarked = prefs.getStringSet("bookmarked", Collections.<String>emptySet());
setupPinButton(bookmarked.contains(addonId));
}
}

View File

@ -97,6 +97,13 @@
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"/>
<ImageButton
android:id="@+id/pin_unpin"
android:layout_width="@dimen/buttonbar_button_width"
android:layout_height="match_parent"
style="@style/Widget.Button.Borderless"
android:src="?attr/iconNew"
android:contentDescription="@string/enable_disable"/>
<ImageButton
android:id="@+id/enable_disable"
android:layout_width="@dimen/buttonbar_button_width"

View File

@ -302,6 +302,9 @@
<string name="enable_disable">Enable/Disable Addon</string>
<string name="addon_enabled">Addon enabled</string>
<string name="addon_disabled">Addon disabled</string>
<string name="pin_unpin">Pin/Unpin Addon</string>
<string name="addon_pinned">Addon pinned</string>
<string name="addon_unpinned">Addon unpinned</string>
<!-- Filters on list menus -->
<string name="hide_watched">Hide watched</string>