blob: f5eab9be23bc5080a67cc7c25d396fc1a2d7732b [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:
Maarten Derksd2704262016-03-17 15:34:51 +010067 case LATEST_FAIRPHONE:
Tiago Costae29f4cd2014-10-10 18:30:59 +010068 case FAIRPHONE:
Jose Pascoalcfc2dd42015-02-09 18:00:05 +000069 case APP_STORE:
Jose Pascoal391bd312014-10-13 18:16:27 +010070 default:
Tiago Costae29f4cd2014-10-10 18:30:59 +010071 view = inflater.inflate(R.layout.fragment_download_fairphone_confirmation_popup, container);
72 break;
Tiago Costae29f4cd2014-10-10 18:30:59 +010073 }
Jose Pascoal391bd312014-10-13 18:16:27 +010074
75 versionNameText = (TextView) view.findViewById(R.id.installing_version);
76 versionNameText.setText(mVersion);
77
78 TextView versionTypeText = (TextView) view.findViewById(R.id.version_type_text);
79
80 if (mIsOSChange)
81 {
82 versionTypeText.setText(R.string.a_different_os_from_the_current);
83 }
84 else if (mIsOlderVersion)
85 {
86 versionTypeText.setText(R.string.an_older_version_of_os);
87 }
Tiago Costae29f4cd2014-10-10 18:30:59 +010088
Jose Pascoald6c19a72014-10-17 16:52:36 +010089 TextView eraseAllDataWarning = (TextView) view.findViewById(R.id.erase_all_data_warning_text);
90
91 if (mHasEraseAllDataWarning)
92 {
93 eraseAllDataWarning.setVisibility(View.VISIBLE);
94 }
95 else
96 {
97 eraseAllDataWarning.setVisibility(View.GONE);
98 }
99
Tiago Costae29f4cd2014-10-10 18:30:59 +0100100 mOkButton = (Button) view.findViewById(R.id.confirmation_yes_button);
101 mOkButton.setEnabled(false);
102
103 mOkButton.setOnClickListener(new OnClickListener()
104 {
105 @Override
106 public void onClick(View v)
107 {
108 ConfirmationPopupDialog.this.dismiss();
109 mCallback.onFinishPopUpDialog(true);
110 }
111 });
112
Filipe Gonçalvesb31d5862015-02-04 17:28:58 +0000113 Button mCancelButton = (Button) view.findViewById(R.id.confirmation_no_button);
Tiago Costae29f4cd2014-10-10 18:30:59 +0100114
Filipe Gonçalvesb31d5862015-02-04 17:28:58 +0000115 mCancelButton.setOnClickListener(new OnClickListener() {
Tiago Costae29f4cd2014-10-10 18:30:59 +0100116
Filipe Gonçalvesb31d5862015-02-04 17:28:58 +0000117 @Override
118 public void onClick(View v) {
119 ConfirmationPopupDialog.this.dismiss();
120 mCallback.onFinishPopUpDialog(false);
121 }
Tiago Costae29f4cd2014-10-10 18:30:59 +0100122 });
123
Filipe Gonçalvesb31d5862015-02-04 17:28:58 +0000124 CheckBox mConfirmationCheckbox = (CheckBox) view.findViewById(R.id.confirmation_checkbox);
125 mConfirmationCheckbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
Tiago Costae29f4cd2014-10-10 18:30:59 +0100126
Filipe Gonçalvesb31d5862015-02-04 17:28:58 +0000127 @Override
128 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
129 mOkButton.setEnabled(isChecked);
130 }
Tiago Costae29f4cd2014-10-10 18:30:59 +0100131 });
132
133 return view;
134 }
135
136 @Override
137 public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
138 {
139 if (EditorInfo.IME_ACTION_DONE == actionId)
140 {
141 // Return input text to activity
Tiago Costae29f4cd2014-10-10 18:30:59 +0100142 this.dismiss();
143 return true;
144 }
145 return false;
146 }
147
148}