/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.android.ui.widget; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.support.v4.content.Loader; import android.support.v4.widget.CursorAdapter; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import com.galaxy.meetup.client.android.R; import com.galaxy.meetup.client.android.content.EsAccount; import com.galaxy.meetup.client.android.content.EsAccountsData; import com.galaxy.meetup.client.android.ui.fragments.CircleListLoader; /** * * @author sihai * */ public class EsWidgetConfigurationActivity extends FragmentActivity implements android.support.v4.app.LoaderManager.LoaderCallbacks, android.widget.AdapterView.OnItemClickListener { private CirclesCursorAdapter mAdapter; private final Object mAdapterLock = new Object(); private int mAppWidgetId; private boolean mDisplayingEmptyView; private ListView mListView; public EsWidgetConfigurationActivity() { } private void updateDisplay() { if(mDisplayingEmptyView) { mListView.setVisibility(4); findViewById(0x1020004).setVisibility(0); findViewById(R.id.list_empty_text).setVisibility(8); findViewById(R.id.list_empty_progress).setVisibility(0); } else { mListView.setVisibility(0); findViewById(0x1020004).setVisibility(8); findViewById(R.id.list_empty_text).setVisibility(8); findViewById(R.id.list_empty_progress).setVisibility(8); } } public void onCreate(Bundle bundle) { super.onCreate(bundle); Bundle bundle1 = getIntent().getExtras(); if(bundle1 != null) mAppWidgetId = bundle1.getInt("appWidgetId", 0); else mAppWidgetId = 0; if(mAppWidgetId == 0) { finish(); } else { if(EsAccountsData.getActiveAccount(this) == null) { EsWidgetUtils.saveCircleInfo(this, mAppWidgetId, null, null); EsWidgetProvider.configureWidget(this, EsAccountsData.getActiveAccount(this), mAppWidgetId); Intent intent = new Intent(); intent.putExtra("appWidgetId", mAppWidgetId); setResult(-1, intent); finish(); } setContentView(R.layout.widget_configuration_activity); mDisplayingEmptyView = true; mListView = (ListView)findViewById(0x102000a); mListView.setOnItemClickListener(this); View view = LayoutInflater.from(this).inflate(R.layout.widget_configuration_entry, null); view.findViewById(R.id.circle_icon).setVisibility(8); ((TextView)view.findViewById(R.id.circle_name)).setText(R.string.widget_all_circles); view.findViewById(R.id.circle_member_count).setVisibility(8); mListView.addHeaderView(view, null, true); mAdapter = new CirclesCursorAdapter(this); mListView.setAdapter(mAdapter); updateDisplay(); getSupportLoaderManager().initLoader(0, null, this); } } public final Loader onCreateLoader(int i, Bundle bundle) { Loader loader = null; if(0 == i) { EsAccount esaccount = EsAccountsData.getActiveAccount(this); if(esaccount != null) loader = new CircleListLoader(this, EsAccountsData.getActiveAccount(this), 4, WidgetCircleQuery.PROJECTION); } return loader; } public void onItemClick(AdapterView adapterview, View view, int i, long l) { String s = null; String s2 = null; int j = i - mListView.getHeaderViewsCount(); if(j >= 0) { synchronized(mAdapterLock) { if(mAdapter == null || mAdapter.getCursor() == null) { return; } else { Cursor cursor; cursor = mAdapter.getCursor(); if(!cursor.isClosed() && cursor.getCount() > j) { String s1; cursor.moveToPosition(j); s = cursor.getString(1); s1 = cursor.getString(2); s2 = s1; } } } } else { s = "v.all.circles"; s2 = getString(R.string.stream_circles); } EsWidgetUtils.saveCircleInfo(this, mAppWidgetId, s, s2); EsWidgetProvider.configureWidget(this, EsAccountsData.getActiveAccount(this), mAppWidgetId); Intent intent = new Intent(); intent.putExtra("appWidgetId", mAppWidgetId); setResult(-1, intent); finish(); } public final void onLoadFinished(Loader loader, Object obj) { Cursor cursor = (Cursor)obj; if(0 == loader.getId()) { synchronized(mAdapterLock) { mAdapter.swapCursor(cursor); mDisplayingEmptyView = false; updateDisplay(); } } } public final void onLoaderReset(Loader loader) { } private final class CirclesCursorAdapter extends CursorAdapter { public final void bindView(View view, Context context, Cursor cursor) { ((TextView)view.findViewById(R.id.circle_name)).setText(cursor.getString(2)); TextView textview = (TextView)view.findViewById(R.id.circle_member_count); ImageView imageview; if((1 & cursor.getInt(4)) != 0) textview.setText(null); else textview.setText((new StringBuilder("(")).append(cursor.getInt(3)).append(")").toString()); imageview = (ImageView)view.findViewById(R.id.circle_icon); if("v.whatshot".equals(cursor.getString(1))) imageview.setImageResource(R.drawable.list_whats_hot); else imageview.setImageResource(R.drawable.list_circle); } public final View newView(Context context, Cursor cursor, ViewGroup viewgroup) { return LayoutInflater.from(context).inflate(R.layout.widget_configuration_entry, null); } public CirclesCursorAdapter(Context context) { super(context, null, 0); } } public static interface WidgetCircleQuery { public static final String PROJECTION[] = { "_id", "circle_id", "circle_name", "contact_count", "semantic_hints" }; } }