package org.sechat.app.task;
/**
* Copyright (c) 2014 Sechat GbR <support@sechat.org>
*
* You should have received a copy of the MIT License
* along with this program (license.txt).
* If not, see <http://sechat.github.io/license.txt>.
*/
import java.util.Set;
import com.google.i18n.phonenumbers.PhoneNumberUtil;
import org.sechat.app.R;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.os.AsyncTask;
import android.telephony.TelephonyManager;
import android.view.ViewGroup.LayoutParams;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Spinner;
public class AddManualContacts extends AsyncTask<Void, Void, Builder> {
Activity act;
public AddManualContacts(Activity act) {
this.act = act;
}
@Override
protected Builder doInBackground(Void... arg0) {
TelephonyManager manager =
(TelephonyManager) act.getSystemService(Context.TELEPHONY_SERVICE);
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
Set<String> regions = phoneUtil.getSupportedRegions();
String[] locales = regions.toArray(new String[regions.size()]);
final ArrayAdapter<String> adp = new ArrayAdapter<String>(act,
android.R.layout.simple_spinner_item, locales);
LinearLayout layout = new LinearLayout(act);
layout.setOrientation(LinearLayout.HORIZONTAL);
final Spinner sp = new Spinner(act);
sp.setLayoutParams(new LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
sp.setAdapter(adp);
sp.setSelection(getPostiton(locales, manager.getSimCountryIso()));
layout.addView(sp);
final EditText input = new EditText(act);
input.setLayoutParams(new LayoutParams(
LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
layout.addView(input);
Builder builder = new AlertDialog.Builder(act)
.setTitle("Add contact")
.setMessage(act.getString(R.string.add_contact_description))
.setView(layout)
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String[] numbers = input.getText().toString().split(",");
new AddContacts(act, sp.getSelectedItem().toString()).execute(numbers);
}
}).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {}
});
return builder;
}
@Override
protected void onPostExecute(Builder builder) {
builder.show();
}
private int getPostiton(String[] locales, String value) {
for(int i = 0; i < locales.length; i++) {
if (locales[i].equalsIgnoreCase(value)) return i;
}
return 0;
}
}