fix channel selection

This commit is contained in:
Christian Schabesberger 2017-09-28 15:36:15 +02:00
parent 3490273b49
commit 29fee28d1d
4 changed files with 123 additions and 25 deletions

View File

@ -19,8 +19,8 @@ public abstract class BasePreferenceFragment extends PreferenceFragmentCompat {
@Override @Override
public void onCreate(@Nullable Bundle savedInstanceState) { public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
defaultPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity()); defaultPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
super.onCreate(savedInstanceState);
} }
@Override @Override

View File

@ -3,22 +3,27 @@ package org.schabi.newpipe.settings;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.preference.ListPreference; import android.support.v7.preference.ListPreference;
import android.support.v7.preference.Preference; import android.support.v7.preference.Preference;
import android.util.Log;
import org.schabi.newpipe.R; import org.schabi.newpipe.R;
import org.schabi.newpipe.util.Constants;
public class ContentSettingsFragment extends BasePreferenceFragment { public class ContentSettingsFragment extends BasePreferenceFragment {
@Override @Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
addPreferencesFromResource(R.xml.content_settings); addPreferencesFromResource(R.xml.content_settings);
findPreference(getString(R.string.main_page_content_key)) final ListPreference mainPageContentPref = (ListPreference) findPreference(getString(R.string.main_page_content_key));
.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
mainPageContentPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override @Override
public boolean onPreferenceChange(Preference preference, Object newValueO) { public boolean onPreferenceChange(Preference preference, Object newValueO) {
final String newValue = newValueO.toString(); final String newValue = newValueO.toString();
final String mainPrefOldValue =
defaultPreferences.getString(getString(R.string.main_page_content_key), "blank_page");
final String mainPrefOldSummary = getMainPagePrefSummery(mainPrefOldValue, mainPageContentPref);
if(newValue.equals(getString(R.string.kiosk_page_key))) { if(newValue.equals(getString(R.string.kiosk_page_key))) {
//todo on multyservice support show a kiosk an service selector here //todo on multyservice support show a kiosk an service selector here
} else if(newValue.equals(getString(R.string.channel_page_key))) { } else if(newValue.equals(getString(R.string.channel_page_key))) {
@ -34,15 +39,25 @@ public class ContentSettingsFragment extends BasePreferenceFragment {
.putString(getString(R.string.main_page_selected_channel_name), name).apply(); .putString(getString(R.string.main_page_selected_channel_name), name).apply();
//change summery //change summery
Preference pref = findPreference(getString(R.string.main_page_content_key)); mainPageContentPref.setSummary(name);
pref.setSummary(name); }
});
selectChannelFragment.setOnCancelListener(new SelectChannelFragment.OnCancelListener() {
@Override
public void onCancel() {
//defaultPreferences.edit()
// .putString(getString(R.string.main_page_content_key), mainPrefOldValue).apply();
mainPageContentPref.setSummary(mainPrefOldSummary);
mainPageContentPref.setValue(mainPrefOldValue);
} }
}); });
selectChannelFragment.show(getFragmentManager(), "select_channel"); selectChannelFragment.show(getFragmentManager(), "select_channel");
} }
if(!newValue.equals(getString(R.string.channel_page_key))) {
mainPageContentPref.setSummary(getMainPageSummeryByKey(newValue));
}
return true; return true;
} }
}); });
@ -60,4 +75,28 @@ public class ContentSettingsFragment extends BasePreferenceFragment {
pref.setSummary(defaultPreferences.getString(getString(R.string.main_page_selected_channel_name), "error")); pref.setSummary(defaultPreferences.getString(getString(R.string.main_page_selected_channel_name), "error"));
} }
} }
/*//////////////////////////////////////////////////////////////////////////
// Utils
//////////////////////////////////////////////////////////////////////////*/
private String getMainPagePrefSummery(final String mainPrefOldValue, final ListPreference mainPageContentPref) {
if(mainPrefOldValue.equals(getString(R.string.channel_page_key))) {
return defaultPreferences.getString(getString(R.string.main_page_selected_channel_name), "error");
} else {
return mainPageContentPref.getSummary().toString();
}
}
private int getMainPageSummeryByKey(final String key) {
if(key.equals(getString(R.string.blank_page_key))) {
return R.string.blank_page_summary;
} else if(key.equals(getString(R.string.kiosk_page_key))) {
return R.string.kiosk_page_summary;
} else if(key.equals(getString(R.string.feed_page_key))) {
return R.string.feed_page_summary;
} else if(key.equals(getString(R.string.channel_page_key))) {
return R.string.channel_page_summary;
}
return R.string.blank_page_summary;
}
} }

View File

@ -13,6 +13,9 @@ import android.view.ViewGroup;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import android.widget.TextView; import android.widget.TextView;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import org.schabi.newpipe.R; import org.schabi.newpipe.R;
import org.schabi.newpipe.database.subscription.SubscriptionEntity; import org.schabi.newpipe.database.subscription.SubscriptionEntity;
import org.schabi.newpipe.fragments.subscription.SubscriptionService; import org.schabi.newpipe.fragments.subscription.SubscriptionService;
@ -50,6 +53,7 @@ import io.reactivex.schedulers.Schedulers;
public class SelectChannelFragment extends DialogFragment { public class SelectChannelFragment extends DialogFragment {
private SelectChannelAdapter channelAdapter; private SelectChannelAdapter channelAdapter;
private SubscriptionService subscriptionService; private SubscriptionService subscriptionService;
private ImageLoader imageLoader = ImageLoader.getInstance();
private ProgressBar progressBar; private ProgressBar progressBar;
private TextView emptyView; private TextView emptyView;
@ -57,15 +61,31 @@ public class SelectChannelFragment extends DialogFragment {
private List<SubscriptionEntity> subscriptions = new Vector<>(); private List<SubscriptionEntity> subscriptions = new Vector<>();
public interface OnSelectedLisener { /*//////////////////////////////////////////////////////////////////////////
public void onChannelSelected(String url, String name, int service); // Interfaces
} //////////////////////////////////////////////////////////////////////////*/
OnSelectedLisener onSelectedLisener; public interface OnSelectedLisener {
void onChannelSelected(String url, String name, int service);
}
OnSelectedLisener onSelectedLisener = null;
public void setOnSelectedLisener(OnSelectedLisener listener) { public void setOnSelectedLisener(OnSelectedLisener listener) {
onSelectedLisener = listener; onSelectedLisener = listener;
} }
public interface OnCancelListener {
void onCancel();
}
OnCancelListener onCancelListener = null;
public void setOnCancelListener(OnCancelListener listener) {
onCancelListener = listener;
}
/*//////////////////////////////////////////////////////////////////////////
// Init
//////////////////////////////////////////////////////////////////////////*/
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.select_channel_fragment, container, false); View v = inflater.inflate(R.layout.select_channel_fragment, container, false);
@ -90,6 +110,31 @@ public class SelectChannelFragment extends DialogFragment {
return v; return v;
} }
/*//////////////////////////////////////////////////////////////////////////
// Handle actions
//////////////////////////////////////////////////////////////////////////*/
@Override
public void onCancel(final DialogInterface dialogInterface) {
super.onCancel(dialogInterface);
if(onCancelListener != null) {
onCancelListener.onCancel();
}
}
private void clickedItem(int position) {
if(onSelectedLisener != null) {
SubscriptionEntity entry = subscriptions.get(position);
onSelectedLisener.onChannelSelected(entry.getUrl(), entry.getName(), entry.getServiceId());
}
dismiss();
}
/*//////////////////////////////////////////////////////////////////////////
// Item handling
//////////////////////////////////////////////////////////////////////////*/
private void displayChannels(List<SubscriptionEntity> subscriptions) { private void displayChannels(List<SubscriptionEntity> subscriptions) {
this.subscriptions = subscriptions; this.subscriptions = subscriptions;
progressBar.setVisibility(View.GONE); progressBar.setVisibility(View.GONE);
@ -101,14 +146,6 @@ public class SelectChannelFragment extends DialogFragment {
} }
private void clickedItem(int position) {
if(onSelectedLisener != null) {
SubscriptionEntity entry = subscriptions.get(position);
onSelectedLisener.onChannelSelected(entry.getUrl(), entry.getName(), entry.getServiceId());
}
dismiss();
}
private Observer<List<SubscriptionEntity>> getSubscriptionObserver() { private Observer<List<SubscriptionEntity>> getSubscriptionObserver() {
return new Observer<List<SubscriptionEntity>>() { return new Observer<List<SubscriptionEntity>>() {
@Override @Override
@ -151,6 +188,7 @@ public class SelectChannelFragment extends DialogFragment {
clickedItem(position); clickedItem(position);
} }
}); });
imageLoader.displayImage(entry.getAvatarUrl(), holder.thumbnailView, DISPLAY_IMAGE_OPTIONS);
} }
@Override @Override
@ -171,6 +209,10 @@ public class SelectChannelFragment extends DialogFragment {
} }
} }
/*//////////////////////////////////////////////////////////////////////////
// Error
//////////////////////////////////////////////////////////////////////////*/
protected boolean onError(Throwable e) { protected boolean onError(Throwable e) {
final Activity activity = getActivity(); final Activity activity = getActivity();
ErrorActivity.reportError(activity, e, ErrorActivity.reportError(activity, e,
@ -180,4 +222,17 @@ public class SelectChannelFragment extends DialogFragment {
"none", "", R.string.app_ui_crash)); "none", "", R.string.app_ui_crash));
return true; return true;
} }
/*//////////////////////////////////////////////////////////////////////////
// ImageLoaderOptions
//////////////////////////////////////////////////////////////////////////*/
/**
* Base display options
*/
public static final DisplayImageOptions DISPLAY_IMAGE_OPTIONS =
new DisplayImageOptions.Builder()
.cacheInMemory(true)
.build();
} }

View File

@ -268,11 +268,15 @@
<!-- Content --> <!-- Content -->
<string name="main_page_content">Content of main page</string> <string name="main_page_content">Content of main page</string>
<string name="blank_page_summary">Blank Page</string>
<string name="kiosk_page_summary">Kiosk Page</string>
<string name="feed_page_summary">Feed Page</string>
<string name="channel_page_summary">Channel Page</string>
<string-array name="main_page_content_names"> <string-array name="main_page_content_names">
<item>Blank Page</item> <item>@string/blank_page_summary</item>
<item>Trending Page</item> <item>@string/kiosk_page_summary</item>
<item>Feed Page</item> <item>@string/feed_page_summary</item>
<item>Channel Page</item> <item>@string/channel_page_summary</item>
</string-array> </string-array>
<string name="select_a_channel">Select a channel</string> <string name="select_a_channel">Select a channel</string>
<string name="no_channel_subscribed_yet">No channel subscribed yet</string> <string name="no_channel_subscribed_yet">No channel subscribed yet</string>