package com.qmusic.controls.dialogs;
import android.accounts.Account;
import android.accounts.AccountManager;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import com.qmusic.R;
import com.qmusic.common.BConstants;
import com.qmusic.common.IAsyncDataCallback;
public class BAccountSelectionFragment extends BaseDialogFragment {
Account[] accounts;
String[] accountsList;
IAsyncDataCallback dataCallback;
public static final BAccountSelectionFragment getInstance() {
BAccountSelectionFragment fragment = new BAccountSelectionFragment();
return fragment;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
if (dataCallback == null && activity instanceof IAsyncDataCallback) {
dataCallback = (IAsyncDataCallback) activity;
}
}
@Override
public void onDetach() {
super.onDetach();
dataCallback = null;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
Activity act = getActivity();
AccountManager accountManager = AccountManager.get(act);
accounts = accountManager.getAccounts();
accountsList = new String[accounts.length + 1];
accountsList[0] = act.getString(R.string.local);
for (int i = 0; i < accounts.length; i++) {
accountsList[i + 1] = accounts[i].name;
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = null;
if (accountsList != null) {
dialog = new AlertDialog.Builder(getActivity()).setTitle("Select Account")
.setIcon(android.R.drawable.ic_dialog_info)
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (dataCallback != null) {
dataCallback.callback(BConstants.MSG_RESULT_CANCELED, null);
}
}
}).setSingleChoiceItems(accountsList, -1, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (dataCallback != null) {
if (which == 0) {
dataCallback.callback(BConstants.MSG_RESULT_OK, null);
} else {
dataCallback.callback(BConstants.MSG_RESULT_OK, accounts[which - 1]);
}
}
dismiss();
}
}).create();
}
return dialog;
}
public void setCallback(IAsyncDataCallback dataCallback) {
this.dataCallback = dataCallback;
}
}