| package org.wordpress.android.editor.example; |
| |
| import android.app.Fragment; |
| import android.content.Intent; |
| import android.net.Uri; |
| import android.os.Bundle; |
| import android.support.v7.app.AppCompatActivity; |
| import android.view.ContextMenu; |
| import android.view.DragEvent; |
| import android.view.MenuItem; |
| import android.view.View; |
| |
| import org.wordpress.android.editor.EditorFragmentAbstract; |
| import org.wordpress.android.editor.EditorFragmentAbstract.EditorDragAndDropListener; |
| import org.wordpress.android.editor.EditorFragmentAbstract.EditorFragmentListener; |
| import org.wordpress.android.editor.EditorFragmentAbstract.TrackableEvent; |
| import org.wordpress.android.editor.EditorMediaUploadListener; |
| import org.wordpress.android.editor.ImageSettingsDialogFragment; |
| import org.wordpress.android.util.AppLog; |
| import org.wordpress.android.util.AppLog.T; |
| import org.wordpress.android.util.ToastUtils; |
| import org.wordpress.android.util.helpers.MediaFile; |
| |
| import java.util.ArrayList; |
| import java.util.HashMap; |
| import java.util.Map; |
| |
| public class EditorExampleActivity extends AppCompatActivity implements EditorFragmentListener, |
| EditorDragAndDropListener { |
| public static final String EDITOR_PARAM = "EDITOR_PARAM"; |
| public static final String TITLE_PARAM = "TITLE_PARAM"; |
| public static final String CONTENT_PARAM = "CONTENT_PARAM"; |
| public static final String DRAFT_PARAM = "DRAFT_PARAM"; |
| public static final String TITLE_PLACEHOLDER_PARAM = "TITLE_PLACEHOLDER_PARAM"; |
| public static final String CONTENT_PLACEHOLDER_PARAM = "CONTENT_PLACEHOLDER_PARAM"; |
| public static final int USE_NEW_EDITOR = 1; |
| public static final int USE_LEGACY_EDITOR = 2; |
| |
| public static final int ADD_MEDIA_ACTIVITY_REQUEST_CODE = 1111; |
| public static final int ADD_MEDIA_FAIL_ACTIVITY_REQUEST_CODE = 1112; |
| public static final int ADD_MEDIA_SLOW_NETWORK_REQUEST_CODE = 1113; |
| |
| public static final String MEDIA_REMOTE_ID_SAMPLE = "123"; |
| |
| private static final int SELECT_IMAGE_MENU_POSITION = 0; |
| private static final int SELECT_IMAGE_FAIL_MENU_POSITION = 1; |
| private static final int SELECT_VIDEO_MENU_POSITION = 2; |
| private static final int SELECT_VIDEO_FAIL_MENU_POSITION = 3; |
| private static final int SELECT_IMAGE_SLOW_MENU_POSITION = 4; |
| |
| private EditorFragmentAbstract mEditorFragment; |
| |
| private Map<String, String> mFailedUploads; |
| |
| @Override |
| protected void onCreate(Bundle savedInstanceState) { |
| super.onCreate(savedInstanceState); |
| if (getIntent().getIntExtra(EDITOR_PARAM, USE_NEW_EDITOR) == USE_NEW_EDITOR) { |
| ToastUtils.showToast(this, R.string.starting_new_editor); |
| setContentView(R.layout.activity_new_editor); |
| } else { |
| ToastUtils.showToast(this, R.string.starting_legacy_editor); |
| setContentView(R.layout.activity_legacy_editor); |
| } |
| |
| mFailedUploads = new HashMap<>(); |
| } |
| |
| @Override |
| public void onAttachFragment(Fragment fragment) { |
| super.onAttachFragment(fragment); |
| if (fragment instanceof EditorFragmentAbstract) { |
| mEditorFragment = (EditorFragmentAbstract) fragment; |
| } |
| } |
| |
| @Override |
| public void onBackPressed() { |
| Fragment fragment = getFragmentManager() |
| .findFragmentByTag(ImageSettingsDialogFragment.IMAGE_SETTINGS_DIALOG_TAG); |
| if (fragment != null && fragment.isVisible()) { |
| ((ImageSettingsDialogFragment) fragment).dismissFragment(); |
| } else { |
| super.onBackPressed(); |
| } |
| } |
| |
| @Override |
| public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { |
| menu.add(0, SELECT_IMAGE_MENU_POSITION, 0, getString(R.string.select_image)); |
| menu.add(0, SELECT_IMAGE_FAIL_MENU_POSITION, 0, getString(R.string.select_image_fail)); |
| menu.add(0, SELECT_VIDEO_MENU_POSITION, 0, getString(R.string.select_video)); |
| menu.add(0, SELECT_VIDEO_FAIL_MENU_POSITION, 0, getString(R.string.select_video_fail)); |
| menu.add(0, SELECT_IMAGE_SLOW_MENU_POSITION, 0, getString(R.string.select_image_slow_network)); |
| } |
| |
| @Override |
| public boolean onContextItemSelected(MenuItem item) { |
| Intent intent = new Intent(Intent.ACTION_PICK); |
| |
| switch (item.getItemId()) { |
| case SELECT_IMAGE_MENU_POSITION: |
| intent.setType("image/*"); |
| intent.setAction(Intent.ACTION_GET_CONTENT); |
| intent = Intent.createChooser(intent, getString(R.string.select_image)); |
| |
| startActivityForResult(intent, ADD_MEDIA_ACTIVITY_REQUEST_CODE); |
| return true; |
| case SELECT_IMAGE_FAIL_MENU_POSITION: |
| intent.setType("image/*"); |
| intent.setAction(Intent.ACTION_GET_CONTENT); |
| intent = Intent.createChooser(intent, getString(R.string.select_image_fail)); |
| |
| startActivityForResult(intent, ADD_MEDIA_FAIL_ACTIVITY_REQUEST_CODE); |
| return true; |
| case SELECT_VIDEO_MENU_POSITION: |
| intent.setType("video/*"); |
| intent.setAction(Intent.ACTION_GET_CONTENT); |
| intent = Intent.createChooser(intent, getString(R.string.select_video)); |
| |
| startActivityForResult(intent, ADD_MEDIA_ACTIVITY_REQUEST_CODE); |
| return true; |
| case SELECT_VIDEO_FAIL_MENU_POSITION: |
| intent.setType("video/*"); |
| intent.setAction(Intent.ACTION_GET_CONTENT); |
| intent = Intent.createChooser(intent, getString(R.string.select_video_fail)); |
| |
| startActivityForResult(intent, ADD_MEDIA_FAIL_ACTIVITY_REQUEST_CODE); |
| return true; |
| case SELECT_IMAGE_SLOW_MENU_POSITION: |
| intent.setType("image/*"); |
| intent.setAction(Intent.ACTION_GET_CONTENT); |
| intent = Intent.createChooser(intent, getString(R.string.select_image_slow_network)); |
| |
| startActivityForResult(intent, ADD_MEDIA_SLOW_NETWORK_REQUEST_CODE); |
| return true; |
| default: |
| return false; |
| } |
| } |
| |
| @Override |
| public void onActivityResult(int requestCode, int resultCode, Intent data) { |
| super.onActivityResult(requestCode, resultCode, data); |
| |
| if (data == null) { |
| return; |
| } |
| |
| Uri mediaUri = data.getData(); |
| |
| MediaFile mediaFile = new MediaFile(); |
| String mediaId = String.valueOf(System.currentTimeMillis()); |
| mediaFile.setMediaId(mediaId); |
| mediaFile.setVideo(mediaUri.toString().contains("video")); |
| |
| switch (requestCode) { |
| case ADD_MEDIA_ACTIVITY_REQUEST_CODE: |
| mEditorFragment.appendMediaFile(mediaFile, mediaUri.toString(), null); |
| |
| if (mEditorFragment instanceof EditorMediaUploadListener) { |
| simulateFileUpload(mediaId, mediaUri.toString()); |
| } |
| break; |
| case ADD_MEDIA_FAIL_ACTIVITY_REQUEST_CODE: |
| mEditorFragment.appendMediaFile(mediaFile, mediaUri.toString(), null); |
| |
| if (mEditorFragment instanceof EditorMediaUploadListener) { |
| simulateFileUploadFail(mediaId, mediaUri.toString()); |
| } |
| break; |
| case ADD_MEDIA_SLOW_NETWORK_REQUEST_CODE: |
| mEditorFragment.appendMediaFile(mediaFile, mediaUri.toString(), null); |
| |
| if (mEditorFragment instanceof EditorMediaUploadListener) { |
| simulateSlowFileUpload(mediaId, mediaUri.toString()); |
| } |
| break; |
| } |
| } |
| |
| @Override |
| public void onSettingsClicked() { |
| // TODO |
| } |
| |
| @Override |
| public void onAddMediaClicked() { |
| // TODO |
| } |
| |
| @Override |
| public void onMediaRetryClicked(String mediaId) { |
| if (mFailedUploads.containsKey(mediaId)) { |
| simulateFileUpload(mediaId, mFailedUploads.get(mediaId)); |
| } |
| } |
| |
| @Override |
| public void onMediaUploadCancelClicked(String mediaId, boolean delete) { |
| |
| } |
| |
| @Override |
| public void onFeaturedImageChanged(long mediaId) { |
| |
| } |
| |
| @Override |
| public void onVideoPressInfoRequested(String videoId) { |
| |
| } |
| |
| @Override |
| public String onAuthHeaderRequested(String url) { |
| return ""; |
| } |
| |
| @Override |
| public void onEditorFragmentInitialized() { |
| // arbitrary setup |
| mEditorFragment.setFeaturedImageSupported(true); |
| mEditorFragment.setBlogSettingMaxImageWidth("600"); |
| mEditorFragment.setDebugModeEnabled(true); |
| |
| // get title and content and draft switch |
| String title = getIntent().getStringExtra(TITLE_PARAM); |
| String content = getIntent().getStringExtra(CONTENT_PARAM); |
| boolean isLocalDraft = getIntent().getBooleanExtra(DRAFT_PARAM, true); |
| mEditorFragment.setTitle(title); |
| mEditorFragment.setContent(content); |
| mEditorFragment.setTitlePlaceholder(getIntent().getStringExtra(TITLE_PLACEHOLDER_PARAM)); |
| mEditorFragment.setContentPlaceholder(getIntent().getStringExtra(CONTENT_PLACEHOLDER_PARAM)); |
| mEditorFragment.setLocalDraft(isLocalDraft); |
| } |
| |
| @Override |
| public void saveMediaFile(MediaFile mediaFile) { |
| // TODO |
| } |
| |
| @Override |
| public void onTrackableEvent(TrackableEvent event) { |
| AppLog.d(T.EDITOR, "Trackable event: " + event); |
| } |
| |
| private void simulateFileUpload(final String mediaId, final String mediaUrl) { |
| Thread thread = new Thread() { |
| @Override |
| public void run() { |
| try { |
| float count = (float) 0.1; |
| while (count < 1.1) { |
| sleep(500); |
| |
| ((EditorMediaUploadListener) mEditorFragment).onMediaUploadProgress(mediaId, count); |
| |
| count += 0.1; |
| } |
| |
| MediaFile mediaFile = new MediaFile(); |
| mediaFile.setMediaId(MEDIA_REMOTE_ID_SAMPLE); |
| mediaFile.setFileURL(mediaUrl); |
| |
| ((EditorMediaUploadListener) mEditorFragment).onMediaUploadSucceeded(mediaId, mediaFile); |
| |
| if (mFailedUploads.containsKey(mediaId)) { |
| mFailedUploads.remove(mediaId); |
| } |
| } catch (InterruptedException e) { |
| e.printStackTrace(); |
| } |
| } |
| }; |
| |
| thread.start(); |
| } |
| |
| private void simulateFileUploadFail(final String mediaId, final String mediaUrl) { |
| Thread thread = new Thread() { |
| @Override |
| public void run() { |
| try { |
| float count = (float) 0.1; |
| while (count < 0.6) { |
| sleep(500); |
| |
| ((EditorMediaUploadListener) mEditorFragment).onMediaUploadProgress(mediaId, count); |
| |
| count += 0.1; |
| } |
| |
| ((EditorMediaUploadListener) mEditorFragment).onMediaUploadFailed(mediaId, |
| getString(R.string.tap_to_try_again)); |
| |
| mFailedUploads.put(mediaId, mediaUrl); |
| } catch (InterruptedException e) { |
| e.printStackTrace(); |
| } |
| } |
| }; |
| |
| thread.start(); |
| } |
| |
| private void simulateSlowFileUpload(final String mediaId, final String mediaUrl) { |
| Thread thread = new Thread() { |
| @Override |
| public void run() { |
| try { |
| sleep(5000); |
| float count = (float) 0.1; |
| while (count < 1.1) { |
| sleep(2000); |
| |
| ((EditorMediaUploadListener) mEditorFragment).onMediaUploadProgress(mediaId, count); |
| |
| count += 0.1; |
| } |
| |
| MediaFile mediaFile = new MediaFile(); |
| mediaFile.setMediaId(MEDIA_REMOTE_ID_SAMPLE); |
| mediaFile.setFileURL(mediaUrl); |
| |
| ((EditorMediaUploadListener) mEditorFragment).onMediaUploadSucceeded(mediaId, mediaFile); |
| |
| if (mFailedUploads.containsKey(mediaId)) { |
| mFailedUploads.remove(mediaId); |
| } |
| } catch (InterruptedException e) { |
| e.printStackTrace(); |
| } |
| } |
| }; |
| |
| thread.start(); |
| } |
| |
| @Override |
| public void onMediaDropped(ArrayList<Uri> mediaUri) { |
| // TODO |
| } |
| |
| @Override |
| public void onRequestDragAndDropPermissions(DragEvent dragEvent) { |
| // TODO |
| } |
| } |