package com.iwedia.gui.components.dialogs; import android.content.Context; import android.content.SharedPreferences.Editor; import android.content.res.TypedArray; import android.view.View; import com.iwedia.gui.MainActivity; import com.iwedia.gui.R; import com.iwedia.gui.components.A4TVDialog; import com.iwedia.gui.components.A4TVEditText; import com.iwedia.gui.components.A4TVPasswordDialog; import com.iwedia.gui.components.A4TVToast; import com.iwedia.gui.mainmenu.DialogManager; import com.iwedia.gui.mainmenu.MainMenuContent; import java.io.FileNotFoundException; import java.io.IOException; import java.util.ArrayList; /** * Factory reset dialog * * @author Branimir Pavlovic */ public class FactoryResetDialog extends A4TVDialog implements A4TVDialogInterface, android.view.View.OnClickListener { /** IDs for buttons */ public static final int TV_MENU_FACTORY_RESET_SETTINGS_RESSET = 23; // fields for creating dialogs private ArrayList<ArrayList<Integer>> contentList = new ArrayList<ArrayList<Integer>>(), contentListIDs = new ArrayList<ArrayList<Integer>>(); private ArrayList<Integer> titleIDs = new ArrayList<Integer>(); private Context ctx; private A4TVPasswordDialog alert; private A4TVEditText editText1; public FactoryResetDialog(Context context) { super(context, checkTheme(context), 0); ctx = context; // fill lists returnArrayListsWithDialogContents(contentList, contentListIDs, titleIDs); // set content to dialog fillDialog(); // set attributes setDialogAttributes(); init(); } @Override public void fillDialog() { View view = DialogManager.dialogCreator.fillDialogWithContents( contentList, contentListIDs, titleIDs, null, this, null);// , // pictureBackgroundID); setContentView(view); } @Override public void setDialogAttributes() { getWindow().getAttributes().width = MainActivity.dialogWidth; getWindow().getAttributes().height = MainActivity.dialogHeight; } /** * Function that load theme * * @param ctx * @return */ private static int checkTheme(Context ctx) { TypedArray atts = ctx.getTheme().obtainStyledAttributes( new int[] { R.attr.A4TVDialog }); int i = atts.getResourceId(0, 0); atts.recycle(); return i; } private void init() { /** Create ask dialog and show it to user */ alert = new A4TVPasswordDialog(ctx, true); alert.setTitleOfAlertDialog(ctx.getResources().getString( R.string.ask_massage) + " " + ctx.getResources().getString( R.string.ask_massage_factory_reset)); alert.setCancelable(true); alert.setNegativeButton(R.string.button_text_no, new android.view.View.OnClickListener() { @Override public void onClick(View v) { alert.cancel(); } }); alert.setPositiveButton(R.string.button_text_yes, new android.view.View.OnClickListener() { @Override public void onClick(View v) { String password = editText1.getText().toString(); boolean valid = false; try { if (password.length() == 4) { valid = MainActivity.service .getParentalControl().checkPinCode( Integer.valueOf(password)); } } catch (Exception e1) { e1.printStackTrace(); } if (valid) { try { MainActivity.factoryReset = true; Editor editor = MainActivity.activity .getSharedPreferences("myPrefs", Context.MODE_PRIVATE).edit(); editor.clear(); editor.commit(); // Remove widgets if (MainActivity.activity.getWidgetsHandler() != null) { MainActivity.activity.getWidgetsHandler() .removeAllWidgets(); try { MainActivity.activity .getWidgetsHandler() .saveImportantData(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } MainActivity.service.getSystemControl() .getAbout().factoryReset(); A4TVToast toast = new A4TVToast(getContext()); toast.showToast(R.string.factory_reset_success); } catch (Exception e) { A4TVToast toast = new A4TVToast(getContext()); toast.showToast(R.string.factory_reset_fail); e.printStackTrace(); } alert.cancel(); FactoryResetDialog.this.cancel(); } else { // ////////////////////// // Wrong pin // ////////////////////// editText1.setText(""); A4TVToast toast = new A4TVToast(ctx); toast.showToast(R.string.wrong_pin_entered); editText1.requestFocus(); PasswordSecurityDialog.wrongPasswordEntered(alert, false); // disable positive button for 5 seconds // alert.getPositiveButton().setEnabled(false); // new Handler().postDelayed(new Runnable() { // // @Override // public void run() { // alert.getPositiveButton().setEnabled(true); // } // }, 5000); } } }); editText1 = alert.getEditText1(); alert.getEditText2().setVisibility(View.GONE); alert.getEditText3().setVisibility(View.GONE); } @Override public void onClick(View v) { if (v.getId() == TV_MENU_FACTORY_RESET_SETTINGS_RESSET) { // There is no “No Attempt” period activated PasswordSecurityDialog.wrongPasswordEntered(null, false); if (PasswordSecurityDialog.waitFor10Minutes) { A4TVToast toast = new A4TVToast(ctx); toast.showToast(R.string.enter_password_no_more_attempts_active); } else { editText1.setText(""); alert.show(); editText1.requestFocus(); } } } @Override public void returnArrayListsWithDialogContents( ArrayList<ArrayList<Integer>> contentList, ArrayList<ArrayList<Integer>> contentListIDs, ArrayList<Integer> titleIDs) { // clear old data in lists contentList.clear(); contentListIDs.clear(); titleIDs.clear(); // title titleIDs.add(R.drawable.settings_icon); titleIDs.add(R.string.tv_menu_factory_reset_settings); // factory reset****************************************** ArrayList<Integer> list = new ArrayList<Integer>(); list.add(MainMenuContent.TAGA4TVTextView); list.add(MainMenuContent.TAGA4TVButton); contentList.add(list); list = new ArrayList<Integer>(); list.add(R.string.tv_menu_factory_reset_settings_reset); list.add(TV_MENU_FACTORY_RESET_SETTINGS_RESSET); contentListIDs.add(list); } }