/*
Swisscom Safe Connect
Copyright (C) 2014 Swisscom
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.swisscom.safeconnect.fragment;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.text.method.LinkMovementMethod;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import com.swisscom.safeconnect.R;
import com.swisscom.safeconnect.backend.BackendConnector;
import com.swisscom.safeconnect.model.PlumberSubscriptionResponse;
import com.swisscom.safeconnect.utils.Config;
import java.text.DateFormat;
import java.util.Date;
public class VoucherDlgFragment extends DialogFragment {
private BackendConnector backendConnector;
public static class LocalDlgFragment extends DialogFragment {
private String title = "";
private String msg = "";
private DialogInterface.OnClickListener positiveListener = null;
@Override
public void onStart() {
super.onStart();
// clickable hyperlinks
((TextView) getDialog().findViewById(android.R.id.message))
.setMovementMethod(LinkMovementMethod.getInstance());
}
public void setTitle(String title) {
this.title = title;
}
public void setMessage(String msg) {
this.msg = msg;
}
public void setOnPositiveClickListener(DialogInterface.OnClickListener listener) {
positiveListener = listener;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
super.onCreateDialog(savedInstanceState);
CustomAlertDialogBuilder builder = new CustomAlertDialogBuilder(getActivity());
builder.setTitle(title)
.setMessage(msg)
.setPositiveButton(R.string.lab_btn_ok, positiveListener);
return builder.createCustomAlertDialog();
}
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.AppCompat_Pipe_Dialog_Alert);
LayoutInflater inflater = getActivity().getLayoutInflater();
View v = inflater.inflate(R.layout.voucher, null);
builder.setView(v);
Button btnCancel = (Button) v.findViewById(R.id.btn_cancel);
btnCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
backendConnector = new BackendConnector(getActivity());
Button btnOk = (Button) v.findViewById(R.id.btn_ok);
final EditText etVoucher = (EditText) v.findViewById(R.id.et_voucher);
btnOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
backendConnector.activateVoucher(
Config.getInstance().getPhoneNumber(), etVoucher.getText().toString(),
new BackendConnector.ResponseCallback<PlumberSubscriptionResponse>() {
@Override
public void onRequestComplete(int statusCode, PlumberSubscriptionResponse response) {
final LocalDlgFragment dlg = new LocalDlgFragment();
dlg.setTitle(getString(R.string.lab_voucher_title));
dlg.setOnPositiveClickListener(new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dlg.dismiss();
}
});
if (statusCode == 200) {
switch (response.getStatus()) {
case ALREADY_ACTIVATED:
case INVALID_VOUCHER:
dlg.setMessage(getString(R.string.lab_dlg_invalid_voucher));
dlg.setOnPositiveClickListener(new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dlg.dismiss();
}
});
break;
case TARGET_NOT_FOUND:
dlg.setMessage(getString(R.string.lab_dlg_voucher_not_found));
break;
default:
Date date = new Date(response.getValidTill() * 1000);
dlg.setMessage(getString(R.string.lab_dlg_voucher_activated,
DateFormat.getDateInstance().format(date)));
dlg.setOnPositiveClickListener(new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dismiss();
}
});
break;
}
} else {
dlg.setMessage(getString(R.string.lab_registration_network_error));
dismiss();
}
dlg.show(getChildFragmentManager(), "info");
}
});
}
});
return builder.create();
}
}