blob: d58289d8270f9957111933b2e1737babbf3f5712 [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 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 }
82 else if (mIsOlderVersion)
83 {
84 versionTypeText.setText(R.string.an_older_version_of_os);
85 }
Tiago Costae29f4cd2014-10-10 18:30:59 +010086
Jose Pascoald6c19a72014-10-17 16:52:36 +010087 TextView eraseAllDataWarning = (TextView) view.findViewById(R.id.erase_all_data_warning_text);
88
89 if (mHasEraseAllDataWarning)
90 {
91 eraseAllDataWarning.setVisibility(View.VISIBLE);
92 }
93 else
94 {
95 eraseAllDataWarning.setVisibility(View.GONE);
96 }
97
Tiago Costae29f4cd2014-10-10 18:30:59 +010098 mOkButton = (Button) view.findViewById(R.id.confirmation_yes_button);
99 mOkButton.setEnabled(false);
100
101 mOkButton.setOnClickListener(new OnClickListener()
102 {
103 @Override
104 public void onClick(View v)
105 {
106 ConfirmationPopupDialog.this.dismiss();
107 mCallback.onFinishPopUpDialog(true);
108 }
109 });
110
Filipe Gonçalvesb31d5862015-02-04 17:28:58 +0000111 Button mCancelButton = (Button) view.findViewById(R.id.confirmation_no_button);
Tiago Costae29f4cd2014-10-10 18:30:59 +0100112
Filipe Gonçalvesb31d5862015-02-04 17:28:58 +0000113 mCancelButton.setOnClickListener(new OnClickListener() {
Tiago Costae29f4cd2014-10-10 18:30:59 +0100114
Filipe Gonçalvesb31d5862015-02-04 17:28:58 +0000115 @Override
116 public void onClick(View v) {
117 ConfirmationPopupDialog.this.dismiss();
118 mCallback.onFinishPopUpDialog(false);
119 }
Tiago Costae29f4cd2014-10-10 18:30:59 +0100120 });
121
Filipe Gonçalvesb31d5862015-02-04 17:28:58 +0000122 CheckBox mConfirmationCheckbox = (CheckBox) view.findViewById(R.id.confirmation_checkbox);
123 mConfirmationCheckbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
Tiago Costae29f4cd2014-10-10 18:30:59 +0100124
Filipe Gonçalvesb31d5862015-02-04 17:28:58 +0000125 @Override
126 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
127 mOkButton.setEnabled(isChecked);
128 }
Tiago Costae29f4cd2014-10-10 18:30:59 +0100129 });
130
131 return view;
132 }
133
134 @Override
135 public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
136 {
137 if (EditorInfo.IME_ACTION_DONE == actionId)
138 {
139 // Return input text to activity
Tiago Costae29f4cd2014-10-10 18:30:59 +0100140 this.dismiss();
141 return true;
142 }
143 return false;
144 }
145
146}