package com.ijoomer.components.jomsocial; import android.app.Activity; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Color; import android.location.Address; import android.provider.MediaStore; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.text.Html; import android.text.method.LinkMovementMethod; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RadioGroup; import android.widget.SeekBar; import android.widget.Spinner; import android.widget.TextView.BufferType; import com.androidquery.AQuery; import com.ijoomer.common.classes.IjoomerMapAddress; import com.ijoomer.common.classes.IjoomerPhotoGalaryActivity; import com.ijoomer.common.classes.IjoomerShareActivity; import com.ijoomer.common.classes.IjoomerUtilities; import com.ijoomer.common.classes.ViewHolder; import com.ijoomer.common.configuration.IjoomerApplicationConfiguration; import com.ijoomer.common.configuration.IjoomerGlobalConfiguration; import com.ijoomer.custom.interfaces.SelectImageDialogListner; import com.ijoomer.customviews.IjoomerAudioPlayer.AudioListener; import com.ijoomer.customviews.IjoomerButton; import com.ijoomer.customviews.IjoomerEditText; import com.ijoomer.customviews.IjoomerListView; import com.ijoomer.customviews.IjoomerTextView; import com.ijoomer.customviews.IjoomerVoiceAndTextMessager; import com.ijoomer.customviews.IjoomerVoiceAndTextMessager.MessageHandler; import com.ijoomer.customviews.IjoomerVoiceButton; import com.ijoomer.library.jomsocial.JomGalleryDataProvider; import com.ijoomer.page.indicator.CirclePageIndicator; import com.ijoomer.src.R; import com.ijoomer.weservice.WebCallListener; import com.smart.framework.AlertMagnatic; import com.smart.framework.CustomAlertMagnatic; 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.Arrays; import java.util.HashMap; /** * This Class Contains All Method Related To JomAlbumsDetailsActivity. * * @author tasol * */ public class JomAlbumsDetailsActivity extends JomMasterActivity { private LinearLayout listFooter; private LinearLayout lnrPhotoList; private LinearLayout lnrPlayRecordComment; private IjoomerListView lstAlbumComment; private LinearLayout lnrAlbumWriteComment; private LinearLayout lnrAlbumDetail; private LinearLayout lnrCreateAlbum; private LinearLayout lnrHeader; private IjoomerTextView txtAlbumUploadPhoto; private IjoomerTextView txtAlbumTitle; private IjoomerTextView txAlbumBy; private IjoomerTextView txtAlbumDateLocation; private IjoomerTextView txtAlbumDescription; private IjoomerTextView txtAlbumLikeCount; private IjoomerTextView txtAlbumDislikeCount; private IjoomerTextView txtAlbumCommentCount; private IjoomerTextView txtAlbumShare; private IjoomerTextView txtAlbumPrivacy; private IjoomerTextView txtAlbumEdit; private IjoomerTextView txtTotalRecordComment; private IjoomerTextView txtRecordUser; private IjoomerTextView txtAlbumRemove; private IjoomerEditText edtAlbumName; private IjoomerEditText edtAlbumLocation; private IjoomerEditText edtAlbumDescription; private IjoomerButton btnSave; private IjoomerButton btnCancle; private IjoomerButton btnUploadPhoto; private IjoomerVoiceButton btnPlayAll; private IjoomerVoiceAndTextMessager voiceMessager; private Spinner spnWhoCanSee; private ImageView imgAlbumAvatar; private ImageView imgMap; private ViewPager viewPager; private CirclePageIndicator indicator; private ViewGroup albumDeatilHeaderLayout; private AQuery androidQuery; private HashMap<String, String> IN_ALBUM; private PageAdapter adapter; private SmartListAdapterWithHolder commentAdapter; private ArrayList<SmartListItem> listData = new ArrayList<SmartListItem>(); private ArrayList<JomPhotoFragment> photoFragmetStack = new ArrayList<JomPhotoFragment>(); private JomGalleryDataProvider commentProvider; private JomGalleryDataProvider provider; final private int PICK_IMAGE = 0; final private int PICK_IMAGE_MULTIPLE = 1; final private int GET_ADDRESS_FROM_MAP = 4; final private int TAKE_IMAGE = 2; private int recordCommentCounter; private int recordCommentTotal; private int recordCommentLast; public static boolean isResume = false; public static int PHOTO_COUNT; private String IN_USERID; private String IN_GROUP_ID; private String IN_PROFILE_COVER; private String IN_GROUP_UPLOAD_PHOTO; private int pageLimit = 12; /** * Overrides method */ @Override public int setLayoutId() { return R.layout.jom_album_details; } @Override public void initComponents() { albumDeatilHeaderLayout = (ViewGroup) LayoutInflater.from(this).inflate(R.layout.jom_album_details_header, null); listFooter = (LinearLayout) LayoutInflater.from(this).inflate(R.layout.ijoomer_list_footer, null); lstAlbumComment = (IjoomerListView) findViewById(R.id.lstAlbumComment); lnrHeader = (LinearLayout) findViewById(R.id.lnrHeader); txtAlbumEdit = (IjoomerTextView) findViewById(R.id.txtAlbumEdit); txtAlbumRemove = (IjoomerTextView) findViewById(R.id.txtAlbumRemove); txtAlbumUploadPhoto = (IjoomerTextView) findViewById(R.id.txtAlbumUploadPhoto); lstAlbumComment.addHeaderView(albumDeatilHeaderLayout, null, false); lstAlbumComment.addFooterView(listFooter, null, false); lstAlbumComment.setAdapter(null); lnrAlbumWriteComment = (LinearLayout) findViewById(R.id.lnrAlbumWriteComment); lnrCreateAlbum = (LinearLayout) albumDeatilHeaderLayout.findViewById(R.id.lnrCreateAlbum); lnrAlbumDetail = (LinearLayout) albumDeatilHeaderLayout.findViewById(R.id.lnrAlbumDetail); lnrPhotoList = (LinearLayout) albumDeatilHeaderLayout.findViewById(R.id.lnrPhotoList); lnrPlayRecordComment = (LinearLayout) albumDeatilHeaderLayout.findViewById(R.id.lnrPlayRecordComment); txtAlbumTitle = (IjoomerTextView) albumDeatilHeaderLayout.findViewById(R.id.txtAlbumTitle); txAlbumBy = (IjoomerTextView) albumDeatilHeaderLayout.findViewById(R.id.txAlbumBy); txtAlbumDateLocation = (IjoomerTextView) albumDeatilHeaderLayout.findViewById(R.id.txtAlbumDateLocation); txtAlbumDescription = (IjoomerTextView) albumDeatilHeaderLayout.findViewById(R.id.txtAlbumDescription); txtAlbumLikeCount = (IjoomerTextView) albumDeatilHeaderLayout.findViewById(R.id.txtAlbumLikeCount); txtAlbumDislikeCount = (IjoomerTextView) albumDeatilHeaderLayout.findViewById(R.id.txtAlbumDislikeCount); txtAlbumCommentCount = (IjoomerTextView) albumDeatilHeaderLayout.findViewById(R.id.txtAlbumCommentCount); txtAlbumShare = (IjoomerTextView) albumDeatilHeaderLayout.findViewById(R.id.txtAlbumShare); txtAlbumPrivacy = (IjoomerTextView) albumDeatilHeaderLayout.findViewById(R.id.txtAlbumPrivacy); txtTotalRecordComment = (IjoomerTextView) albumDeatilHeaderLayout.findViewById(R.id.txtTotalRecordComment); txtRecordUser = (IjoomerTextView) albumDeatilHeaderLayout.findViewById(R.id.txtRecordUser); imgAlbumAvatar = (ImageView) albumDeatilHeaderLayout.findViewById(R.id.imgAlbumAvatar); imgMap = (ImageView) albumDeatilHeaderLayout.findViewById(R.id.imgMap); indicator = (CirclePageIndicator) albumDeatilHeaderLayout.findViewById(R.id.indicator); edtAlbumName = (IjoomerEditText) albumDeatilHeaderLayout.findViewById(R.id.edtAlbumName); edtAlbumLocation = (IjoomerEditText) albumDeatilHeaderLayout.findViewById(R.id.edtAlbumLocation); edtAlbumDescription = (IjoomerEditText) albumDeatilHeaderLayout.findViewById(R.id.edtAlbumDescription); spnWhoCanSee = (Spinner) albumDeatilHeaderLayout.findViewById(R.id.spnWhoCanSee); btnSave = (IjoomerButton) albumDeatilHeaderLayout.findViewById(R.id.btnSave); btnCancle = (IjoomerButton) albumDeatilHeaderLayout.findViewById(R.id.btnCancle); btnUploadPhoto = (IjoomerButton) albumDeatilHeaderLayout.findViewById(R.id.btnUploadPhoto); btnPlayAll = (IjoomerVoiceButton) albumDeatilHeaderLayout.findViewById(R.id.btnPlayAll); btnPlayAll.setReportVoice(false); viewPager = (ViewPager) albumDeatilHeaderLayout.findViewById(R.id.viewPager); voiceMessager = (IjoomerVoiceAndTextMessager) findViewById(R.id.voiceMessager); androidQuery = new AQuery(this); commentProvider = new JomGalleryDataProvider(this); provider = new JomGalleryDataProvider(this); getIntentData(); } @Override public void prepareViews() { if (!IN_PROFILE_COVER.equals("0")) { ting(getString(R.string.tap_photo_to_set_profile_cover)); lnrHeader.setVisibility(View.GONE); lnrAlbumDetail.setVisibility(View.GONE); lnrAlbumWriteComment.setVisibility(View.GONE); btnUploadPhoto.setVisibility(View.VISIBLE); lnrPlayRecordComment.setVisibility(View.GONE); } spnWhoCanSee.setAdapter(new IjoomerUtilities.MyCustomAdapter(this, new ArrayList<String>(Arrays.asList(getResources().getStringArray(R.array.wall_post_type))))); spnWhoCanSee.setSelection(getPrivacyIndex(IN_ALBUM.get(PERMISSION))); if (IN_ALBUM.get(COUNT).equals("0") && IN_PROFILE_COVER.equals("0")) { lnrPhotoList.setVisibility(View.GONE); } else { System.out.println("stack : " + getSupportFragmentManager().getBackStackEntryCount()); adapter = new PageAdapter(getSupportFragmentManager()); viewPager.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, calculateheight())); viewPager.setAdapter(adapter); viewPager.setCurrentItem(0); indicator.setPageColor(Color.TRANSPARENT); indicator.setStrokeColor(Color.parseColor(getString(R.color.jom_blue))); indicator.setStrokeWidth(convertSizeToDeviceDependent(1)); indicator.setRadius(convertSizeToDeviceDependent(3)); indicator.setFillColor(Color.parseColor(getString(R.color.jom_blue))); indicator.setViewPager(viewPager, 0); indicator.setSnap(true); if(Integer.parseInt(IN_ALBUM.get(COUNT)) <= 0 ){ indicator.setVisibility(View.GONE); } indicator.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { System.out.println("PAGE state " + arg0); ((JomPhotoFragment) adapter.getItem(arg0)).notifyChanges(); } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { } }); } } @Override protected void onResume() { super.onResume(); if (IjoomerApplicationConfiguration.isReloadRequired()) { IjoomerApplicationConfiguration.setReloadRequired(false); if (!IN_ALBUM.get(COUNT).toString().equals(PHOTO_COUNT)) { if (lnrPhotoList.getVisibility() == View.GONE) { lnrPhotoList.setVisibility(View.VISIBLE); } photoFragmetStack.clear(); IN_ALBUM.put(COUNT, String.valueOf(PHOTO_COUNT)); IjoomerApplicationConfiguration.setReloadRequired(true); prepareViews(); } else { photoFragmetStack.clear(); prepareViews(); } } } @SuppressWarnings("unchecked") @Override public void setActionListeners() { btnPlayAll.setAudioListener(new AudioListener() { @Override public void onReportClicked() { } @Override public void onPrepared() { } @Override public void onPlayClicked(boolean isplaying) { if (!isplaying) { recordCommentCounter = 0; recordCommentLast = 0; txtRecordUser.setVisibility(View.VISIBLE); recordCommentCounter += 1; txtTotalRecordComment.setText("(" + recordCommentCounter + "/" + recordCommentTotal + ")"); for (int i = 0; i < listData.size(); i++) { if (getAudio(((HashMap<String, String>) listData.get(i).getValues().get(0)).get(COMMENT)) != null) { btnPlayAll.setAudioPath(getAudio(((HashMap<String, String>) listData.get(i).getValues().get(0)).get(COMMENT)), false); btnPlayAll.setText(getAudioLength(((HashMap<String, String>) listData.get(i).getValues().get(0)).get(COMMENT))); txtRecordUser.setText(((HashMap<String, String>) listData.get(i).getValues().get(0)).get(USER_NAME)); recordCommentLast = i; break; } } } else { btnPlayAll.setCustomText(getString(R.string.play_all)); txtTotalRecordComment.setText("(" + recordCommentTotal + ")"); txtRecordUser.setVisibility(View.GONE); recordCommentCounter = recordCommentTotal; } } @Override public void onComplete() { if (recordCommentCounter == recordCommentTotal) { btnPlayAll.setCustomText(getString(R.string.play_all)); txtTotalRecordComment.setText("(" + recordCommentTotal + ")"); txtRecordUser.setVisibility(View.GONE); } else { recordCommentCounter += 1; txtTotalRecordComment.setText("(" + recordCommentCounter + "/" + recordCommentTotal + ")"); for (int i = recordCommentLast + 1; i < listData.size(); i++) { if (getAudio(((HashMap<String, String>) listData.get(i).getValues().get(0)).get(COMMENT)) != null) { btnPlayAll.setAudioPath(getAudio(((HashMap<String, String>) listData.get(i).getValues().get(0)).get(COMMENT)), true); btnPlayAll.setText(getAudioLength(((HashMap<String, String>) listData.get(i).getValues().get(0)).get(COMMENT))); txtRecordUser.setText(((HashMap<String, String>) listData.get(i).getValues().get(0)).get(USER_NAME)); recordCommentLast = i; break; } } } } }); btnSave.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { hideSoftKeyboard(); if (edtAlbumName.getText().toString().trim().length() > 0) { if (isAlbumDataChanged()) { final SeekBar proSeekBar = IjoomerUtilities.getLoadingDialog(getString(R.string.dialog_loading_sending_request)); Address address = IjoomerUtilities.getLatLongFromAddress(edtAlbumLocation.getText().toString().trim()); provider.addAlbum(IN_ALBUM.get(ID), IN_GROUP_ID, edtAlbumName.getText().toString().trim(), edtAlbumDescription.getText().toString().trim(), address != null ? address.getLatitude() : 0, address != null ? address.getLongitude() : 0, getPrivacyCode(spnWhoCanSee.getSelectedItem().toString().trim()).toString(), 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) { updateHeader(provider.getNotificationData()); IjoomerApplicationConfiguration.setReloadRequired(true); saveAlbumDetails(); lnrAlbumDetail.setVisibility(View.VISIBLE); lnrCreateAlbum.setVisibility(View.GONE); lnrPhotoList.setVisibility(View.VISIBLE); lnrAlbumWriteComment.setVisibility(View.VISIBLE); } else { IjoomerUtilities.getCustomOkDialog(getString(R.string.photo), getString(getResources().getIdentifier("code" + responseCode, "string", getPackageName())), getString(R.string.ok), R.layout.ijoomer_ok_dialog, new CustomAlertNeutral() { @Override public void NeutralMethod() { lnrAlbumDetail.setVisibility(View.VISIBLE); lnrCreateAlbum.setVisibility(View.GONE); lnrPhotoList.setVisibility(View.VISIBLE); lnrAlbumWriteComment.setVisibility(View.VISIBLE); } }); } } }); } else { lnrAlbumDetail.setVisibility(View.VISIBLE); lnrCreateAlbum.setVisibility(View.GONE); lnrPhotoList.setVisibility(View.VISIBLE); lnrAlbumWriteComment.setVisibility(View.VISIBLE); } } else { edtAlbumName.setError(getString(R.string.validation_value_required)); } } }); btnUploadPhoto.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { IjoomerUtilities.selectImageDialog(new SelectImageDialogListner() { @Override public void onPhoneGallery() { if (IjoomerApplicationConfiguration.isUploadMultiplePhotos()) { Intent intent = new Intent(JomAlbumsDetailsActivity.this, IjoomerPhotoGalaryActivity.class); startActivityForResult(intent, PICK_IMAGE_MULTIPLE); } else { Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(Intent.createChooser(intent, ""), PICK_IMAGE); } } @Override public void onCapture() { final Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, setImageUri()); startActivityForResult(intent, TAKE_IMAGE); } }); } }); imgMap.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Intent intent = new Intent(JomAlbumsDetailsActivity.this, IjoomerMapAddress.class); startActivityForResult(intent, GET_ADDRESS_FROM_MAP); } }); voiceMessager.setMessageHandler(new MessageHandler() { @Override public void onVoiceMessageRecordingComplete(String message, String voiceMessagePath) { lstAlbumComment.setSelectionAfterHeaderView(); provider.addAlbumComment(IN_ALBUM.get(ID), message, voiceMessagePath, 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) { updateHeader(provider.getNotificationData()); IjoomerApplicationConfiguration.setReloadRequired(true); IN_ALBUM.put(COMMENTCOUNT, String.valueOf(Integer.parseInt(IN_ALBUM.get(COMMENTCOUNT)) + 1)); txtAlbumCommentCount.setText(IN_ALBUM.get(COMMENTCOUNT)); getComment(); } else { IjoomerUtilities.getCustomOkDialog(getString(R.string.photo), getString(getResources().getIdentifier("code" + responseCode, "string", getPackageName())), getString(R.string.ok), R.layout.ijoomer_ok_dialog, new CustomAlertNeutral() { @Override public void NeutralMethod() { lnrAlbumDetail.setVisibility(View.VISIBLE); lnrCreateAlbum.setVisibility(View.GONE); } }); } } }); } @Override public void onButtonSend(String message) { lstAlbumComment.setSelectionAfterHeaderView(); provider.addAlbumComment(IN_ALBUM.get(ID), message, null, 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) { updateHeader(provider.getNotificationData()); IjoomerApplicationConfiguration.setReloadRequired(true); IN_ALBUM.put(COMMENTCOUNT, String.valueOf(Integer.parseInt(IN_ALBUM.get(COMMENTCOUNT)) + 1)); txtAlbumCommentCount.setText(IN_ALBUM.get(COMMENTCOUNT)); getComment(); } else { IjoomerUtilities.getCustomOkDialog(getString(R.string.photo), getString(getResources().getIdentifier("code" + responseCode, "string", getPackageName())), getString(R.string.ok), R.layout.ijoomer_ok_dialog, new CustomAlertNeutral() { @Override public void NeutralMethod() { lnrAlbumDetail.setVisibility(View.VISIBLE); lnrCreateAlbum.setVisibility(View.GONE); } }); } } }); } @Override public void onToggle(int messager) { } }); txtAlbumUploadPhoto.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { IjoomerUtilities.selectImageDialog(new SelectImageDialogListner() { @Override public void onPhoneGallery() { if (IjoomerApplicationConfiguration.isUploadMultiplePhotos()) { Intent intent = new Intent(JomAlbumsDetailsActivity.this, IjoomerPhotoGalaryActivity.class); startActivityForResult(intent, PICK_IMAGE_MULTIPLE); } else { Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(Intent.createChooser(intent, ""), PICK_IMAGE); } } @Override public void onCapture() { final Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, setImageUri()); startActivityForResult(intent, TAKE_IMAGE); } }); } }); txtAlbumEdit.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { if (lnrCreateAlbum.getVisibility() == View.GONE) { lnrAlbumDetail.setVisibility(View.GONE); lnrPhotoList.setVisibility(View.GONE); lnrAlbumWriteComment.setVisibility(View.GONE); lnrCreateAlbum.setVisibility(View.VISIBLE); } else { lnrAlbumDetail.setVisibility(View.VISIBLE); lnrPhotoList.setVisibility(View.VISIBLE); lnrAlbumWriteComment.setVisibility(View.VISIBLE); lnrCreateAlbum.setVisibility(View.GONE); } lstAlbumComment.setSelection(0); } }); btnCancle.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { lnrAlbumDetail.setVisibility(View.VISIBLE); lnrCreateAlbum.setVisibility(View.GONE); lnrPhotoList.setVisibility(View.VISIBLE); lnrAlbumWriteComment.setVisibility(View.VISIBLE); } }); txtAlbumShare.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { try { loadNew(IjoomerShareActivity.class, JomAlbumsDetailsActivity.this, false, "IN_SHARE_CAPTION", IN_ALBUM.get(NAME), "IN_SHARE_DESCRIPTION", IN_ALBUM.get(DESCRIPTION), "IN_SHARE_THUMB", IN_ALBUM.get(THUMB), "IN_SHARE_SHARELINK", IN_ALBUM.get(SHARELINK)); } catch (Throwable e) { e.printStackTrace(); } } }); txtAlbumLikeCount.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { if (IN_ALBUM.get(LIKED).equals("1")) { txtAlbumLikeCount.setClickable(false); provider.unlikeAlbum(IN_ALBUM.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) { if (responseCode == 200) { updateHeader(provider.getNotificationData()); IjoomerApplicationConfiguration.setReloadRequired(true); IN_ALBUM.put(LIKED, "0"); IN_ALBUM.put(LIKES, String.valueOf(Integer.parseInt(IN_ALBUM.get(LIKES)) - 1)); txtAlbumLikeCount.setText(IN_ALBUM.get(LIKES)); } else { responseErrorMessageHandler(responseCode, false); } txtAlbumLikeCount.setClickable(true); } }); } else { txtAlbumLikeCount.setClickable(false); provider.likeAlbum(IN_ALBUM.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) { if (responseCode == 200) { updateHeader(provider.getNotificationData()); IjoomerApplicationConfiguration.setReloadRequired(true); IN_ALBUM.put(LIKED, "1"); IN_ALBUM.put(LIKES, String.valueOf(Integer.parseInt(IN_ALBUM.get(LIKES)) + 1)); txtAlbumLikeCount.setText(IN_ALBUM.get(LIKES)); if (IN_ALBUM.get(DISLIKED).equals("1")) { IN_ALBUM.put(DISLIKES, String.valueOf(Integer.parseInt(IN_ALBUM.get(DISLIKES)) - 1)); IN_ALBUM.put(DISLIKED, "0"); txtAlbumDislikeCount.setText(IN_ALBUM.get(DISLIKES)); } } else { responseErrorMessageHandler(responseCode, false); } txtAlbumLikeCount.setClickable(true); } }); } } }); txtAlbumDislikeCount.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { if (IN_ALBUM.get(DISLIKED).equals("1")) { txtAlbumDislikeCount.setClickable(false); provider.unlikeAlbum(IN_ALBUM.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) { if (responseCode == 200) { updateHeader(provider.getNotificationData()); IjoomerApplicationConfiguration.setReloadRequired(true); IN_ALBUM.put(DISLIKED, "0"); IN_ALBUM.put(DISLIKES, String.valueOf(Integer.parseInt(IN_ALBUM.get(DISLIKES)) - 1)); txtAlbumDislikeCount.setText(IN_ALBUM.get(DISLIKES)); } else { responseErrorMessageHandler(responseCode, false); } txtAlbumDislikeCount.setClickable(true); } }); } else { txtAlbumDislikeCount.setClickable(false); provider.dislikeAlbum(IN_ALBUM.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) { if (responseCode == 200) { updateHeader(provider.getNotificationData()); IjoomerApplicationConfiguration.setReloadRequired(true); IN_ALBUM.put(DISLIKED, "1"); IN_ALBUM.put(DISLIKES, String.valueOf(Integer.parseInt(IN_ALBUM.get(DISLIKES)) + 1)); txtAlbumDislikeCount.setText(IN_ALBUM.get(DISLIKES)); if (IN_ALBUM.get(LIKED).equals("1")) { IN_ALBUM.put(LIKES, String.valueOf(Integer.parseInt(IN_ALBUM.get(LIKES)) - 1)); IN_ALBUM.put(LIKED, "0"); txtAlbumLikeCount.setText(IN_ALBUM.get(LIKES)); } } else { responseErrorMessageHandler(responseCode, false); } txtAlbumDislikeCount.setClickable(true); } }); } } }); txtAlbumRemove.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { IjoomerUtilities.getCustomConfirmDialog(getString(R.string.album_title_remove), getString(R.string.are_you_sure), getString(R.string.yes), getString(R.string.no), new CustomAlertMagnatic() { @Override public void PositiveMethod() { provider.removeAlbum(IN_ALBUM.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) { if (responseCode == 200) { updateHeader(provider.getNotificationData()); IjoomerApplicationConfiguration.setReloadRequired(true); finish(); } else { responseErrorMessageHandler(responseCode, false); } } }); } @Override public void NegativeMethod() { } }); } }); lstAlbumComment.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if ((firstVisibleItem + visibleItemCount) >= totalItemCount && totalItemCount > 2) { if (!commentProvider.isCalling() && commentProvider.hasNextPage()) { listFooterVisible(); commentProvider.getAlbumCommentList(IN_ALBUM.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) { listFooterInvisible(); if (responseCode == 200) { updateHeader(commentProvider.getNotificationData()); prepareList(data1, true); } else { responseErrorMessageHandler(responseCode, false); } } }); } } } }); } @SuppressWarnings("unchecked") @Override protected void onActivityResult(int requestCode, int resultCode, final Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == Activity.RESULT_OK) { switch (requestCode) { case PICK_IMAGE_MULTIPLE: if(IjoomerGlobalConfiguration.isEnableVoice()){ IjoomerUtilities.getConfirmDialog(getString(R.string.upload_photo), getString(R.string.photo_uploaded_with_voice), getString(R.string.yes), getString(R.string.no), false, new AlertMagnatic() { @Override public void PositiveMethod(DialogInterface dialog, int id) { try { loadNew(JomUplodPhotosActivity.class, JomAlbumsDetailsActivity.this, false, "IN_PHOTOS_PATHS", data.getStringExtra("data").split("\\|"), "IN_ALBUM_ID", IN_ALBUM.get(ID)); } catch (Exception e) { } } @Override public void NegativeMethod(DialogInterface dialog, int id) { startUploadPhoto( data.getStringExtra("data").split("\\|"), IN_ALBUM.get(ID)); } }); }else{ startUploadPhoto( data.getStringExtra("data").split("\\|"), IN_ALBUM.get(ID)); } break; case PICK_IMAGE: if(IjoomerGlobalConfiguration.isEnableVoice()){ IjoomerUtilities.getConfirmDialog(getString(R.string.upload_photo), getString(R.string.photo_uploaded_with_voice), getString(R.string.yes), getString(R.string.no), false, new AlertMagnatic() { @Override public void PositiveMethod(DialogInterface dialog, int id) { try { loadNew(JomUplodPhotosActivity.class, JomAlbumsDetailsActivity.this, false, "IN_PHOTOS_PATHS", (getAbsolutePath(data.getData()) + "|").split("\\|"), "IN_ALBUM_ID", IN_ALBUM.get(ID)); } catch (Exception e) { } } @Override public void NegativeMethod(DialogInterface dialog, int id) { startUploadPhoto((getAbsolutePath(data.getData()) + "|").split("\\|"), IN_ALBUM.get(ID)); } }); }else{ startUploadPhoto((getAbsolutePath(data.getData()) + "|").split("\\|"), IN_ALBUM.get(ID)); } break; case TAKE_IMAGE: if(IjoomerGlobalConfiguration.isEnableVoice()){ IjoomerUtilities.getConfirmDialog(getString(R.string.upload_photo), getString(R.string.photo_uploaded_with_voice), getString(R.string.yes), getString(R.string.no), false, new AlertMagnatic() { @Override public void PositiveMethod(DialogInterface dialog, int id) { try { loadNew(JomUplodPhotosActivity.class, JomAlbumsDetailsActivity.this, false, "IN_PHOTOS_PATHS", (getImagePath() + "|").split("\\|"), "IN_ALBUM_ID", IN_ALBUM.get(ID)); } catch (Exception e) { } } @Override public void NegativeMethod(DialogInterface dialog, int id) { startUploadPhoto((getImagePath() + "|").split("\\|"), IN_ALBUM.get(ID)); } }); }else{ startUploadPhoto((getImagePath() + "|").split("\\|"), IN_ALBUM.get(ID)); } break; case GET_ADDRESS_FROM_MAP: edtAlbumLocation.setText(((HashMap<String, String>) data.getSerializableExtra("MAP_ADDRESSS_DATA")).get("address")); break; } } } @Override public void onCheckedChanged(RadioGroup arg0, int arg1) { } /** * Class methods */ /** * This method used to get inent data. */ @SuppressWarnings("unchecked") private void getIntentData() { IN_ALBUM = ((HashMap<String, String>) getIntent().getSerializableExtra("IN_ALBUM")) == null ? new HashMap<String, String>() : ((HashMap<String, String>) getIntent() .getSerializableExtra("IN_ALBUM")); IN_USERID = getIntent().getStringExtra("IN_USERID") == null ? "0" : getIntent().getStringExtra("IN_USERID"); IN_GROUP_ID = getIntent().getStringExtra("IN_GROUP_ID") == null ? "0" : getIntent().getStringExtra("IN_GROUP_ID"); IN_PROFILE_COVER = getIntent().getStringExtra("IN_PROFILE_COVER") == null ? "0" : getIntent().getStringExtra("IN_PROFILE_COVER"); PHOTO_COUNT = IN_ALBUM.get(COUNT) == null ? 0 : Integer.parseInt(IN_ALBUM.get(COUNT)); IN_GROUP_UPLOAD_PHOTO = getIntent().getStringExtra("IN_GROUP_UPLOAD_PHOTO") == null ? "0" : getIntent().getStringExtra("IN_GROUP_UPLOAD_PHOTO"); setIntentAlbumDetails(); if(IN_PROFILE_COVER.equals("0")){ getComment(); } } /** * This method used to set album details form intent data. */ private void setIntentAlbumDetails() { if (IN_ALBUM.get(DELETEALLOWED).equals("1")) { txtAlbumRemove.setVisibility(View.VISIBLE); txtAlbumEdit.setVisibility(View.VISIBLE); txtAlbumUploadPhoto.setVisibility(View.VISIBLE); } if (IN_ALBUM.containsKey(EDITALBUM) && IN_ALBUM.get(EDITALBUM).equals("1")) { txtAlbumEdit.setVisibility(View.VISIBLE); } if (IN_GROUP_UPLOAD_PHOTO.equals("1")) { txtAlbumUploadPhoto.setVisibility(View.VISIBLE); } if (txtAlbumRemove.getVisibility() == View.GONE && txtAlbumEdit.getVisibility() == View.GONE && txtAlbumUploadPhoto.getVisibility() == View.GONE) { lnrHeader.setVisibility(View.GONE); } androidQuery.id(imgAlbumAvatar).image(IN_ALBUM.get(THUMB), true, true, getDeviceWidth(), 0); txAlbumBy.setMovementMethod(LinkMovementMethod.getInstance()); txAlbumBy.setText(addClickablePart(Html.fromHtml(String.format(getString(R.string.by), IN_ALBUM.get(USER_NAME))), IN_ALBUM), BufferType.SPANNABLE); setAlbumDetails(); txtAlbumLikeCount.setText(IN_ALBUM.get(LIKES)); txtAlbumDislikeCount.setText(IN_ALBUM.get(DISLIKES)); txtAlbumCommentCount.setText(IN_ALBUM.get(COMMENTCOUNT)); edtAlbumName.setText(IN_ALBUM.get(NAME)); } /** * This method used to get album comment. */ private void getComment() { commentProvider.restorePagingSettings(); commentProvider.getAlbumCommentList(IN_ALBUM.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) { if (responseCode == 200) { updateHeader(commentProvider.getNotificationData()); prepareList(data1, false); commentAdapter = getListAdapter(); if (!IN_PROFILE_COVER.equals("0")) { lstAlbumComment.setAdapter(null); } else { lstAlbumComment.setAdapter(commentAdapter); } } else { if (responseCode != 204) { responseErrorMessageHandler(responseCode, false); } } } }); } /** * This method used to set album details for editing. */ private void setAlbumDetails() { edtAlbumName.setText(IN_ALBUM.get(NAME)); edtAlbumLocation.setText(IN_ALBUM.get(LOCATION)); edtAlbumDescription.setText(IN_ALBUM.get(DESCRIPTION)); spnWhoCanSee.setSelection(getPrivacyIndex(IN_ALBUM.get(PERMISSION))); txtAlbumTitle.setText(IN_ALBUM.get(NAME)); if (IN_ALBUM.get(LOCATION).trim().length() <= 0) { txtAlbumDateLocation.setText(IN_ALBUM.get(DATE)); } else { txtAlbumDateLocation.setText(IN_ALBUM.get(DATE) + " @ " + IN_ALBUM.get(LOCATION)); } txtAlbumPrivacy.setText(getPrivacyString(IN_ALBUM.get(PERMISSION))); txtAlbumDescription.setText(IN_ALBUM.get(DESCRIPTION)); } /** * This method used to save edited album details. */ private void saveAlbumDetails() { IN_ALBUM.put(NAME, edtAlbumName.getText().toString().trim()); IN_ALBUM.put(LOCATION, edtAlbumLocation.getText().toString().trim()); IN_ALBUM.put(DESCRIPTION, edtAlbumDescription.getText().toString().trim()); IN_ALBUM.put(PERMISSION, spnWhoCanSee.getSelectedItem().toString()); setAlbumDetails(); } /** * This method used to calculate dynamic height for album photo grid view * pager. * * @return */ public int calculateheight() { int calculateHeight; int totalCount = Integer.parseInt(IN_ALBUM.get(COUNT)); if (totalCount < pageLimit) { calculateHeight = (((totalCount % 4 == 0 ? totalCount / 4 : totalCount / 4 + 1) * 270) / 3); return convertSizeToDeviceDependent(calculateHeight); } return convertSizeToDeviceDependent(270); } /** * 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); } /** * This method used to check album details changed. * * @return represented {@link Boolean} */ private boolean isAlbumDataChanged() { boolean isChaged = false; if (!(edtAlbumName.getText().toString().equals(IN_ALBUM.get(NAME)) && edtAlbumDescription.getText().toString().equals(IN_ALBUM.get(DESCRIPTION)) && edtAlbumLocation.getText().toString().equals(IN_ALBUM.get(LOCATION)) && getPrivacyCode(spnWhoCanSee.getSelectedItem().toString()).equals( IN_ALBUM.get(PERMISSION)))) { isChaged = true; } return isChaged; } /** * This method used to get photo from fragment stack. * * @return represented {@link JomPhotoFragment} list */ public ArrayList<JomPhotoFragment> getPhotoFragmetStack() { return photoFragmetStack; } /** * This method used to prepare list album comment. * * @param data * represented album comment data * @param append * represented append data */ public void prepareList(ArrayList<HashMap<String, String>> data, boolean append) { if (data != null) { if (!append) { listData.clear(); recordCommentTotal = 0; } for (HashMap<String, String> hashMap : data) { if (getAudio(hashMap.get(COMMENT)) != null) { recordCommentTotal += 1; } SmartListItem item = new SmartListItem(); item.setItemLayout(R.layout.jom_comment_list_item); ArrayList<Object> obj = new ArrayList<Object>(); obj.add(hashMap); item.setValues(obj); if (append) { commentAdapter.add(item); } else { listData.add(item); } } if (recordCommentTotal > 1 && IN_PROFILE_COVER.equals("0")) { lnrPlayRecordComment.setVisibility(View.VISIBLE); btnPlayAll.setCustomText(getString(R.string.play_all)); txtTotalRecordComment.setText("(" + recordCommentTotal + ")"); } } } private void startUploadPhoto(final String[] paths, final String albumID) { final SeekBar proSeekBar = IjoomerUtilities.getLoadingDialog(getString(R.string.dialog_loading_uploading_photos)); new JomGalleryDataProvider(this).uploadPhoto(null, null, paths, albumID, new WebCallListener() { @Override public void onProgressUpdate(final int progressCount) { proSeekBar.setProgress(progressCount); } @Override public void onCallComplete(final int responseCode, String errorMessage, ArrayList<HashMap<String, String>> data1, Object data2) { if (responseCode == 200) { if(IjoomerUtilities.mSmartAndroidActivity instanceof JomAlbumsActivity){ IjoomerApplicationConfiguration.setReloadRequired(true); ((JomAlbumsActivity)IjoomerUtilities.mSmartAndroidActivity).onResume(); }else if(IjoomerUtilities.mSmartAndroidActivity instanceof JomAlbumsDetailsActivity){ IjoomerApplicationConfiguration.setReloadRequired(true); PHOTO_COUNT += paths.length; ((JomAlbumsDetailsActivity)IjoomerUtilities.mSmartAndroidActivity).onResume(); }else if(IjoomerUtilities.mSmartAndroidActivity instanceof JomPhotoDetailsActivity || IjoomerUtilities.mSmartAndroidActivity instanceof JomPhotoTagActivity){ IjoomerApplicationConfiguration.setReloadRequired(true); PHOTO_COUNT += paths.length; } } else { if (errorMessage != null && errorMessage.length() > 0) { IjoomerUtilities.getCustomOkDialog(getString(R.string.upload_photo), errorMessage, getString(R.string.ok), R.layout.ijoomer_ok_dialog, new CustomAlertNeutral() { @Override public void NeutralMethod() { } }); } else { IjoomerUtilities.getCustomOkDialog(getString(R.string.upload_photo), 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 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.photo), getString(getResources().getIdentifier("code" + responseCode, "string", getPackageName())), getString(R.string.ok), R.layout.ijoomer_ok_dialog, new CustomAlertNeutral() { @Override public void NeutralMethod() { } }); } /** * List adapter for album comment. */ private SmartListAdapterWithHolder getListAdapter() { SmartListAdapterWithHolder adapterWithHolder = new SmartListAdapterWithHolder(JomAlbumsDetailsActivity.this, R.layout.jom_comment_list_item, listData, new ItemView() { @Override public View setItemView(final int position, View v, SmartListItem item, final ViewHolder holder) { holder.imgCommentUserAvatar = (ImageView) v.findViewById(R.id.imgCommentUserAvatar); holder.txtCommentUserName = (IjoomerTextView) v.findViewById(R.id.txtCommentUserName); holder.txtCommentDate = (IjoomerTextView) v.findViewById(R.id.txtCommentDate); holder.txtCommentTitle = (IjoomerTextView) v.findViewById(R.id.txtCommentTitle); holder.btnCommentRemove = (IjoomerButton) v.findViewById(R.id.btnCommentRemove); holder.btnPlayStopVoice = (IjoomerVoiceButton) v.findViewById(R.id.btnPlayStopVoice); holder.btnPlayStopVoice.setVisibility(View.GONE); holder.btnCommentRemove.setVisibility(View.GONE); @SuppressWarnings("unchecked") final HashMap<String, String> row = (HashMap<String, String>) item.getValues().get(0); androidQuery.id(holder.imgCommentUserAvatar).image(row.get(USER_AVATAR), true, true, getDeviceWidth(), 0); holder.txtCommentTitle.setText(getPlainText(row.get(COMMENT))); holder.txtCommentUserName.setText(row.get(USER_NAME)); holder.txtCommentDate.setText(row.get(DATE)); if (row.containsKey(DELETEALLOWED) && row.get(DELETEALLOWED).equals("1")) { holder.btnCommentRemove.setVisibility(View.VISIBLE); } if (getAudio(row.get(COMMENT)) != null) { holder.btnPlayStopVoice.setVisibility(View.VISIBLE); holder.btnPlayStopVoice.setText(getAudioLength(row.get(COMMENT))); holder.btnPlayStopVoice.setAudioPath(getAudio(row.get(COMMENT)), false); holder.btnPlayStopVoice.setAudioListener(new AudioListener() { @Override public void onReportClicked() { reportVoice(getAudio(row.get(COMMENT))); } @Override public void onPrepared() { } @Override public void onPlayClicked(boolean isplaying) { btnPlayAll.setCustomText(getString(R.string.play_all)); txtTotalRecordComment.setText("(" + recordCommentTotal + ")"); txtRecordUser.setVisibility(View.GONE); recordCommentCounter = recordCommentTotal; } @Override public void onComplete() { } }); } holder.btnCommentRemove.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { IjoomerUtilities.getCustomConfirmDialog(getString(R.string.album), getString(R.string.are_you_sure), getString(R.string.yes), getString(R.string.no), new CustomAlertMagnatic() { @Override public void PositiveMethod() { provider.removeAlbumComment(row.get(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) { updateHeader(provider.getNotificationData()); commentAdapter.remove(commentAdapter.getItem(position)); if (getAudio(row.get(COMMENT)) != null) { recordCommentTotal -= 1; txtTotalRecordComment.setText("(" + recordCommentTotal + ")"); if (recordCommentTotal == 1) { lnrPlayRecordComment.setVisibility(View.GONE); } } IN_ALBUM.put(COMMENTCOUNT, String.valueOf(Integer.parseInt(IN_ALBUM.get(COMMENTCOUNT)) - 1)); txtAlbumCommentCount.setText(IN_ALBUM.get(COMMENTCOUNT)); } else { responseErrorMessageHandler(responseCode, false); } } }); } @Override public void NegativeMethod() { } }); } }); holder.imgCommentUserAvatar.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { if (row.get(USER_PROFILE).equals("1")) { gotoProfile(row.get(USER_ID)); } } }); return v; } @Override public View setItemView(int position, View v, SmartListItem item) { return null; } }); return adapterWithHolder; } /** * Inner class */ private class PageAdapter extends FragmentStatePagerAdapter { private boolean isInitial = true; public PageAdapter(FragmentManager fm) { super(fm); } public int getItemPosition(Object object) { return POSITION_NONE; } @Override public Fragment getItem(int pos) { try { return photoFragmetStack.get(pos); } catch (Exception e) { JomPhotoFragment fragment = new JomPhotoFragment(pos + 1, IN_ALBUM, IN_USERID, IN_PROFILE_COVER); if (isInitial) { fragment.setInitial(true); isInitial = false; } photoFragmetStack.add(fragment); return fragment; } } @Override public int getCount() { return ((PHOTO_COUNT % pageLimit) == 0 ? PHOTO_COUNT / pageLimit : (PHOTO_COUNT / pageLimit) + 1); } } }