package com.distantfuture.videos.content;
import android.content.Context;
import com.distantfuture.videos.misc.AppUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ChannelSetManager {
private Context context;
private List<String> defaultChannelIds;
private Map<ChannelCode, String> mChannelIDMap;
public ChannelSetManager(Context context, int channels_array_resource) {
super();
this.context = context.getApplicationContext();
defaultChannelIds = defaultChannelIds(context, channels_array_resource);
}
public static void saveChannelSet(Context context, ChannelSet set) {
AppUtils.instance(context).saveChannelIds(set.getChannelIds());
}
public static ChannelSet loadChannelSet(Context context) {
List<String> result = AppUtils.instance(context).channelIds();
if (result != null && result.size() > 0)
return new ChannelSet(null, result);
return null;
}
private List<String> defaultChannelIds(Context context, int channels_array_resource) {
List<String> result = new ArrayList<String>();
// get the hard coded defaults if nothing found in prefs above
String[] defaultChannels = context.getResources().getStringArray(channels_array_resource);
List<ChannelCode> channelCodes = new ArrayList<ChannelCode>();
for (String c : defaultChannels) {
channelCodes.add(ChannelCode.valueOf(c));
}
for (ChannelCode code : channelCodes)
result.add(channelIDForCode(code));
return result;
}
// -------------------------------------------------------------
// static prefs stuff
public boolean needsChannelSwitcher() {
// using the default ids since a user could edit his list to one item
// then relaunch and be unable to switch
return defaultChannelIds.size() > 1;
}
public ChannelSet channelSet() {
ChannelSet result = loadChannelSet(context);
if (result == null)
result = new ChannelSet(null, defaultChannelIds);
return result;
}
public ChannelSet channelSet(List<String> channels) {
return new ChannelSet(null, channels);
}
public void resetToDefaults() {
AppUtils.instance(context).saveChannelIds(null);
}
// -------------------------------------------------------------
private String channelIDForCode(ChannelCode code) {
if (mChannelIDMap == null) {
mChannelIDMap = new HashMap<ChannelCode, String>();
mChannelIDMap.put(ChannelCode.CONNECTIONS, "UC07XXQh04ukEX68loZFgnVw");
mChannelIDMap.put(ChannelCode.NEURO_SOUP, "UCf--Le-Ssa_R5ERoM7PbdcA");
mChannelIDMap.put(ChannelCode.VICE, "UCn8zNIfYAQNdrFRrr8oibKw");
mChannelIDMap.put(ChannelCode.ROGAN, "UCzQUP1qoWDoEbmsQxvdjxgQ");
mChannelIDMap.put(ChannelCode.LUKITSCH, "UCULJH9kW-UdTBCDu27P0BoA");
mChannelIDMap.put(ChannelCode.KHAN_ACADEMY, "UC4a-Gbdw7vOaccHmFo40b9g");
mChannelIDMap.put(ChannelCode.TOP_GEAR, "UCjOl2AUblVmg2rA_cRgZkFg");
mChannelIDMap.put(ChannelCode.ANDROID_DEVELOPERS, "UCVHFbqXqoYvEWM1Ddxl0QDg");
mChannelIDMap.put(ChannelCode.NERDIST, "UCTAgbu2l6_rBKdbTvEodEDw");
mChannelIDMap.put(ChannelCode.CODE_ORG, "UCJyEBMU1xVP2be1-AoGS1BA");
mChannelIDMap.put(ChannelCode.MAX_KEISER, "UCBIwq18tUFrujiPd3HLPaGw");
mChannelIDMap.put(ChannelCode.RT, "UCpwvZwUam-URkxB7g4USKpg");
mChannelIDMap.put(ChannelCode.PEWDIEPIE, "UC-lHJZR3Gqxm24_Vd_AJ5Yw");
mChannelIDMap.put(ChannelCode.BIG_THINK, "UCvQECJukTDE2i6aCoMnS-Vg");
mChannelIDMap.put(ChannelCode.REASON_TV, "UC0uVZd8N7FfIZnPu0y7o95A");
mChannelIDMap.put(ChannelCode.JET_DAISUKE, "UC6wKgAlOeFNqmXV167KERhQ");
mChannelIDMap.put(ChannelCode.THE_VERGE, "UCddiUEpeqJcYeBxX1IVBKvQ");
mChannelIDMap.put(ChannelCode.XDA, "UCk1SpWNzOs4MYmr0uICEntg");
mChannelIDMap.put(ChannelCode.YOUNG_TURKS, "UC1yBKRuGpC1tSM73A0ZjYjQ");
mChannelIDMap.put(ChannelCode.GATES_FOUNDATION, "UCRi8JQTnKQilJW15uzo7bRQ");
mChannelIDMap.put(ChannelCode.JUSTIN_BIEBER, "UCHkj014U2CQ2Nv0UZeYpE_A");
mChannelIDMap.put(ChannelCode.COLLEGE_HUMOR, "UCPDXXXJj9nax0fr0Wfc048g");
mChannelIDMap.put(ChannelCode.YOUTUBE, "UCBR8-60-B28hp2BmDPdntcQ");
mChannelIDMap.put(ChannelCode.TECH_CRUNCH, "UCCjyq_K1Xwfg8Lndy7lKMpA");
mChannelIDMap.put(ChannelCode.TWIT, "UCwY9B5_8QDGP8niZhBtTh8w");
mChannelIDMap.put(ChannelCode.ENGADGET, "UC-6OW5aJYBFM33zXQlBKPNA");
mChannelIDMap.put(ChannelCode.VSAUCE, "UC6nSFpj9HTCZ5t-N3Rm3-HA");
mChannelIDMap.put(ChannelCode.SVB, "UCJLo-ihNo6sVMPvRzGVPRoQ");
}
return mChannelIDMap.get(code);
}
private static enum ChannelCode {NEURO_SOUP, KHAN_ACADEMY, VSAUCE, SVB, ENGADGET, TWIT, TECH_CRUNCH, YOUNG_TURKS, XDA, CONNECTIONS, CODE_ORG, JUSTIN_BIEBER, THE_VERGE, REASON_TV, BIG_THINK, ANDROID_DEVELOPERS, PEWDIEPIE, YOUTUBE, VICE, TOP_GEAR, COLLEGE_HUMOR, ROGAN, LUKITSCH, NERDIST, RT, JET_DAISUKE, MAX_KEISER, GATES_FOUNDATION}
}