package com.felkertech.cumulustv.activities;
import android.appwidget.AppWidgetManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.RemoteViews;
import com.felkertech.n.cumulustv.R;
import com.felkertech.cumulustv.model.ChannelDatabase;
import com.felkertech.cumulustv.model.JsonChannel;
import com.felkertech.cumulustv.widgets.ChannelShortcut;
import com.felkertech.settingsmanager.SettingsManager;
import org.json.JSONException;
import java.util.List;
/**
* Saves settings for widgets
*/
public class WidgetSelectionActivity extends AppCompatActivity {
public static final String EXTRA_APP_WIDGET_ID = "WIDGET_ID";
public static final String SETTINGS_MANAGER_WIDGET_URL = "WIDGET_URL";
private int mAppWidgetId;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setResult(RESULT_CANCELED);
final ChannelDatabase channelDatabase = ChannelDatabase.getInstance(WidgetSelectionActivity.this);
String[] channelnames = channelDatabase.getChannelNames();
try {
mAppWidgetId = getIntent().getIntExtra(
AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
displayChannelPicker(channelDatabase.getJsonChannels(), channelnames,
getString(R.string.my_channels));
} catch (JSONException e) {
e.printStackTrace();
}
}
private void displayChannelPicker(final List<JsonChannel> jsonChannels, String[] channelNames,
String label) {
new AlertDialog.Builder(WidgetSelectionActivity.this)
.setTitle(label)
.setItems(channelNames, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
JsonChannel jsonChannel = jsonChannels.get(i);
SettingsManager settingsManager =
new SettingsManager(WidgetSelectionActivity.this);
settingsManager.setString(SETTINGS_MANAGER_WIDGET_URL + mAppWidgetId,
jsonChannel.getMediaUrl());
completeConfiguration();
}
})
.show();
}
private void completeConfiguration() {
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this);
RemoteViews views = new RemoteViews(getPackageName(), R.layout.widget_channel);
appWidgetManager.updateAppWidget(mAppWidgetId, views);
Intent resultValue = new Intent();
resultValue.setAction("android.appwidget.action.APPWIDGET_UPDATE");
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
setResult(RESULT_OK, resultValue);
ChannelShortcut.updateWidgets(this, ChannelShortcut.class);
finish();
}
public static Intent getSetupActivity(int appWidgetId, Context context) {
Intent intent = new Intent(context, WidgetSelectionActivity.class);
intent.putExtra(EXTRA_APP_WIDGET_ID, appWidgetId);
return intent;
}
public static JsonChannel getWidgetChannel(Context context, int appWidgetId) {
ChannelDatabase channelDatabase = ChannelDatabase.getInstance(context);
String mediaUrl = new SettingsManager(context)
.getString(SETTINGS_MANAGER_WIDGET_URL + appWidgetId);
return channelDatabase.findChannelByMediaUrl(mediaUrl);
}
}