package com.gnod.geekr.ui.activity;
import java.util.ArrayList;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.AbsListView;
import android.widget.BaseAdapter;
import android.widget.ExpandableListView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
import com.gnod.geekr.R;
import com.gnod.geekr.app.AppConfig;
import com.gnod.geekr.model.AccountModel;
import com.gnod.geekr.tool.manager.AccountManager;
import com.gnod.geekr.tool.manager.DrawableManager;
import com.gnod.geekr.tool.manager.Utils;
import com.gnod.geekr.widget.AvatarView;
public class AccountsActivity extends BaseActivity {
private AppConfig appConfig;
private ListView statusListView;
private DrawableManager drawableManager;
private ArrayList<AccountModel> accounts;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_accounts);
appConfig = (AppConfig) getApplication();
drawableManager = AppConfig.getDrawableManager();
initView();
bindListener();
bindView();
}
@Override
protected void onResume() {
super.onResume();
AppConfig.sImageFetcher.setExitTasksEarly(false);
}
@Override
protected void onPause() {
super.onPause();
AppConfig.sImageFetcher.setPauseWork(false);
AppConfig.sImageFetcher.setExitTasksEarly(true);
AppConfig.sImageFetcher.flushCache();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.menu_account, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
case R.id.menu_accounts_add:
Intent intent = new Intent(this, LoginActivity.class);
startActivity(intent);
return true;
}
return super.onOptionsItemSelected(item);
}
private void initView() {
statusListView = (ListView)findViewById(R.id.view_accounts_list);
}
private void bindListener() {
statusListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
if(position >= accounts.size())
return;
AccountManager.setActivityIndex(position);
Intent intent = new Intent(AccountsActivity.this,
TimeLineActivity.class);
startActivity(intent);
}
});
statusListView.setOnItemLongClickListener(longClickListener);
statusListView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if(scrollState == OnScrollListener.SCROLL_STATE_FLING) {
if (!Utils.hasHoneycomb()) {
AppConfig.sImageFetcher.setPauseWork(true);
}
} else {
AppConfig.sImageFetcher.setPauseWork(false);
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
}
});
}
private void bindView() {
setTitle("帐号管理" );
accounts = AccountManager.getAccounts();
statusListView.setAdapter(accountsAdapter);
}
private OnItemLongClickListener longClickListener = new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
int itemType = ExpandableListView.getPackedPositionType(id);
if(itemType == ExpandableListView.PACKED_POSITION_TYPE_GROUP) {
final int groupPos = ExpandableListView.getPackedPositionGroup(id);
AlertDialog.Builder builder = new AlertDialog.Builder(AccountsActivity.this);
builder.setMessage("删除用户");
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
AccountManager.removeAccount(groupPos);
accounts = AccountManager.getAccounts();
accountsAdapter.notifyDataSetChanged();
dialog.dismiss();
}
});
builder.create().show();
}
return false;
}
};
private BaseAdapter accountsAdapter = new BaseAdapter() {
@Override
public long getItemId(int position) {
return position;
}
@Override
public Object getItem(int position) {
return accounts.get(position);
}
@Override
public int getCount() {
return accounts.size();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ItemView itemView;
if(convertView == null) {
convertView = LayoutInflater.from(appConfig).inflate(R.layout.listitem_accounts, null);
itemView = new ItemView();
itemView.avatar = (AvatarView) convertView.findViewById(R.id.image_account_avatar);
itemView.verifiedImage = (ImageView) convertView.findViewById(R.id.image_account_verified);
itemView.textName = (TextView) convertView.findViewById(R.id.text_account_name);
itemView.textType = (TextView) convertView.findViewById(R.id.text_account_type);
itemView.imageSelected = (ImageView) convertView.findViewById(R.id.image_accout_selected);
convertView.setTag(itemView);
} else {
itemView = (ItemView) convertView.getTag();
}
bindItemView(itemView, position);
return convertView;
}
private void bindItemView(ItemView view, int position) {
AccountModel account = accounts.get(position);
view.textName.setText(account.name);
view.textType.setText(account.getTypeName());
view.imageSelected.setVisibility(View.GONE);
view.avatar.setImageResource(R.drawable.avatar_default);
// drawableManager.loadAvatar(account.iconURL, view.avatar, true);
AppConfig.sImageFetcher.loadImage(
account.iconURL, view.avatar,
R.drawable.avatar_default);
}
};
public class ItemView {
public AvatarView avatar;
public ImageView verifiedImage;
public TextView textName;
public TextView textType;
public ImageView imageSelected;
}
}