package com.felkertech.cumulustv.tv.fragments;
import android.app.Activity;
import android.content.ComponentName;
import android.media.tv.TvInputInfo;
import android.os.Bundle;
import android.support.v4.content.ContextCompat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import com.felkertech.cumulustv.services.CumulusJobService;
import com.felkertech.n.cumulustv.R;
import com.felkertech.settingsmanager.SettingsManager;
import com.google.android.media.tv.companionlibrary.ChannelSetupFragment;
import com.google.android.media.tv.companionlibrary.EpgSyncJobService;
/**
* Fragment which shows a sample UI for registering channels and setting up SampleJobService to
* provide program information in the background.
*/
public class TifSetupFragment extends ChannelSetupFragment {
public static final long FULL_SYNC_FREQUENCY_MILLIS = 1000 * 60 * 60 * 24; // 24 hour
private static final long FULL_SYNC_WINDOW_SEC = 1000 * 60 * 60 * 24 * 14; // 2 weeks
private String mInputId = null;
private int mErrorFound = -1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mInputId = getActivity().getIntent().getStringExtra(TvInputInfo.EXTRA_INPUT_ID);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View fragmentView = super.onCreateView(inflater, container, savedInstanceState);
setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.colorPrimaryDark));
setBadge(getResources().getDrawable(R.mipmap.ic_launcher));
setChannelListVisibility(true);
setTitle(getString(R.string.app_name));
setDescription("");
setButtonText(getString(R.string.sync_channels));
return fragmentView;
}
@Override
public void onScanStarted() {
EpgSyncJobService.cancelAllSyncRequests(getActivity());
CumulusJobService.requestImmediateSync1(getActivity(), mInputId, CumulusJobService.DEFAULT_IMMEDIATE_EPG_DURATION_MILLIS,
new ComponentName(getActivity(), CumulusJobService.class));
new SettingsManager(getActivity())
.setString(EpgSyncJobService.BUNDLE_KEY_INPUT_ID, mInputId);
setButtonText(getString(R.string.in_progress));
}
@Override
public String getInputId() {
return mInputId;
}
@Override
public void onScanFinished() {
if (mErrorFound == -1) {
EpgSyncJobService.cancelAllSyncRequests(getActivity());
EpgSyncJobService.setUpPeriodicSync(getActivity(), mInputId,
new ComponentName(getActivity(), CumulusJobService.class),
FULL_SYNC_FREQUENCY_MILLIS, FULL_SYNC_WINDOW_SEC);
getActivity().setResult(Activity.RESULT_OK);
Toast.makeText(getActivity(), R.string.toast_scan_channels_added, Toast.LENGTH_SHORT).show();
} else {
getActivity().setResult(Activity.RESULT_CANCELED);
Toast.makeText(getActivity(), R.string.toast_scan_error_found + mErrorFound, Toast.LENGTH_SHORT).show();
}
getActivity().finish();
}
@Override
public void onScanError(int reason) {
mErrorFound = reason;
switch (reason) {
case EpgSyncJobService.ERROR_EPG_SYNC_CANCELED:
setDescription(getString(R.string.error_sync_canceled));
break;
case EpgSyncJobService.ERROR_NO_PROGRAMS:
case EpgSyncJobService.ERROR_NO_CHANNELS:
setDescription(getString(R.string.error_sync_no_data));
break;
default:
setDescription(getString(R.string.error_sync_default, reason));
break;
}
}
}