/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.ui.fragments;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import android.accounts.Account;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.AsyncTaskLoader;
import android.support.v4.content.Loader;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import com.galaxy.meetup.client.android.AccountsAdapter;
import com.galaxy.meetup.client.android.R;
import com.galaxy.meetup.client.android.ui.activity.BaseAccountSelectionActivity;
import com.galaxy.meetup.client.util.AccountsUtil;
/**
*
* @author sihai
*
*/
public class AccountsListFragment extends EsFragment implements LoaderCallbacks, OnItemClickListener {
private BaseAccountSelectionActivity.AccountsAdder mAccountsAdder;
private AccountsAdapter mAdapter;
private boolean mAddAccountShown;
private ListView mListView;
public AccountsListFragment() {
}
protected final boolean isEmpty() {
boolean flag;
if (mAdapter == null || mAdapter.isEmpty())
flag = true;
else
flag = false;
return flag;
}
public final void onCreate(Bundle bundle)
{
super.onCreate(bundle);
if(bundle != null)
mAddAccountShown = bundle.getBoolean("add_account_shown");
}
public final Loader onCreateLoader(int i, Bundle bundle)
{
return new AccountsLoader(getActivity());
}
public final View onCreateView(LayoutInflater layoutinflater, ViewGroup viewgroup, Bundle bundle)
{
View view = super.onCreateView(layoutinflater, viewgroup, bundle, R.layout.list_layout);
mListView = (ListView)view.findViewById(0x102000a);
mListView.setOnItemClickListener(this);
mAdapter = new AccountsAdapter(getActivity());
mListView.setAdapter(mAdapter);
return view;
}
public void onItemClick(AdapterView adapterview, View view, int i, long l) {
mAccountsAdder.addAccount("sihai");
/*if(i != -1 + adapterview.getCount()) {
String s = (String)mListView.getItemAtPosition(i);
if(mAccountsAdder != null)
mAccountsAdder.addAccount(s);
} else {
AccountsUtil.addAccount(getActivity());
}*/
}
public final void onLoadFinished(Loader loader, Object obj)
{
List list = (List)obj;
mAdapter.clear();
Account account;
for(Iterator iterator = list.iterator(); iterator.hasNext(); mAdapter.add(account.name))
account = (Account)iterator.next();
mAdapter.add(getString(R.string.signup_create_new_account));
mAdapter.notifyDataSetChanged();
if(list.size() == 0 && !mAddAccountShown)
{
AccountsUtil.addAccount(getActivity());
mAddAccountShown = true;
}
}
public final void onLoaderReset(Loader loader)
{
}
public final void onResume()
{
super.onResume();
getLoaderManager().restartLoader(0, null, this);
}
public final void onSaveInstanceState(Bundle bundle)
{
super.onSaveInstanceState(bundle);
bundle.putBoolean("add_account_shown", mAddAccountShown);
}
public final void setAccountsAdder(BaseAccountSelectionActivity.AccountsAdder accountsadder)
{
mAccountsAdder = accountsadder;
}
public final void showList()
{
View view = getView();
if(mListView.getAdapter().getCount() > 0)
view.findViewById(0x1020004).setVisibility(8);
else
view.findViewById(0x1020004).setVisibility(0);
mListView.setVisibility(0);
}
private static final class AccountsLoader extends AsyncTaskLoader {
public final List<Account> loadInBackground() {
try {
return AccountsUtil.getAccounts(getContext());
} catch (Exception e) {
e.printStackTrace();
return Collections.emptyList();
}
}
protected final void onStartLoading() {
forceLoad();
}
public AccountsLoader(Context context) {
super(context);
}
}
}