/* 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(); } }