package com.ijoomer.components.k2; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Bitmap; import android.text.Html; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.SeekBar; import com.androidquery.AQuery; import com.androidquery.callback.AjaxCallback; import com.androidquery.callback.AjaxStatus; import com.ijoomer.common.classes.IjoomerShareActivity; import com.ijoomer.common.classes.IjoomerUtilities; import com.ijoomer.custom.interfaces.IjoomerSharedPreferences; import com.ijoomer.customviews.IjoomerRatingBar; import com.ijoomer.customviews.IjoomerRatingBar.RatingHandler; import com.ijoomer.customviews.IjoomerTextView; import com.ijoomer.library.k2.k2MainDataProvider; import com.ijoomer.src.R; import com.ijoomer.weservice.WebCallListener; import com.smart.framework.CustomAlertNeutral; import com.smart.framework.SmartActivity; import com.smart.framework.SmartFragment; import org.json.JSONArray; import org.json.JSONObject; import java.util.ArrayList; import java.util.HashMap; /** * This Fragment Contains All Method Related To k2ItemsDetailFragment. * * @author tasol * */ @SuppressLint("ValidFragment") public class k2ItemsDetailFragment extends SmartFragment implements K2TagHolder, IjoomerSharedPreferences { private IjoomerTextView txtItemTitle; private IjoomerTextView txtItemCreatedBy; private IjoomerTextView txtItemDescription; private IjoomerTextView txtItemRatingVote; private IjoomerRatingBar rtbItem; private ImageView imgSubmitRating; private ImageView imgCancelRating; private ImageView imgItem; private ImageView imgItemShare; private ProgressBar pbrItemDetail; private ProgressBar pbrImage; private HashMap<String, String> itemData; private k2MainDataProvider provider; private AQuery androidQuery; private String IN_MENUID; /** * Constructor * * @param mContext * represented {@link Context} * @param itemData * represented item detail data */ public k2ItemsDetailFragment(Context mContext, HashMap<String, String> itemData) { this.itemData = itemData; } /** * Overrides methods */ @Override public int setLayoutId() { return R.layout.k2_item_details_fragment; } @Override public View setLayoutView() { return null; } @Override public void initComponents(View currentView) { txtItemTitle = (IjoomerTextView) currentView.findViewById(R.id.txtItemTitle); txtItemCreatedBy = (IjoomerTextView) currentView.findViewById(R.id.txtItemCreatedBy); txtItemDescription = (IjoomerTextView) currentView.findViewById(R.id.txtItemDescription); txtItemRatingVote = (IjoomerTextView) currentView.findViewById(R.id.txtItemRatingVote); rtbItem = (IjoomerRatingBar) currentView.findViewById(R.id.rtbItem); imgItem = (ImageView) currentView.findViewById(R.id.imgItem); imgCancelRating = (ImageView) currentView.findViewById(R.id.imgCancelRating); imgSubmitRating = (ImageView) currentView.findViewById(R.id.imgSubmitRating); imgItemShare = (ImageView) currentView.findViewById(R.id.imgItemShare); pbrItemDetail = (ProgressBar) currentView.findViewById(R.id.pbrItemDetail); pbrImage = (ProgressBar) currentView.findViewById(R.id.pbrImage); androidQuery = new AQuery(getActivity()); provider = new k2MainDataProvider(getActivity()); getIntentData(); } private void getIntentData() { IN_MENUID = getActivity().getIntent().getStringExtra("IN_MENUID") == null ? "0" : getActivity().getIntent().getStringExtra("IN_MENUID"); } @Override public void prepareViews(View currentView) { rtbItem.setStarBgColor(getResources().getColor(R.color.k2_orange)); prepareItemDetail(); } @Override public void setActionListeners(View currentView) { imgItem.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { try { @SuppressWarnings("unused") JSONArray imageGallerries = new JSONArray(itemData.get(IMAGEGALLERIES)); ((SmartActivity) getActivity()).loadNew(K2GalleryActivity.class, getActivity(), false, "IN_PHOTOS_PATHS", itemData.get(IMAGEGALLERIES)); } catch (Throwable e) { } } }); rtbItem.setRatingHandler(new RatingHandler() { @Override public void onRatingChangedListener(float rating) { imgCancelRating.setVisibility(View.VISIBLE); imgSubmitRating.setVisibility(View.VISIBLE); txtItemRatingVote.setVisibility(View.GONE); } }); imgCancelRating.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { imgCancelRating.setVisibility(View.GONE); imgSubmitRating.setVisibility(View.GONE); txtItemRatingVote.setVisibility(View.VISIBLE); try { JSONObject rating = new JSONObject(itemData.get(RATINGS)); if (Integer.parseInt(rating.getString(RATINGCOUNT)) > 1) { rtbItem.setStarRating((Float.parseFloat(rating.getString(RATINGSUM)) / Float.parseFloat(rating.getString(RATINGCOUNT)))); txtItemRatingVote.setText(String.format(getActivity().getString(R.string.k2_rating_votes), Integer.parseInt(rating.getString(RATINGCOUNT)))); } else { rtbItem.setStarRating(Float.parseFloat(rating.getString(RATINGSUM))); txtItemRatingVote.setText(String.format(getActivity().getString(R.string.k2_rating_vote), Integer.parseInt(rating.getString(RATINGCOUNT)))); } } catch (Throwable e) { txtItemRatingVote.setText(String.format(getActivity().getString(R.string.k2_rating_vote), 0)); rtbItem.setStarRating(0); } } }); imgSubmitRating.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (rtbItem.getStarRating() > 0) { final SeekBar proSeekBar = IjoomerUtilities.getLoadingDialog(getString(R.string.dialog_loading_sending_request)); provider.rating(String.valueOf(rtbItem.getStarRating()), IN_MENUID, itemData.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) { try { if (responseCode == 200) { try { JSONObject rating = (JSONObject) data2; itemData.put(RATINGS, rating.toString()); if (Integer.parseInt(rating.getString(RATINGCOUNT)) > 1) { rtbItem.setStarRating((Float.parseFloat(rating.getString(RATINGSUM)) / Float.parseFloat(rating.getString(RATINGCOUNT)))); txtItemRatingVote.setText(String.format(getActivity().getString(R.string.k2_rating_votes), Integer.parseInt(rating.getString(RATINGCOUNT)))); } else { rtbItem.setStarRating(Float.parseFloat(rating.getString(RATINGSUM))); txtItemRatingVote.setText(String.format(getActivity().getString(R.string.k2_rating_vote), Integer.parseInt(rating.getString(RATINGCOUNT)))); } } catch (Throwable e) { txtItemRatingVote.setText(String.format(getActivity().getString(R.string.k2_rating_vote), 0)); rtbItem.setStarRating(0); } } else { IjoomerUtilities.getCustomOkDialog(getActivity().getString(R.string.dialog_k2_item_details), errorMessage, getActivity().getString(R.string.ok), R.layout.ijoomer_ok_dialog, new CustomAlertNeutral() { @Override public void NeutralMethod() { try { JSONObject rating = new JSONObject(itemData.get(RATINGS)); if (Integer.parseInt(rating.getString(RATINGCOUNT)) > 1) { rtbItem.setStarRating((Float.parseFloat(rating.getString(RATINGSUM)) / Float.parseFloat(rating.getString(RATINGCOUNT)))); txtItemRatingVote.setText(String.format(getActivity().getString(R.string.k2_rating_votes), Integer.parseInt(rating.getString(RATINGCOUNT)))); } else { rtbItem.setStarRating(Float.parseFloat(rating.getString(RATINGSUM))); rtbItem.setStarRating((Float.parseFloat(rating.getString(RATINGSUM)) / Float.parseFloat(rating.getString(RATINGCOUNT)))); } } catch (Throwable e) { txtItemRatingVote.setText(String.format(getActivity().getString(R.string.k2_rating_vote), 0)); rtbItem.setStarRating(0); } } }); } } catch (Throwable e) { } } }); } imgCancelRating.setVisibility(View.GONE); imgSubmitRating.setVisibility(View.GONE); txtItemRatingVote.setVisibility(View.VISIBLE); } }); imgItemShare.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { try { ((SmartActivity) getActivity()).loadNewResult(IjoomerShareActivity.class, getActivity(), 0, "IN_SHARE_CAPTION", itemData.get(TITLE), "IN_SHARE_DESCRIPTION", itemData.get(INTROTEXT), "IN_SHARE_THUMB", itemData.get(IMAGESMALL), "IN_SHARE_SHARELINK", itemData.get(SHARELINK)); } catch (Throwable e) { e.printStackTrace(); } } }); } /** * Class methods */ /** * This method used to prepare item details. */ private void prepareItemDetail() { pbrItemDetail.setVisibility(View.VISIBLE); pbrImage.setVisibility(View.VISIBLE); androidQuery.ajax(itemData.get(IMAGESLARGE), Bitmap.class, 0, new AjaxCallback<Bitmap>() { @Override public void callback(String url, Bitmap object, AjaxStatus status) { super.callback(url, object, status); if(status.getCode()==200){ imgItem.setImageBitmap(object); }else{ imgItem.setImageDrawable(getResources().getDrawable(R.drawable.k2_default)); } pbrImage.setVisibility(View.GONE); } }); txtItemTitle.setText(itemData.get(TITLE)); txtItemCreatedBy.setText(String.format(getActivity().getString(R.string.by), ": " + itemData.get(CREATEDBYNAME))); txtItemDescription.setText(Html.fromHtml(itemData.get(INTROTEXT))); try { JSONObject rating = new JSONObject(itemData.get(RATINGS)); if (Integer.parseInt(rating.getString(RATINGCOUNT)) > 1) { rtbItem.setStarRating((Float.parseFloat(rating.getString(RATINGSUM)) / Float.parseFloat(rating.getString(RATINGCOUNT)))); txtItemRatingVote.setText(String.format(getActivity().getString(R.string.k2_rating_votes), Integer.parseInt(rating.getString(RATINGCOUNT)))); } else { rtbItem.setStarRating(Float.parseFloat(rating.getString(RATINGSUM))); txtItemRatingVote.setText(String.format(getActivity().getString(R.string.k2_rating_vote), Integer.parseInt(rating.getString(RATINGCOUNT)))); } } catch (Throwable e) { txtItemRatingVote.setText(String.format(getActivity().getString(R.string.k2_rating_vote), 0)); rtbItem.setStarRating(0); } pbrItemDetail.setVisibility(View.GONE); } }