blob: 6fba6235f2deffee5dacb5cb34821881e34122f0 [file] [log] [blame]
Tiago Costae29f4cd2014-10-10 18:30:59 +01001package com.fairphone.updater.fragments;
2
Filipe Gonçalvesb31d5862015-02-04 17:28:58 +00003import android.annotation.SuppressLint;
Tiago Costae29f4cd2014-10-10 18:30:59 +01004import android.os.Bundle;
5import android.support.v4.app.DialogFragment;
6import android.view.KeyEvent;
7import android.view.LayoutInflater;
8import android.view.View;
9import android.view.View.OnClickListener;
10import android.view.ViewGroup;
11import android.view.Window;
12import android.view.inputmethod.EditorInfo;
13import android.widget.Button;
14import android.widget.CheckBox;
15import android.widget.CompoundButton;
16import android.widget.CompoundButton.OnCheckedChangeListener;
17import android.widget.TextView;
18import android.widget.TextView.OnEditorActionListener;
19
20import com.fairphone.updater.R;
21import com.fairphone.updater.fragments.VersionDetailFragment.DetailLayoutType;
22
Filipe Gonçalvesb31d5862015-02-04 17:28:58 +000023@SuppressLint("ValidFragment")
Tiago Costae29f4cd2014-10-10 18:30:59 +010024public class ConfirmationPopupDialog extends DialogFragment implements OnEditorActionListener
25{
26 public interface ConfirmationPopupDialogListener
27 {
28 void onFinishPopUpDialog(boolean result);
29 }
30
Filipe Gonçalvesb31d5862015-02-04 17:28:58 +000031 private final String mVersion;
32 private final ConfirmationPopupDialogListener mCallback;
33 private final DetailLayoutType mLayoutType;
Tiago Costae29f4cd2014-10-10 18:30:59 +010034 private Button mOkButton;
Filipe Gonçalvesb31d5862015-02-04 17:28:58 +000035 private final boolean mIsOSChange;
36 private final boolean mIsOlderVersion;
37 private final boolean mHasEraseAllDataWarning;
Tiago Costae29f4cd2014-10-10 18:30:59 +010038
Jose Pascoald6c19a72014-10-17 16:52:36 +010039 public ConfirmationPopupDialog(String version, boolean isOSChange, boolean isOlderVersion, boolean hasEraseAllDataWarning, DetailLayoutType layoutType,
Jose Pascoal391bd312014-10-13 18:16:27 +010040 ConfirmationPopupDialogListener callback)
Tiago Costae29f4cd2014-10-10 18:30:59 +010041 {
42 // Empty constructor required for DialogFragment
43 super();
44
45 mVersion = version;
46 mCallback = callback;
47 mLayoutType = layoutType;
Jose Pascoal391bd312014-10-13 18:16:27 +010048 mIsOSChange = isOSChange;
49 mIsOlderVersion = isOlderVersion;
Jose Pascoald6c19a72014-10-17 16:52:36 +010050 mHasEraseAllDataWarning = hasEraseAllDataWarning;
Tiago Costae29f4cd2014-10-10 18:30:59 +010051 }
52
53 @Override
54 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
55 {
56 getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
Filipe Gonçalvesb31d5862015-02-04 17:28:58 +000057 View view;
58 TextView versionNameText;
Tiago Costae29f4cd2014-10-10 18:30:59 +010059
60 switch (mLayoutType)
61 {
Jose Pascoalee8a8eb2014-10-15 15:20:28 +010062 case UPDATE_ANDROID:
Tiago Costae29f4cd2014-10-10 18:30:59 +010063 case ANDROID:
64 view = inflater.inflate(R.layout.fragment_download_android_confirmation_popup, container);
Tiago Costae29f4cd2014-10-10 18:30:59 +010065 break;
Jose Pascoalee8a8eb2014-10-15 15:20:28 +010066 case UPDATE_FAIRPHONE:
Tiago Costae29f4cd2014-10-10 18:30:59 +010067 case FAIRPHONE:
Jose Pascoalcfc2dd42015-02-09 18:00:05 +000068 case APP_STORE:
Jose Pascoal391bd312014-10-13 18:16:27 +010069 default:
Tiago Costae29f4cd2014-10-10 18:30:59 +010070 view = inflater.inflate(R.layout.fragment_download_fairphone_confirmation_popup, container);
71 break;
Tiago Costae29f4cd2014-10-10 18:30:59 +010072 }
Jose Pascoal391bd312014-10-13 18:16:27 +010073
74 versionNameText = (TextView) view.findViewById(R.id.installing_version);
75 versionNameText.setText(mVersion);
76
77 TextView versionTypeText = (TextView) view.findViewById(R.id.version_type_text);
78
79 if (mIsOSChange)
80 {
81 versionTypeText.setText(R.string.a_different_os_from_the_current);
82 }
83 else if (mIsOlderVersion)
84 {
85 versionTypeText.setText(R.string.an_older_version_of_os);
86 }
Tiago Costae29f4cd2014-10-10 18:30:59 +010087
Jose Pascoald6c19a72014-10-17 16:52:36 +010088 TextView eraseAllDataWarning = (TextView) view.findViewById(R.id.erase_all_data_warning_text);
89
90 if (mHasEraseAllDataWarning)
91 {
92 eraseAllDataWarning.setVisibility(View.VISIBLE);
93 }
94 else
95 {
96 eraseAllDataWarning.setVisibility(View.GONE);
97 }
98
Tiago Costae29f4cd2014-10-10 18:30:59 +010099 mOkButton = (Button) view.findViewById(R.id.confirmation_yes_button);
100 mOkButton.setEnabled(false);
101
102 mOkButton.setOnClickListener(new OnClickListener()
103 {
104 @Override
105 public void onClick(View v)
106 {
107 ConfirmationPopupDialog.this.dismiss();
108 mCallback.onFinishPopUpDialog(true);
109 }
110 });
111
Filipe Gonçalvesb31d5862015-02-04 17:28:58 +0000112 Button mCancelButton = (Button) view.findViewById(R.id.confirmation_no_button);
Tiago Costae29f4cd2014-10-10 18:30:59 +0100113
Filipe Gonçalvesb31d5862015-02-04 17:28:58 +0000114 mCancelButton.setOnClickListener(new OnClickListener() {
Tiago Costae29f4cd2014-10-10 18:30:59 +0100115
Filipe Gonçalvesb31d5862015-02-04 17:28:58 +0000116 @Override
117 public void onClick(View v) {
118 ConfirmationPopupDialog.this.dismiss();
119 mCallback.onFinishPopUpDialog(false);
120 }
Tiago Costae29f4cd2014-10-10 18:30:59 +0100121 });
122
Filipe Gonçalvesb31d5862015-02-04 17:28:58 +0000123 CheckBox mConfirmationCheckbox = (CheckBox) view.findViewById(R.id.confirmation_checkbox);
124 mConfirmationCheckbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
Tiago Costae29f4cd2014-10-10 18:30:59 +0100125
Filipe Gonçalvesb31d5862015-02-04 17:28:58 +0000126 @Override
127 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
128 mOkButton.setEnabled(isChecked);
129 }
Tiago Costae29f4cd2014-10-10 18:30:59 +0100130 });
131
132 return view;
133 }
134
135 @Override
136 public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
137 {
138 if (EditorInfo.IME_ACTION_DONE == actionId)
139 {
140 // Return input text to activity
Tiago Costae29f4cd2014-10-10 18:30:59 +0100141 this.dismiss();
142 return true;
143 }
144 return false;
145 }
146
147}