package com.ijoomer.components.jomsocial; import java.util.ArrayList; import java.util.HashMap; import android.content.Intent; import android.graphics.Bitmap; import android.view.View; import android.view.View.OnClickListener; import android.widget.LinearLayout; import android.widget.PopupWindow; import android.widget.ProgressBar; import android.widget.RadioGroup; import android.widget.SeekBar; import com.androidquery.AQuery; import com.androidquery.callback.AjaxCallback; import com.androidquery.callback.AjaxStatus; import com.ijoomer.common.classes.IjoomerUtilities; import com.ijoomer.custom.interfaces.PhotoTagListener; import com.ijoomer.customviews.IjoomerButton; import com.ijoomer.customviews.PhotoTagView; import com.ijoomer.library.jomsocial.JomGalleryDataProvider; import com.ijoomer.src.R; import com.ijoomer.weservice.WebCallListener; import com.smart.framework.CustomAlertNeutral; /** * This Class Contains All Method Related To JomPhotoTagActivity. * * @author tasol * */ public class JomPhotoTagActivity extends JomMasterActivity { private LinearLayout lnrTagOptions; private IjoomerButton btnAddTag; private IjoomerButton btnRemoveTag; private PopupWindow dialog; private ProgressBar pbrImage; private AQuery androidQuery; private PhotoTagView imgPhotoDetail; private ArrayList<HashMap<String, String>> tagList; private HashMap<String, String> IN_PHOTO_DATA; private JomGalleryDataProvider provider; private String tagPosition; private final int ADD_TAG =1; private final int REMOVE_TAG =2; /** * Overrides methods */ @Override public int setLayoutId() { return R.layout.jom_photo_tag; } @Override public void initComponents() { getIntentData(); androidQuery = new AQuery(this); provider = new JomGalleryDataProvider(this); imgPhotoDetail = (PhotoTagView) findViewById(R.id.imgPhotoDetail); pbrImage = (ProgressBar) findViewById(R.id.pbrImage); btnAddTag = (IjoomerButton) findViewById(R.id.btnAddTag); btnRemoveTag = (IjoomerButton) findViewById(R.id.btnRemoveTag); lnrTagOptions = (LinearLayout) findViewById(R.id.lnrTagOptions); } @Override public void prepareViews() { pbrImage.setVisibility(View.VISIBLE); imgPhotoDetail.setTagLabelResource(R.drawable.tag_label); androidQuery.ajax(IN_PHOTO_DATA.get("url"), Bitmap.class, 0, new AjaxCallback<Bitmap>() { @Override public void callback(String url, Bitmap object, AjaxStatus status) { super.callback(url, object, status); pbrImage.setVisibility(View.GONE); imgPhotoDetail.setImageBitmap(object); } }); loadPhotoTags(); } @Override public void setActionListeners() { imgPhotoDetail.setPhotoTagListener(new PhotoTagListener() { @Override public void onTagedItemClicked(int position, Object data) { gotoProfile(tagList.get(position).get(USER_ID)); } @Override public void onAddNewTag(String rectPosition) { tagPosition = rectPosition; try{ loadNewResult(JomTagPhotoVideoAddRemoveActivity.class, JomPhotoTagActivity.this, ADD_TAG, "IN_TYPE", PHOTOS, "IN_PHOTO_ID", IN_PHOTO_DATA.get(ID).toString(), "IN_TAG_TYPE", "add"); }catch (Exception e){ } //showPhotoTagOrRemoveDialog(false); } @Override public void showTagOptions(boolean isTagCanceld) { lnrTagOptions.setVisibility(View.VISIBLE); if (imgPhotoDetail.getTagedUserList() != null && imgPhotoDetail.getTagedUserList().size() > 0) { btnRemoveTag.setVisibility(View.VISIBLE); } else { btnRemoveTag.setVisibility(View.GONE); } if (!isTagCanceld) { btnAddTag.setText(getString(R.string.select_tag_user)); } else { btnAddTag.setText(getString(R.string.add_tag_manual)); } } @Override public void onTagAreaConflict() { IjoomerUtilities.getCustomOkDialog(getString(R.string.dialog_title_tag_user), getString(R.string.dialog_photo_tag_error), getString(R.string.ok), R.layout.ijoomer_ok_dialog, new CustomAlertNeutral() { @Override public void NeutralMethod() { } }); } @Override public void onCancel() { btnAddTag.setText(getString(R.string.add_tag_manual)); } }); btnAddTag.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (btnAddTag.getText().toString().equals(getString(R.string.add_tag_manual))) { imgPhotoDetail.setAddTag(); btnAddTag.setText(getString(R.string.select_tag_user)); } else { imgPhotoDetail.addNewTag(); } } }); btnRemoveTag.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { try{ loadNewResult(JomTagPhotoVideoAddRemoveActivity.class,JomPhotoTagActivity.this,REMOVE_TAG,"IN_TYPE",PHOTOS,"IN_PHOTO_ID",IN_PHOTO_DATA.get(ID).toString(),"IN_TAG_TYPE","remove","IN_PHOTO_REMOVE_TAG_LIST",imgPhotoDetail.getTagedUserList()); }catch (Exception e){ } } }); } @Override public void onCheckedChanged(RadioGroup arg0, int arg1) { } @Override public int setHeaderLayoutId() { return 0; } @Override public int setFooterLayoutId() { return 0; } @Override protected void onActivityResult(int requestCode, int resultCode,final Intent data) { super.onActivityResult(requestCode, resultCode, data); if(resultCode==RESULT_OK){ onResume(); if(requestCode==ADD_TAG){ provider.addPhotoTag(IN_PHOTO_DATA.get(ID), data.getStringExtra("IN_USER_ID"), tagPosition, new WebCallListener() { final SeekBar proSeekBar = IjoomerUtilities.getLoadingDialog(getString(R.string.dialog_loading_sending_request)); @Override public void onProgressUpdate(int progressCount) { } @Override public void onCallComplete(int responseCode, String errorMessage, ArrayList<HashMap<String, String>> data1, Object data2) { btnAddTag.setText(getString(R.string.add_tag_manual)); if (responseCode == 200) { provider.getPhotoTages(IN_PHOTO_DATA.get(ID), new WebCallListener() { @Override public void onProgressUpdate(int progressCount) { proSeekBar.setProgress(progressCount); } @Override public void onCallComplete(int responseCode, String errorMessage, ArrayList<HashMap<String, String>> data1, Object data2) { if (responseCode == 200) { tagList = data1; } imgPhotoDetail.setTagedUserList(tagList); } }); } else { proSeekBar.setProgress(100); IjoomerUtilities.getCustomOkDialog(getString(R.string.dialog_title_tag_user), getString(getResources().getIdentifier("code" + responseCode, "string", getPackageName())), getString(R.string.ok), R.layout.ijoomer_ok_dialog, new CustomAlertNeutral() { @Override public void NeutralMethod() { if (dialog != null && dialog.isShowing()) { dialog.dismiss(); } } }); } } }); }else if(requestCode==REMOVE_TAG){ provider.removePhotoTag(data.getStringExtra("IN_TAG_ID"), new WebCallListener() { final SeekBar proSeekBar = IjoomerUtilities.getLoadingDialog(getString(R.string.dialog_loading_sending_request)); @Override public void onProgressUpdate(int progressCount) { proSeekBar.setProgress(progressCount); } @Override public void onCallComplete(int responseCode, String errorMessage, ArrayList<HashMap<String, String>> data1, Object data2) { if (responseCode == 200) { tagList.remove(data.getIntExtra("IN_TAG_POSITION",0)); imgPhotoDetail.setTagedUserList(tagList); } else { responseErrorMessageHandler(responseCode); } } }); } } } /** * Class methods */ /** * This method used to get intent data. */ @SuppressWarnings("unchecked") private void getIntentData() { IN_PHOTO_DATA = (HashMap<String, String>) getIntent().getSerializableExtra("IN_PHOTO_DATA"); } /** * This method used to shown response message. * * @param responseCode * represented response code */ private void responseErrorMessageHandler(int responseCode) { IjoomerUtilities.getCustomOkDialog(getString(R.string.dialog_title_tag_user), getString(getResources().getIdentifier("code" + responseCode, "string", getPackageName())), getString(R.string.ok), R.layout.ijoomer_ok_dialog, new CustomAlertNeutral() { @Override public void NeutralMethod() { } }); } /** * This method used to load photo tag. */ private void loadPhotoTags() { provider.getPhotoTages(IN_PHOTO_DATA.get("id"), new WebCallListener() { @Override public void onProgressUpdate(int progressCount) { } @Override public void onCallComplete(int responseCode, String errorMessage, ArrayList<HashMap<String, String>> data1, Object data2) { tagList = data1; imgPhotoDetail.setTagedUserList(data1); } }); } }