blob: 7fcfd913d51ea48f41e01408452903172585a079 [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;
Filipe Gonçalvesb31d5862015-02-04 17:28:58 +000036 private final boolean mHasEraseAllDataWarning;
Tiago Costae29f4cd2014-10-10 18:30:59 +010037
Maarten Derkse469dc92016-08-29 07:58:25 +000038 public ConfirmationPopupDialog(String version, boolean isOSChange, boolean hasEraseAllDataWarning, DetailLayoutType layoutType,
Jose Pascoal391bd312014-10-13 18:16:27 +010039 ConfirmationPopupDialogListener callback)
Tiago Costae29f4cd2014-10-10 18:30:59 +010040 {
41 // Empty constructor required for DialogFragment
42 super();
43
44 mVersion = version;
45 mCallback = callback;
46 mLayoutType = layoutType;
Jose Pascoal391bd312014-10-13 18:16:27 +010047 mIsOSChange = isOSChange;
Jose Pascoald6c19a72014-10-17 16:52:36 +010048 mHasEraseAllDataWarning = hasEraseAllDataWarning;
Tiago Costae29f4cd2014-10-10 18:30:59 +010049 }
50
51 @Override
52 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
53 {
54 getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
Filipe Gonçalvesb31d5862015-02-04 17:28:58 +000055 View view;
56 TextView versionNameText;
Tiago Costae29f4cd2014-10-10 18:30:59 +010057
58 switch (mLayoutType)
59 {
Jose Pascoalee8a8eb2014-10-15 15:20:28 +010060 case UPDATE_ANDROID:
Tiago Costae29f4cd2014-10-10 18:30:59 +010061 case ANDROID:
62 view = inflater.inflate(R.layout.fragment_download_android_confirmation_popup, container);
Tiago Costae29f4cd2014-10-10 18:30:59 +010063 break;
Jose Pascoalee8a8eb2014-10-15 15:20:28 +010064 case UPDATE_FAIRPHONE:
Maarten Derksd2704262016-03-17 15:34:51 +010065 case LATEST_FAIRPHONE:
Tiago Costae29f4cd2014-10-10 18:30:59 +010066 case FAIRPHONE:
Jose Pascoalcfc2dd42015-02-09 18:00:05 +000067 case APP_STORE:
Jose Pascoal391bd312014-10-13 18:16:27 +010068 default:
Tiago Costae29f4cd2014-10-10 18:30:59 +010069 view = inflater.inflate(R.layout.fragment_download_fairphone_confirmation_popup, container);
70 break;
Tiago Costae29f4cd2014-10-10 18:30:59 +010071 }
Jose Pascoal391bd312014-10-13 18:16:27 +010072
73 versionNameText = (TextView) view.findViewById(R.id.installing_version);
74 versionNameText.setText(mVersion);
75
76 TextView versionTypeText = (TextView) view.findViewById(R.id.version_type_text);
77
78 if (mIsOSChange)
79 {
80 versionTypeText.setText(R.string.a_different_os_from_the_current);
81 }
Tiago Costae29f4cd2014-10-10 18:30:59 +010082
Jose Pascoald6c19a72014-10-17 16:52:36 +010083 TextView eraseAllDataWarning = (TextView) view.findViewById(R.id.erase_all_data_warning_text);
84
85 if (mHasEraseAllDataWarning)
86 {
87 eraseAllDataWarning.setVisibility(View.VISIBLE);
88 }
89 else
90 {
91 eraseAllDataWarning.setVisibility(View.GONE);
92 }
93
Tiago Costae29f4cd2014-10-10 18:30:59 +010094 mOkButton = (Button) view.findViewById(R.id.confirmation_yes_button);
95 mOkButton.setEnabled(false);
96
97 mOkButton.setOnClickListener(new OnClickListener()
98 {
99 @Override
100 public void onClick(View v)
101 {
102 ConfirmationPopupDialog.this.dismiss();
103 mCallback.onFinishPopUpDialog(true);
104 }
105 });
106
Filipe Gonçalvesb31d5862015-02-04 17:28:58 +0000107 Button mCancelButton = (Button) view.findViewById(R.id.confirmation_no_button);
Tiago Costae29f4cd2014-10-10 18:30:59 +0100108
Filipe Gonçalvesb31d5862015-02-04 17:28:58 +0000109 mCancelButton.setOnClickListener(new OnClickListener() {
Tiago Costae29f4cd2014-10-10 18:30:59 +0100110
Filipe Gonçalvesb31d5862015-02-04 17:28:58 +0000111 @Override
112 public void onClick(View v) {
113 ConfirmationPopupDialog.this.dismiss();
114 mCallback.onFinishPopUpDialog(false);
115 }
Tiago Costae29f4cd2014-10-10 18:30:59 +0100116 });
117
Filipe Gonçalvesb31d5862015-02-04 17:28:58 +0000118 CheckBox mConfirmationCheckbox = (CheckBox) view.findViewById(R.id.confirmation_checkbox);
119 mConfirmationCheckbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
Tiago Costae29f4cd2014-10-10 18:30:59 +0100120
Filipe Gonçalvesb31d5862015-02-04 17:28:58 +0000121 @Override
122 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
123 mOkButton.setEnabled(isChecked);
124 }
Tiago Costae29f4cd2014-10-10 18:30:59 +0100125 });
126
127 return view;
128 }
129
130 @Override
131 public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
132 {
133 if (EditorInfo.IME_ACTION_DONE == actionId)
134 {
135 // Return input text to activity
Tiago Costae29f4cd2014-10-10 18:30:59 +0100136 this.dismiss();
137 return true;
138 }
139 return false;
140 }
141
142}