package com.pinthecloud.athere.fragment;
import java.util.ArrayList;
import java.util.List;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarDrawerToggle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ImageView;
import android.widget.ListView;
import com.pinthecloud.athere.AhGlobalVariable;
import com.pinthecloud.athere.R;
import com.pinthecloud.athere.activity.ChupaChatActivity;
import com.pinthecloud.athere.adapter.ChupaListAdapter;
import com.pinthecloud.athere.interfaces.AhEntityCallback;
import com.pinthecloud.athere.model.AhMessage;
import com.pinthecloud.athere.model.AhUser;
import com.pinthecloud.athere.model.Chupa;
public class ChupaListFragment extends AhFragment{
private ActionBarDrawerToggle mDrawerToggle;
private ChupaListAdapter squareChupaListAdapter;
private ListView squareChupaListView;
private ImageView blankImage;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View view = inflater.inflate(R.layout.fragment_chupa_list, container, false);
findComponent(view);
setChupaList();
setMessageHandler();
return view;
}
@Override
public void onStart() {
super.onStart();
updateChupaList();
}
private void findComponent(View view){
squareChupaListView = (ListView) view.findViewById(R.id.chupa_list_frag_list);
blankImage = (ImageView) view.findViewById(R.id.chupa_list_frag_blank_image);
}
private void setChupaList(){
squareChupaListAdapter = new ChupaListAdapter(context, thisFragment);
squareChupaListView.setAdapter(squareChupaListAdapter);
squareChupaListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
AhUser user = userDBHelper.getUser(squareChupaListAdapter.getItem(position).getUserId(), true);
Intent intent = new Intent(activity, ChupaChatActivity.class);
intent.putExtra(AhGlobalVariable.USER_KEY, user);
startActivity(intent);
}
});
}
private void setMessageHandler(){
messageHelper.setMessageHandler(this, new AhEntityCallback<AhMessage>() {
@Override
public void onCompleted(AhMessage entity) {
updateChupaList();
}
});
}
private void updateChupaList() {
final List<AhMessage> lastChupaList = messageDBHelper.getLastChupas();
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
// Set square chupa list view
squareChupaListAdapter.clear();
squareChupaListAdapter.addAll(convertToMap(lastChupaList));
// If there is no message, show blank image
if(squareChupaListAdapter.getCount() < 1){
blankImage.setVisibility(View.VISIBLE);
} else{
blankImage.setVisibility(View.GONE);
}
// Refresh square activity action bar notification item
activity.invalidateOptionsMenu();
}
});
}
private List<Chupa> convertToMap(List<AhMessage> lastChupaList) {
List<Chupa> chupaList = new ArrayList<Chupa>();
for(AhMessage message : lastChupaList){
Chupa chupa = new Chupa();
String otherUserId = null;
if (message.isMine()) {
// the other user is Receiver
otherUserId = message.getReceiverId();
} else {
// the other user is Sender
otherUserId = message.getSenderId();
}
AhUser otherUser = userDBHelper.getUser(otherUserId, true);
chupa.setUserId(otherUserId);
chupa.setUserNickName(otherUser != null ? otherUser.getNickName() : "Unkown");
chupa.setExit(userDBHelper.isUserExit(otherUserId));
chupa.setContent(message.getContent());
chupa.setTimeStamp(message.getTimeStamp());
chupa.setId(message.getChupaCommunId());
chupa.setBadgeNum(messageDBHelper.getChupaBadgeNum(message.getChupaCommunId()));
chupaList.add(chupa);
}
return chupaList;
}
/**
* Users of this fragment must call this method to set up the navigation
* drawer interactions.
*
* @param fragmentId
* The android:id of this fragment in its activity's layout.
* @param drawerLayout
* The DrawerLayout containing this fragment's UI.
*/
public void setUp(DrawerLayout drawerLayout) {
ActionBar actionBar = activity.getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(true);
// ActionBarDrawerToggle ties together the the proper interactions
// between the navigation drawer and the action bar app icon.
mDrawerToggle = new ActionBarDrawerToggle(activity, /* host Activity */
drawerLayout, /* DrawerLayout object */
R.string.drawer_open, /* "open drawer" description for accessibility */
R.string.drawer_close /* "close drawer" description for accessibility */
)
{
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
if (!isAdded()) {
return;
}
activity.invalidateOptionsMenu(); // calls onPrepareOptionsMenu()
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
if (!isAdded()) {
return;
}
activity.invalidateOptionsMenu(); // calls onPrepareOptionsMenu()
}
};
drawerLayout.setDrawerListener(mDrawerToggle);
// Defer code dependent on restoration of previous instance state.
drawerLayout.post(new Runnable() {
@Override
public void run() {
mDrawerToggle.syncState();
}
});
}
}