package org.pyload.android.client.dialogs;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import org.pyload.android.client.R;
import org.pyload.android.client.module.GuiTask;
import org.pyload.android.client.module.Utils;
import org.pyload.android.client.pyLoadApp;
import org.pyload.thrift.AccountInfo;
import org.pyload.thrift.Pyload;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class AccountDialog extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final AccountAdapter adapter = new AccountAdapter(getActivity());
final pyLoadApp app = (pyLoadApp) getActivity().getApplication();
GuiTask task = new GuiTask(new Runnable() {
public void run() {
Pyload.Client client = app.getClient();
adapter.setData(client.getAccounts(false));
}
});
app.addTask(task);
ListView lv = new ListView(getActivity());
lv.setAdapter(adapter);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setCancelable(true)
.setView(lv)
.setTitle(R.string.accounts)
.setPositiveButton(R.string.close, null);
return builder.create();
}
}
class AccountAdapter extends BaseAdapter {
static class ViewHolder {
private TextView type;
private TextView name;
private TextView valid;
private TextView validuntil;
private TextView trafficleft;
}
private LayoutInflater layoutInflater;
private List<AccountInfo> data;
public AccountAdapter(final Context context) {
layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
data = new ArrayList<AccountInfo>();
}
public int getCount() {
// this is a hack to show empty list item in getView()
return (data.size() > 0 ? data.size() : 1);
}
public void setData(List<AccountInfo> accounts) {
data = accounts;
notifyDataSetChanged();
}
public Object getItem(int arg0) {
return data.get(arg0);
}
public long getItemId(int arg0) {
return arg0;
}
public View getView(int pos, View view, ViewGroup group) {
ViewHolder holder;
AccountInfo acc = (data.size() == 0 ? null : data.get(pos));
// here comes the empty list view
if (acc == null) {
return layoutInflater.inflate(R.layout.account_empty_list, null);
}
view = layoutInflater.inflate(R.layout.account_item, null);
holder = new ViewHolder();
holder.type = (TextView) view.findViewById(R.id.type);
holder.name = (TextView) view.findViewById(R.id.name);
holder.valid = (TextView) view.findViewById(R.id.valid);
holder.validuntil = (TextView) view.findViewById(R.id.validuntil);
holder.trafficleft = (TextView) view.findViewById(R.id.trafficleft);
view.setTag(holder);
holder = (ViewHolder) view.getTag();
holder.type.setText(acc.type);
holder.name.setText(acc.login);
if (acc.valid)
holder.valid.setText(R.string.valid);
else
holder.valid.setText(R.string.invalid);
if (acc.trafficleft < 0)
holder.trafficleft.setText(R.string.unlimited);
else
holder.trafficleft.setText(Utils.formatSize(acc.trafficleft));
if (acc.validuntil < 0)
holder.validuntil.setText(R.string.unlimited);
else {
Date date = new Date();
date.setTime(acc.validuntil * 1000);
SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy");
holder.validuntil.setText(formatter.format(date));
}
return view;
}
}