package com.piusvelte.sonet.fragment;
import android.app.Activity;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import com.piusvelte.sonet.R;
import com.piusvelte.sonet.Sonet;
/**
* Created by bemmanuel on 4/20/15.
*/
public class UpdateSettingsDialogFragment extends BaseDialogFragment
implements View.OnClickListener, CompoundButton.OnCheckedChangeListener {
private static final String ARG_UPDATE_INTERVAL = "update_interval";
private static final String ARG_BACKGROUND_UPDATE = "background_update";
private static final int REQUEST_INTERVAL = 0;
private static final String DIALOG_INTERVAL = "dialog:interval";
public static UpdateSettingsDialogFragment newInstance(int requestCode, int updateInterval, boolean updateInBackground) {
UpdateSettingsDialogFragment dialogFragment = new UpdateSettingsDialogFragment();
dialogFragment.setRequestCode(requestCode);
Bundle args = dialogFragment.getArguments();
args.putInt(ARG_UPDATE_INTERVAL, updateInterval);
args.putBoolean(ARG_BACKGROUND_UPDATE, updateInBackground);
return dialogFragment;
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = super.onCreateDialog(savedInstanceState);
dialog.setTitle(R.string.settings_update);
return dialog;
}
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.settings_update, container, false);
root.findViewById(R.id.interval).setOnClickListener(this);
CheckBox hasBackgroundUpdate = (CheckBox) root.findViewById(R.id.background_update);
hasBackgroundUpdate.setChecked(getArguments().getBoolean(ARG_BACKGROUND_UPDATE));
hasBackgroundUpdate.setOnCheckedChangeListener(this);
return root;
}
@Override
public void onCancel(DialogInterface dialog) {
deliverResult(Activity.RESULT_OK);
}
@Override
public void onClick(View v) {
int which = 0;
String[] items;
switch (v.getId()) {
case R.id.interval:
int interval = getArguments().getInt(ARG_UPDATE_INTERVAL);
String[] values = getResources().getStringArray(R.array.interval_values);
for (int i = 0; i < values.length; i++) {
if (Integer.parseInt(values[i]) == interval) {
which = i;
break;
}
}
items = getResources().getStringArray(R.array.interval_entries);
SingleChoiceDialogFragment.newInstance(items, which, REQUEST_INTERVAL)
.show(getChildFragmentManager(), DIALOG_INTERVAL);
break;
}
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
switch (buttonView.getId()) {
case R.id.background_update:
getArguments().putBoolean(ARG_BACKGROUND_UPDATE, isChecked);
break;
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case REQUEST_INTERVAL:
if (resultCode == Activity.RESULT_OK) {
int which = SingleChoiceDialogFragment.getWhich(data, 0);
getArguments().putInt(ARG_UPDATE_INTERVAL, Integer.parseInt(getResources().getStringArray(R.array.interval_values)[which]));
}
break;
default:
super.onActivityResult(requestCode, resultCode, data);
break;
}
}
public static int getUpdateInterval(@Nullable Intent intent, int defaultValue) {
if (intent == null) {
return defaultValue;
}
return intent.getIntExtra(ARG_UPDATE_INTERVAL, defaultValue);
}
public static boolean hasBackgroundUpdate(@Nullable Intent intent, boolean defaultValue) {
if (intent == null) {
return defaultValue;
}
return intent.getBooleanExtra(ARG_BACKGROUND_UPDATE, defaultValue);
}
}