package me.ccrama.redditslide.Activities;
import android.app.Activity;
import android.appwidget.AppWidgetManager;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.RadioGroup;
import com.afollestad.materialdialogs.AlertDialogWrapper;
import java.util.ArrayList;
import me.ccrama.redditslide.Adapters.SubChooseAdapter;
import me.ccrama.redditslide.ColorPreferences;
import me.ccrama.redditslide.R;
import me.ccrama.redditslide.Reddit;
import me.ccrama.redditslide.UserSubscriptions;
import me.ccrama.redditslide.Visuals.FontPreferences;
import me.ccrama.redditslide.Widget.SubredditWidgetProvider;
/**
* Created by carlo_000 on 5/4/2016.
*/
public class SetupWidget extends BaseActivity {
private int appWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID;
@Override
protected void onCreate(Bundle savedInstanceState) {
disableSwipeBackLayout();
getTheme().applyStyle(new FontPreferences(this).getCommentFontStyle().getResId(), true);
getTheme().applyStyle(new FontPreferences(this).getPostFontStyle().getResId(), true);
getTheme().applyStyle(new ColorPreferences(this).getFontStyle().getBaseId(), true);
super.onCreate(savedInstanceState);
assignAppWidgetId();
doShortcut();
}
/**
* Widget configuration activity,always receives appwidget Id appWidget Id =
* unique id that identifies your widget analogy : same as setting view id
* via @+id/viewname on layout but appwidget id is assigned by the system
* itself
*/
private void assignAppWidgetId() {
Bundle extras = getIntent().getExtras();
if (extras != null)
appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
}
View header;
public void doShortcut() {
setContentView(R.layout.activity_setup_widget);
setupAppBar(R.id.toolbar, R.string.widget_creation_title, true, true);
header = getLayoutInflater().inflate(R.layout.widget_header, null);
ListView list = (ListView)findViewById(R.id.subs);
final ArrayList<String> sorted = UserSubscriptions.getSubscriptionsForShortcut(SetupWidget.this);
final SubChooseAdapter adapter = new SubChooseAdapter(this, sorted, UserSubscriptions.getAllSubreddits(this));
list.addHeaderView(header);
list.setAdapter(adapter);
(header.findViewById(R.id.sort)).clearFocus();
((EditText)header.findViewById(R.id.sort)).addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
}
@Override
public void afterTextChanged(Editable editable) {
final String result = editable.toString();
adapter.getFilter().filter(result);
}
});
}
public String name;
/**
* This method right now displays the widget and starts a Service to fetch
* remote data from Server
*/
public void startWidget() {
final DialogInterface.OnClickListener l2 = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
SubredditWidgetProvider.setSubFromid(appWidgetId, name, SetupWidget.this);
int theme = 0;
switch(((RadioGroup)header.findViewById(R.id.theme)).getCheckedRadioButtonId()){
case R.id.dark:
theme = 1;
break;
case R.id.light:
theme = 2;
break;
}
int view = 0;
switch(((RadioGroup)header.findViewById(R.id.type)).getCheckedRadioButtonId()){
case R.id.big:
view = 1;
break;
case R.id.compact:
view = 2;
break;
}
SubredditWidgetProvider.setThemeToId(appWidgetId, theme, SetupWidget.this);
SubredditWidgetProvider.setViewType(appWidgetId, view, SetupWidget.this);
SubredditWidgetProvider.setSorting(appWidgetId, i, SetupWidget.this);
if (i == 3 || i == 4) {
AlertDialogWrapper.Builder builder = new AlertDialogWrapper.Builder(SetupWidget.this);
builder.setTitle(R.string.sorting_choose);
builder.setSingleChoiceItems(
Reddit.getSortingStringsTime(getBaseContext()), Reddit.getSortingIdTime(""), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
SubredditWidgetProvider.setSortingTime(appWidgetId, i, SetupWidget.this);
{
Intent intent = new Intent();
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
setResult(Activity.RESULT_OK, intent);
}
Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE, null,
SetupWidget.this, SubredditWidgetProvider.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[]{appWidgetId});
sendBroadcast(intent);
finish();
}
});
builder.show();
} else {
{
Intent intent = new Intent();
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
setResult(Activity.RESULT_OK, intent);
}
Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE, null,
SetupWidget.this, SubredditWidgetProvider.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[]{appWidgetId});
sendBroadcast(intent);
finish();
}
}
};
AlertDialogWrapper.Builder builder = new AlertDialogWrapper.Builder(SetupWidget.this);
builder.setTitle(R.string.sorting_choose);
builder.setSingleChoiceItems(
Reddit.getSortingStrings(getBaseContext()), Reddit.getSortingId(""), l2);
builder.show();
// this intent is essential to show the widget
// if this intent is not included,you can't show
// widget on homescreen
}
}