package com.ijoomer.components.jomsocial; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Intent; import android.graphics.Color; import android.location.Address; import android.provider.MediaStore; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.Spinner; import com.ijoomer.common.classes.IjoomerMapAddress; import com.ijoomer.common.classes.IjoomerSuperMaster; import com.ijoomer.common.classes.IjoomerUtilities; import com.ijoomer.common.configuration.IjoomerApplicationConfiguration; import com.ijoomer.common.configuration.IjoomerGlobalConfiguration; import com.ijoomer.custom.interfaces.SelectImageDialogListner; import com.ijoomer.customviews.IjoomerButton; import com.ijoomer.customviews.IjoomerEditText; import com.ijoomer.customviews.IjoomerTextView; import com.ijoomer.library.jomsocial.JomGalleryDataProvider; 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 java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; /** * This Fragment Contains All Method Related To JomVideoAddFragment. * * @author tasol * */ @SuppressLint("ValidFragment") public class JomVideoAddFragment extends SmartFragment implements JomTagHolder { private LinearLayout lnrUploadVideo; private LinearLayout lnrLinkVideo; private IjoomerTextView txtUploadVideo; private IjoomerTextView txtLinkVideo; private IjoomerTextView txtVideoWhoCanSee; @SuppressWarnings("unused") private IjoomerTextView txtVideoCategory; private IjoomerEditText edtVideoFile; private IjoomerEditText edtVideoLink; private IjoomerEditText edtVideoTitle; private IjoomerEditText edtVideoDescription; private IjoomerEditText edtVideoCaption; private IjoomerEditText edtVideoLocation; private IjoomerButton btnBrowse; private IjoomerButton btnUpload; private IjoomerButton btnCancle; private ImageView imgMap; private Spinner spnWhoCanSee; private Spinner spnVideoCategory; private ArrayList<HashMap<String, String>> categoryList; private ArrayList<String> categories; private JomGalleryDataProvider providerVideo; private String IN_GROUP_ID; private String IN_PROFILE; private String videoPath; private String videoPathForTrimming; private int PICK_VIDEO=2; private int TAKE_VIDEO=3; final private int GET_ADDRESS_FROM_MAP = 1; public JomVideoAddFragment() { } /** * Overrides methods */ @Override public int setLayoutId() { return R.layout.jom_video_add_fragment; } @Override public View setLayoutView() { return null; } @Override public void initComponents(View currentView) { lnrUploadVideo = (LinearLayout) currentView.findViewById(R.id.lnrUploadVideo); lnrLinkVideo = (LinearLayout) currentView.findViewById(R.id.lnrLinkVideo); txtUploadVideo = (IjoomerTextView) currentView.findViewById(R.id.txtUploadVideo); txtLinkVideo = (IjoomerTextView) currentView.findViewById(R.id.txtLinkVideo); txtVideoWhoCanSee = (IjoomerTextView) currentView.findViewById(R.id.txtVideoWhoCanSee); txtVideoCategory = (IjoomerTextView) currentView.findViewById(R.id.txtVideoCategory); edtVideoFile = (IjoomerEditText) currentView.findViewById(R.id.edtVideoFile); edtVideoLink = (IjoomerEditText) currentView.findViewById(R.id.edtVideoLink); edtVideoTitle = (IjoomerEditText) currentView.findViewById(R.id.edtVideoTitle); edtVideoDescription = (IjoomerEditText) currentView.findViewById(R.id.edtVideoDescription); edtVideoCaption = (IjoomerEditText) currentView.findViewById(R.id.edtVideoCaption); edtVideoLocation = (IjoomerEditText) currentView.findViewById(R.id.edtVideoLocation); btnCancle = (IjoomerButton) currentView.findViewById(R.id.btnCancle); btnUpload = (IjoomerButton) currentView.findViewById(R.id.btnUpload); btnBrowse = (IjoomerButton) currentView.findViewById(R.id.btnBrowse); imgMap = (ImageView) currentView.findViewById(R.id.imgMap); spnWhoCanSee = (Spinner) currentView.findViewById(R.id.spnWhoCanSee); spnVideoCategory = (Spinner) currentView.findViewById(R.id.spnVideoCategory); providerVideo = new JomGalleryDataProvider(getActivity()); categories = new ArrayList<String>(); categoryList = new ArrayList<HashMap<String, String>>(); getIntentData(); } @Override public void prepareViews(View currentView) { edtVideoCaption.setText(""); edtVideoDescription.setText(""); edtVideoFile.setText(""); edtVideoLink.setText(""); edtVideoTitle.setText(""); edtVideoFile.setHint(String.format(getString(R.string.videos_select_file), IjoomerGlobalConfiguration.getVideoUploadSize())); spnWhoCanSee.setAdapter(new IjoomerUtilities.MyCustomAdapter(getActivity(), new ArrayList<String>(Arrays.asList(getResources().getStringArray(R.array.wall_post_type))))); if (!IjoomerGlobalConfiguration.isVideoUpload()) { txtLinkVideo.setTextColor(Color.parseColor(getString(R.color.blue))); lnrLinkVideo.setVisibility(View.VISIBLE); txtUploadVideo.setVisibility(View.GONE); if (!IN_GROUP_ID.equals("0")) { txtVideoWhoCanSee.setVisibility(View.GONE); spnWhoCanSee.setVisibility(View.GONE); } lnrUploadVideo.setVisibility(View.GONE); edtVideoTitle.setVisibility(View.GONE); edtVideoDescription.setVisibility(View.GONE); } if (IN_PROFILE.equals("1")) { edtVideoCaption.setVisibility(View.VISIBLE); } providerVideo.getVideoCategoryList(new WebCallListener() { @Override public void onProgressUpdate(int progressCount) { } @Override public void onCallComplete(int responseCode, String errorMessage, ArrayList<HashMap<String, String>> data1, Object data2) { try { if (responseCode == 200) { ((JomMasterActivity) getActivity()).updateHeader(providerVideo.getNotificationData()); categoryList.addAll(data1); for (HashMap<String, String> hashMap : data1) { categories.add(hashMap.get(NAME)); } spnVideoCategory.setAdapter(new IjoomerUtilities.MyCustomAdapter(getActivity(), categories)); } else if (responseCode != 204) { responseErrorMessageHandler(responseCode, false); } } catch (Throwable e) { } } }); new Thread(new Runnable() { @Override public void run() { try { final String address = IjoomerUtilities.getAddressFromLatLong(0, 0).getSubAdminArea(); getActivity().runOnUiThread(new Runnable() { @Override public void run() { edtVideoLocation.setText(address); } }); } catch (Throwable e) { } } }).start(); } @Override public void setActionListeners(View currentView) { imgMap.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Intent intent = new Intent(getActivity(), IjoomerMapAddress.class); startActivityForResult(intent, GET_ADDRESS_FROM_MAP); } }); btnUpload.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { ((IjoomerSuperMaster) getActivity()).hideSoftKeyboard(); if (lnrUploadVideo.getVisibility() == View.VISIBLE) { boolean validationFlag = true; if (edtVideoFile.getText().toString().trim().length() <= 0) { validationFlag = false; edtVideoFile.setError(getString(R.string.validation_value_required)); } if (edtVideoTitle.getText().toString().trim().length() <= 0) { edtVideoTitle.setError(getString(R.string.validation_value_required)); validationFlag = false; } if (validationFlag) { if ((new File(videoPath).length() / (1024 * 1024)) > IjoomerGlobalConfiguration.getVideoUploadSize()) { IjoomerUtilities.getCustomOkCancelDialog(getString(R.string.video), getString(R.string.video_select_size_limit_exceeded), getString(R.string.yes), getString(R.string.no), R.layout.ijoomer_ok_cancel_dialog, new CustomAlertNeutral() { @Override public void NeutralMethod() { videoPathForTrimming = edtVideoFile.getText().toString(); edtVideoFile.setText(null); Address address = IjoomerUtilities.getLatLongFromAddress(edtVideoLocation.getText().toString().trim()); String IN_VIDEO_FILE = edtVideoFile.getText().toString().trim(); String IN_VIDEO_TITLE = edtVideoTitle.getText().toString().trim(); String IN_VIDEO_DESCRIPTION = edtVideoDescription.getText().toString().trim(); String IN_VIDEO_CAPTION = edtVideoCaption.getText().toString(); String IN_LOCATION = edtVideoLocation.getText().toString(); double IN_LATITUDE = address != null ? address.getLatitude() : 0; double IN_LONGITUDE = address != null ? address.getLongitude() : 0; String IN_CAT_ID = getCategoryId(spnVideoCategory.getSelectedItemPosition()); String IN_PRIVACY = (!IN_GROUP_ID.equals("0") ? null : ((JomMasterActivity) getActivity()).getPrivacyCode( spnWhoCanSee.getSelectedItem().toString().trim()).toString()); edtVideoDescription.setText(null); edtVideoTitle.setText(null); try { ((SmartActivity) getActivity()).loadNew(JomVideoTrimmerActivity.class, getActivity(), false, "IN_VIDEO_PATH_FOR_TRIMMING", videoPathForTrimming, "IN_GROUP_ID", IN_GROUP_ID, "IN_CAT_ID", IN_CAT_ID, "IN_VIDEO_FILE", IN_VIDEO_FILE, "IN_VIDEO_TITLE", IN_VIDEO_TITLE, "IN_VIDEO_CAPTION", IN_VIDEO_CAPTION,"IN_VIDEO_DESCRIPTION",IN_VIDEO_DESCRIPTION,"IN_LATITUDE", IN_LATITUDE, "IN_LONGITUDE", IN_LONGITUDE, "IN_PRIVACY", IN_PRIVACY,"IN_LOCATION",IN_LOCATION); } catch (Throwable e) { e.printStackTrace(); } } }); } else { Address address = IjoomerUtilities.getLatLongFromAddress(edtVideoLocation.getText().toString().trim()); startVideoUpload(IN_GROUP_ID, edtVideoFile.getText().toString().trim(), edtVideoTitle.getText().toString().trim(), edtVideoDescription.getText() .toString().trim(), edtVideoCaption.getText().toString(), address != null ? address.getLatitude() : 0, address != null ? address.getLongitude() : 0, getCategoryId(spnVideoCategory.getSelectedItemPosition()), !IN_GROUP_ID.equals("0") ? null : ((JomMasterActivity) getActivity()) .getPrivacyCode(spnWhoCanSee.getSelectedItem().toString().trim()).toString()); } } } else { if (edtVideoLink.getText().toString().trim().length() <= 0) { edtVideoLink.setError(getString(R.string.validation_value_required)); } else { Address address = IjoomerUtilities.getLatLongFromAddress(edtVideoLocation.getText().toString().trim()); startVideoLinking(IN_GROUP_ID, edtVideoLink.getText().toString().trim(), edtVideoCaption.getText().toString().trim(), address != null ? address.getLatitude() : 0, address != null ? address.getLongitude() : 0, getCategoryId(spnVideoCategory.getSelectedItemPosition()), !IN_GROUP_ID.equals("0") ? null : ((JomMasterActivity) getActivity()).getPrivacyCode(spnWhoCanSee.getSelectedItem().toString().trim()).toString()); } } } }); btnCancle.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (!IN_PROFILE.equals("0")) { getActivity().finish(); } else { IjoomerApplicationConfiguration.setReloadRequired(true); ((JomVideoActivity) getActivity()).onResume(); } } }); txtUploadVideo.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { txtLinkVideo.setTextColor(Color.parseColor(getString(R.color.txt_color))); txtUploadVideo.setTextColor(Color.parseColor(getString(R.color.blue))); lnrLinkVideo.setVisibility(View.GONE); lnrUploadVideo.setVisibility(View.VISIBLE); if (!IN_GROUP_ID.equals("0")) { txtVideoWhoCanSee.setVisibility(View.GONE); spnWhoCanSee.setVisibility(View.GONE); } edtVideoTitle.setVisibility(View.VISIBLE); edtVideoDescription.setVisibility(View.VISIBLE); } }); txtLinkVideo.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { txtLinkVideo.setTextColor(Color.parseColor(getString(R.color.blue))); txtUploadVideo.setTextColor(Color.parseColor(getString(R.color.txt_color))); lnrLinkVideo.setVisibility(View.VISIBLE); if (!IN_GROUP_ID.equals("0")) { txtVideoWhoCanSee.setVisibility(View.GONE); spnWhoCanSee.setVisibility(View.GONE); } lnrUploadVideo.setVisibility(View.GONE); edtVideoTitle.setVisibility(View.GONE); edtVideoDescription.setVisibility(View.GONE); } }); btnBrowse.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { IjoomerUtilities.selectImageDialog(new SelectImageDialogListner() { @Override public void onPhoneGallery() { try { Intent intent = new Intent(); intent.setType("video/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(Intent.createChooser(intent, "Select Video"), PICK_VIDEO); } catch (Exception e) { } } @Override public void onCapture() { try { Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); startActivityForResult(takeVideoIntent, TAKE_VIDEO); } catch (Exception e) { } } }); } }); } @SuppressWarnings("unchecked") @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == Activity.RESULT_OK) { if (requestCode == PICK_VIDEO) { videoPath = ((IjoomerSuperMaster) getActivity()).getAbsolutePath(data.getData()); edtVideoFile.setText(videoPath); } else if (requestCode == TAKE_VIDEO) { videoPath = ((IjoomerSuperMaster) getActivity()).getAbsolutePath(data.getData()); edtVideoFile.setText(videoPath); if ((new File(videoPath).length() / (1024 * 1024)) > IjoomerGlobalConfiguration.getVideoUploadSize()) { IjoomerUtilities.getCustomOkDialog(getString(R.string.video), getString(R.string.video_select_size_limit_exceeded), getString(R.string.ok), R.layout.ijoomer_ok_dialog, new CustomAlertNeutral() { @Override public void NeutralMethod() { edtVideoFile.setText(null); } }); } } if (requestCode == GET_ADDRESS_FROM_MAP) { edtVideoLocation.setText(((HashMap<String, String>) data.getSerializableExtra("MAP_ADDRESSS_DATA")).get("address")); } else { super.onActivityResult(requestCode, resultCode, data); } } } /** * Class methods */ /** * This method used to get category id from category index. * @param categoryIndex represented category index * @return represented {@link String} */ private String getCategoryId(int categoryIndex) { return categoryList.get(categoryIndex).get(ID); } /** * This method used to get intent data. */ private void getIntentData() { IN_GROUP_ID = getActivity().getIntent().getStringExtra("IN_GROUP_ID") == null ? "0" : getActivity().getIntent().getStringExtra("IN_GROUP_ID"); IN_PROFILE = getActivity().getIntent().getStringExtra("IN_PROFILE") == null ? "0" : getActivity().getIntent().getStringExtra("IN_PROFILE"); } /** * This method used to start upload video. * @param groupID represented group id * @param videoFilePath represented video file path * @param videoTitle represented video title * @param description represented video description * @param videoCaption represented video caption * @param lat represented latitude * @param lng represented longitude * @param categoryID represented category id * @param privacy represented privacy */ private void startVideoUpload(final String groupID, final String videoFilePath, final String videoTitle, final String description, final String videoCaption, final double lat, final double lng, final String categoryID, final String privacy) { IjoomerUtilities.addToNotificationBar(IjoomerUtilities.mSmartAndroidActivity.getString(R.string.video_upload_starts), IjoomerUtilities.mSmartAndroidActivity.getString(R.string.uplod_video), IjoomerUtilities.mSmartAndroidActivity.getString(R.string.video_upload_starts)); providerVideo.uploadVideo(groupID, videoFilePath, videoTitle, description, videoCaption, lat, lng, categoryID, privacy, new WebCallListener() { @Override public void onProgressUpdate(int progressCount) { } @Override public void onCallComplete(int responseCode, String errorMessage, ArrayList<HashMap<String, String>> data1, Object data2) { try { if (responseCode == 200) { clearVideoField(); IjoomerUtilities.addToNotificationBar(IjoomerUtilities.mSmartAndroidActivity.getString(R.string.video_upload_successfully), IjoomerUtilities.mSmartAndroidActivity.getString(R.string.uplod_video), IjoomerUtilities.mSmartAndroidActivity.getString(R.string.video_upload_successfully)); if(IjoomerUtilities.mSmartAndroidActivity instanceof JomVideoActivity){ IjoomerApplicationConfiguration.setReloadRequired(true); ((JomVideoActivity)IjoomerUtilities.mSmartAndroidActivity).onResume(); } if(IjoomerUtilities.mSmartAndroidActivity instanceof JomProfileActivity){ IjoomerApplicationConfiguration.setReloadRequired(true); ((JomProfileActivity)IjoomerUtilities.mSmartAndroidActivity).onResume(); } } else { if (errorMessage != null && errorMessage.length() > 0) { IjoomerUtilities.addToNotificationBar(IjoomerUtilities.mSmartAndroidActivity.getString(R.string.video_upload_failure), IjoomerUtilities.mSmartAndroidActivity.getString(R.string.uplod_video), errorMessage); } else { IjoomerUtilities.addToNotificationBar( IjoomerUtilities.mSmartAndroidActivity.getString(R.string.video_upload_failure), IjoomerUtilities.mSmartAndroidActivity.getString(R.string.uplod_video), IjoomerUtilities.mSmartAndroidActivity.getString(IjoomerUtilities.mSmartAndroidActivity.getResources().getIdentifier("code" + responseCode, "string", IjoomerUtilities.mSmartAndroidActivity.getPackageName()))); } } } catch (Throwable e) { } } }); if (!IN_PROFILE.equals("0")) { getActivity().finish(); } else { JomVideoActivity.ADDVIDEOFLAG = true; IjoomerApplicationConfiguration.setReloadRequired(true); ((JomVideoActivity) getActivity()).onResume(); } } /** * This method used to upload video link. * @param groupID represented group id * @param videoUrl represented video link url * @param videoCaption represented video caption * @param lat represented latitude * @param lng represented longitude * @param categoryID represented category id * @param privacy represented privacy */ private void startVideoLinking(final String groupID, final String videoUrl, final String videoCaption, final double lat, final double lng, final String categoryID, final String privacy) { IjoomerUtilities.addToNotificationBar(IjoomerUtilities.mSmartAndroidActivity.getString(R.string.video_link_starts), IjoomerUtilities.mSmartAndroidActivity.getString(R.string.link_video), IjoomerUtilities.mSmartAndroidActivity.getString(R.string.video_link_starts)); providerVideo.linkVideo(groupID, videoUrl, videoCaption, lat, lng, categoryID, privacy, new WebCallListener() { @Override public void onProgressUpdate(int progressCount) { } @Override public void onCallComplete(int responseCode, String errorMessage, ArrayList<HashMap<String, String>> data1, Object data2) { try { if (responseCode == 200) { clearVideoField(); IjoomerUtilities.addToNotificationBar(IjoomerUtilities.mSmartAndroidActivity.getString(R.string.video_linked_successfully), IjoomerUtilities.mSmartAndroidActivity.getString(R.string.link_video), IjoomerUtilities.mSmartAndroidActivity.getString(R.string.video_linked_successfully)); if(IjoomerUtilities.mSmartAndroidActivity instanceof JomVideoActivity){ IjoomerApplicationConfiguration.setReloadRequired(true); ((JomVideoActivity)IjoomerUtilities.mSmartAndroidActivity).onResume(); } if(IjoomerUtilities.mSmartAndroidActivity instanceof JomProfileActivity){ IjoomerApplicationConfiguration.setReloadRequired(true); ((JomProfileActivity)IjoomerUtilities.mSmartAndroidActivity).onResume(); } } else { if (errorMessage != null && errorMessage.length() > 0) { IjoomerUtilities.addToNotificationBar(IjoomerUtilities.mSmartAndroidActivity.getString(R.string.video_link_failure), IjoomerUtilities.mSmartAndroidActivity.getString(R.string.link_video), errorMessage); } else { IjoomerUtilities.addToNotificationBar( IjoomerUtilities.mSmartAndroidActivity.getString(R.string.video_link_failure), IjoomerUtilities.mSmartAndroidActivity.getString(R.string.link_video), IjoomerUtilities.mSmartAndroidActivity.getString(IjoomerUtilities.mSmartAndroidActivity.getResources().getIdentifier("code" + responseCode, "string", IjoomerUtilities.mSmartAndroidActivity.getPackageName()))); } } } catch (Throwable e) { } } }); if (!IN_PROFILE.equals("0")) { getActivity().finish(); } else { JomVideoActivity.ADDVIDEOFLAG = true; IjoomerApplicationConfiguration.setReloadRequired(true); ((JomVideoActivity) getActivity()).onResume(); } } /** * 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.video), getString(getResources().getIdentifier("code" + responseCode, "string", getActivity().getPackageName())), getString(R.string.ok), R.layout.ijoomer_ok_dialog, new CustomAlertNeutral() { @Override public void NeutralMethod() { } }); } private void clearVideoField(){ edtVideoCaption.setText(""); edtVideoDescription.setText(""); edtVideoFile.setText(""); edtVideoLink.setText(""); edtVideoLocation.setText(""); edtVideoTitle.setText(""); } }