package com.ijoomer.components.jbolochat; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.text.Editable; import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.View; import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.Filter; import android.widget.Filterable; import android.widget.ImageView; import android.widget.ListView; import android.widget.ProgressBar; import android.widget.RadioGroup; import android.widget.SeekBar; import com.androidquery.AQuery; import com.ijoomer.common.classes.IjoomerUtilities; import com.ijoomer.common.classes.ViewHolder; import com.ijoomer.customviews.IjoomerButton; import com.ijoomer.customviews.IjoomerTextView; import com.ijoomer.library.jbolochat.JBoloChatDataProvider; import com.ijoomer.src.R; import com.ijoomer.weservice.WebCallListener; import com.smart.framework.CustomAlertNeutral; import com.smart.framework.ItemView; import com.smart.framework.SmartListAdapterWithHolder; import com.smart.framework.SmartListItem; import java.util.ArrayList; import java.util.HashMap; /** * This Class Contains All Method Related To JboloInviteUserListActivity. * * @author tasol * */ public class JboloInviteUserListActivity extends JBoloChatMasterActivity { private ListView lstGroupUser; private View listFooter; private AutoCompleteTextView actInviteUser; private IjoomerButton btnInvite; private ArrayList<SmartListItem> listData = new ArrayList<SmartListItem>(); private ArrayList<HashMap<String,String>> searchListData = new ArrayList<HashMap<String,String>>(); private SmartListAdapterWithHolder adapterWithHolder; private AQuery androidQuery; private JBoloChatDataProvider provider; private String IN_NODEID; private String selectInviteUserId="0"; private String participantId=""; /** * Overrides methods */ @Override public int setLayoutId() { return R.layout.jbolo_chat_invite_friend_for_group_list; } @Override public void initComponents() { lstGroupUser = (ListView) findViewById(R.id.lstGroupUser); listFooter = LayoutInflater.from(this).inflate(R.layout.ijoomer_list_footer, null); lstGroupUser.addFooterView(listFooter, null, false); actInviteUser = (AutoCompleteTextView) findViewById(R.id.actInviteUser); btnInvite = (IjoomerButton) findViewById(R.id.btnInvite); androidQuery = new AQuery(this); provider = new JBoloChatDataProvider(this); } @Override public void prepareViews() { actInviteUser.setAdapter(new PlacesAutoCompleteAdapter(this,R.layout.ijoomer_map_address_auto_complete_list_item)); getIntentData(); } @Override protected void onResume() { super.onResume(); } @Override public void setActionListeners() { btnInvite.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(actInviteUser.getText().toString().trim().length()>0 && !selectInviteUserId.equals("0")){ provider.inviteUser(IN_NODEID,selectInviteUserId, new WebCallListener() { @Override public void onCallComplete(int responseCode, String errorMessage, final ArrayList<HashMap<String, String>> data1, Object data2) { if(responseCode==200){ IjoomerUtilities.getCustomOkDialog(getString(R.string.jbolochat), getString(R.string.jbolo_chat_event_ignore_successfully), getString(R.string.ok), R.layout.ijoomer_ok_dialog, new CustomAlertNeutral() { @Override public void NeutralMethod() { Intent intent = new Intent(); intent.putExtra("NODEID",data1.get(0).get(NID)); setResult(Activity.RESULT_OK,intent); finish(); } }); }else{ if(responseCode==400){ IjoomerUtilities.getCustomOkDialog(getString(R.string.jbolochat), errorMessage, getString(R.string.ok), R.layout.ijoomer_ok_dialog, new CustomAlertNeutral() { @Override public void NeutralMethod() { Intent intent = new Intent(); setResult(Activity.RESULT_CANCELED,intent); finish(); } }); }else{ IjoomerUtilities.getCustomOkDialog(getString(R.string.jbolochat), getString(getResources().getIdentifier("code" + responseCode, "string", getPackageName())), getString(R.string.ok), R.layout.ijoomer_ok_dialog, new CustomAlertNeutral() { @Override public void NeutralMethod() { Intent intent = new Intent(); setResult(Activity.RESULT_CANCELED,intent); finish(); } }); } } } @Override public void onProgressUpdate(int progressCount) { } }); } } }); actInviteUser.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int pos, long l) { hideSoftKeyboard(); String str = (String) adapterView.getItemAtPosition(pos); actInviteUser.setText(str); selectInviteUserId = searchListData.get(pos).get(USERID); } }); } @Override public void onCheckedChanged(RadioGroup arg0, int arg1) { } /** * Class methods */ /** * This method used to get intetn data. */ private void getIntentData(){ IN_NODEID = getIntent().getStringExtra("IN_NODEID") == null ?"" : getIntent().getStringExtra("IN_NODEID"); getGroupUser(); } /** * This method used to get group participants. */ private void getGroupUser(){ final SeekBar proSeekBar = IjoomerUtilities.getLoadingDialog(getString(R.string.dialog_loading_sending_request)); provider.getGroupUser(IN_NODEID, new WebCallListener() { @Override public void onCallComplete(int responseCode, String errorMessage, ArrayList<HashMap<String, String>> data1, Object data2) { if (responseCode == 200) { for(HashMap<String,String> row :data1){ participantId+=row.get(USERID)+","; } participantId = participantId.substring(0,participantId.length()-1); prepareList(data1, false); adapterWithHolder = getListAdapter(); lstGroupUser.setAdapter(adapterWithHolder); } else { responseErrorMessageHandler(responseCode, true); } } @Override public void onProgressUpdate(int progressCount) { proSeekBar.setProgress(progressCount); } }); } /** * This method used to shown response message. * * @param responseCode * represented response code * @param finishActivityOnConnectionProblem * represented finish activity on connection problem */ private void responseErrorMessageHandler(final int responseCode, final boolean finishActivityOnConnectionProblem) { IjoomerUtilities.getCustomOkDialog(getString(R.string.jbolochat), getString(getResources().getIdentifier("code" + responseCode, "string", getPackageName())), getString(R.string.ok), R.layout.ijoomer_ok_dialog, new CustomAlertNeutral() { @Override public void NeutralMethod() { if (responseCode == 599 && finishActivityOnConnectionProblem) { finish(); } } }); } /** * This method used to prepare group participants. * @param data represented participants data * @param isAppend represented is data append */ public void prepareList(ArrayList<HashMap<String, String>> data,boolean isAppend) { if(data!=null && data.size()>0){ if(!isAppend){ listData.clear(); } for (HashMap<String, String> hashMap : data) { SmartListItem item = new SmartListItem(); item.setItemLayout(R.layout.jbolo_chat_online_member_list_item); ArrayList<Object> obj = new ArrayList<Object>(); obj.add(hashMap); item.setValues(obj); if(isAppend){ adapterWithHolder.add(item); }else{ listData.add(item); } } } } /** * This method used to visible list footer */ public void listFooterVisible() { listFooter.setVisibility(View.VISIBLE); } /** * This method used to gone list footer */ public void listFooterInvisible() { listFooter.setVisibility(View.GONE); } /** * List adapter group participants. */ private SmartListAdapterWithHolder getListAdapter() { SmartListAdapterWithHolder adapter = new SmartListAdapterWithHolder(this, R.layout.jbolo_chat_online_member_list_item, listData, new ItemView() { @Override public View setItemView(int position, View v, SmartListItem item, ViewHolder holder) { holder.jbolotxtUserName = (IjoomerTextView) v.findViewById(R.id.jbolotxtUserName); holder.jboloUserImg = (ImageView) v.findViewById(R.id.jboloUserImg); holder.jbolotxtUserStatusMessage = (IjoomerTextView) v.findViewById(R.id.jbolotxtUserStatusMessage); holder.jboloUserStatusImg = (ImageView) v.findViewById(R.id.jboloUserStatusImg); @SuppressWarnings("unchecked") final HashMap<String, String> row = (HashMap<String, String>) item.getValues().get(0); holder.jbolotxtUserName.setText(row.get(USERNAME)); holder.jbolotxtUserStatusMessage.setText(row.get(STATUSMSG)); androidQuery.id(holder.jboloUserImg).image(row.get(AVTR), true, true, getDeviceWidth(), 0); if(row.get(STATUS).equals("1")){ androidQuery.id(holder.jboloUserStatusImg).image(getResources().getDrawable(R.drawable.jbolo_chat_available)); }else if(row.get(STATUS).equals("2")){ androidQuery.id(holder.jboloUserStatusImg).image(getResources().getDrawable(R.drawable.jbolo_chat_busy)); }else if(row.get(STATUS).equals("3")){ androidQuery.id(holder.jboloUserStatusImg).image(getResources().getDrawable(R.drawable.jbolo_chat_away)); } return v; } @Override public View setItemView(int position, View v, SmartListItem item) { return null; } }); return adapter; } class PlacesAutoCompleteAdapter extends ArrayAdapter<String> implements Filterable { private ArrayList<HashMap<String,String>> resultList; public PlacesAutoCompleteAdapter(Context context, int textViewResourceId) { super(context, textViewResourceId); } @Override public int getCount() { return resultList.size(); } @Override public String getItem(int index) { return resultList.get(index).get(USERNAME); } @Override public Filter getFilter() { Filter filter = new Filter() { @Override protected FilterResults performFiltering(final CharSequence constraint) { final FilterResults filterResults = new FilterResults(); if (constraint != null) { // Retrieve the autocomplete results. searchListData = provider.searchUserForGroupInvitation(participantId,constraint.toString()); resultList = searchListData; filterResults.values = resultList; filterResults.count = resultList.size(); } return filterResults; } @Override protected void publishResults(CharSequence constraint, FilterResults results) { if (results != null && results.count > 0) { notifyDataSetChanged(); } else { notifyDataSetInvalidated(); } } }; return filter; } } }