Skip to content

Commit

Permalink
Added popup menus to choose between video/photo
Browse files Browse the repository at this point in the history
  • Loading branch information
nbradbury committed Apr 15, 2017
1 parent a0f7ac3 commit 8f2633e
Show file tree
Hide file tree
Showing 4 changed files with 111 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import org.wordpress.android.ui.media.WordPressMediaUtils;
import org.wordpress.android.ui.photopicker.PhotoPickerFragment.PhotoPickerOption;
import org.wordpress.android.util.AppLog;
import org.wordpress.android.util.MediaUtils;
import org.wordpress.passcodelock.AppLockManager;

import java.io.File;
Expand Down Expand Up @@ -133,19 +134,29 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
case RequestCodes.PICTURE_LIBRARY:
if (data != null) {
Uri imageUri = data.getData();
pictureSelected(imageUri, PhotoPickerMediaSource.ANDROID_PICKER);
mediaSelected(imageUri, PhotoPickerMediaSource.ANDROID_PICKER);
}
break;
// user took a photo with the device camera
case RequestCodes.TAKE_PHOTO:
try {
File f = new File(mMediaCapturePath);
Uri capturedImageUri = Uri.fromFile(f);
pictureSelected(capturedImageUri, PhotoPickerMediaSource.ANDROID_CAMERA);
mediaSelected(capturedImageUri, PhotoPickerMediaSource.ANDROID_CAMERA);
} catch (RuntimeException e) {
AppLog.e(AppLog.T.MEDIA, e);
}
break;
case RequestCodes.VIDEO_LIBRARY:
if (data != null) {
Uri videoUri = data.getData();
mediaSelected(videoUri, PhotoPickerMediaSource.ANDROID_PICKER);
}
break;
case RequestCodes.TAKE_VIDEO:
Uri capturedVideoUri = MediaUtils.getLastRecordedVideoUri(this);
mediaSelected(capturedVideoUri, PhotoPickerMediaSource.ANDROID_PICKER);
break;
}
}

Expand All @@ -165,7 +176,17 @@ private void launchPictureLibrary() {
AppLockManager.getInstance().setExtendedTimeout();
}

private void pictureSelected(@NonNull Uri mediaUri, @NonNull PhotoPickerMediaSource source) {
private void launchVideoLibrary() {
WordPressMediaUtils.launchVideoLibrary(this);
AppLockManager.getInstance().setExtendedTimeout();
}

private void launchVideoCamera() {
WordPressMediaUtils.launchVideoCamera(this);
AppLockManager.getInstance().setExtendedTimeout();
}

private void mediaSelected(@NonNull Uri mediaUri, @NonNull PhotoPickerMediaSource source) {
Intent intent = new Intent()
.putExtra(EXTRA_MEDIA_URI, mediaUri.toString())
.putExtra(EXTRA_MEDIA_SOURCE, source.name());
Expand All @@ -176,21 +197,25 @@ private void pictureSelected(@NonNull Uri mediaUri, @NonNull PhotoPickerMediaSou
@Override
public void onPhotoPickerMediaChosen(@NonNull List<Uri> uriList) {
if (uriList.size() > 0) {
pictureSelected(uriList.get(0), PhotoPickerMediaSource.APP_PICKER);
mediaSelected(uriList.get(0), PhotoPickerMediaSource.APP_PICKER);
}
}

@Override
public void onPhotoPickerIconClicked(@NonNull PhotoPickerFragment.PhotoPickerIcon icon) {
switch (icon) {
case ANDROID_CAMERA:
case ANDROID_CAPTURE_PHOTO:
launchCamera();
break;
case ANDROID_PICKER:
case ANDROID_CAPTURE_VIDEO:
launchVideoCamera();
break;
case ANDROID_CHOOSE_PHOTO:
launchPictureLibrary();
break;
case ANDROID_CHOOSE_VIDEO:
launchVideoLibrary();
break;
}
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.PopupMenu;

import org.wordpress.android.R;
import org.wordpress.android.ui.photopicker.PhotoPickerAdapter.PhotoPickerAdapterListener;
Expand All @@ -31,8 +32,10 @@ public class PhotoPickerFragment extends Fragment {
static final int NUM_COLUMNS = 3;

public enum PhotoPickerIcon {
ANDROID_CAMERA,
ANDROID_PICKER,
ANDROID_CHOOSE_PHOTO,
ANDROID_CHOOSE_VIDEO,
ANDROID_CAPTURE_PHOTO,
ANDROID_CAPTURE_VIDEO,
WP_MEDIA
}

Expand Down Expand Up @@ -127,17 +130,19 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
mBottomBar.findViewById(R.id.icon_camera).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mListener != null) {
/*if (mListener != null) {
mListener.onPhotoPickerIconClicked(PhotoPickerIcon.ANDROID_CAMERA);
}
}*/
showCameraPopupMenu(v);
}
});
mBottomBar.findViewById(R.id.icon_picker).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mListener != null) {
showPickerPopupMenu(v);
/*if (mListener != null) {
mListener.onPhotoPickerIconClicked(PhotoPickerIcon.ANDROID_PICKER);
}
}*/
}
});

Expand All @@ -160,6 +165,61 @@ public void onClick(View v) {
return view;
}

private void showPickerPopupMenu(@NonNull View view) {
PopupMenu popup = new PopupMenu(getActivity(), view);

MenuItem itemPhoto = popup.getMenu().add(R.string.photo_picker_choose_photo);
itemPhoto.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
if (mListener != null) {
mListener.onPhotoPickerIconClicked(PhotoPickerIcon.ANDROID_CHOOSE_PHOTO);
}
return true;
}
});

MenuItem itemVideo = popup.getMenu().add(R.string.photo_picker_choose_video);
itemVideo.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
if (mListener != null) {
mListener.onPhotoPickerIconClicked(PhotoPickerIcon.ANDROID_CHOOSE_VIDEO);
}
return true;
}
});

popup.show();
}

private void showCameraPopupMenu(@NonNull View view) {
PopupMenu popup = new PopupMenu(getActivity(), view);

MenuItem itemPhoto = popup.getMenu().add(R.string.photo_picker_capture_photo);
itemPhoto.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
if (mListener != null) {
mListener.onPhotoPickerIconClicked(PhotoPickerIcon.ANDROID_CAPTURE_PHOTO);
}
return true;
}
});

MenuItem itemVideo = popup.getMenu().add(R.string.photo_picker_capture_video);
itemVideo.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
if (mListener != null) {
mListener.onPhotoPickerIconClicked(PhotoPickerIcon.ANDROID_CAPTURE_VIDEO);
}
return true;
}
});

popup.show();
}
void setPhotoPickerListener(PhotoPickerListener listener) {
mListener = listener;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -621,12 +621,18 @@ public void onPhotoPickerMediaChosen(@NonNull List<Uri> uriList) {
public void onPhotoPickerIconClicked(@NonNull PhotoPickerIcon icon) {
hidePhotoPicker();
switch (icon) {
case ANDROID_CAMERA:
case ANDROID_CAPTURE_PHOTO:
launchCamera();
break;
case ANDROID_PICKER:
case ANDROID_CAPTURE_VIDEO:
launchVideoCamera();
break;
case ANDROID_CHOOSE_PHOTO:
launchPictureLibrary();
break;
case ANDROID_CHOOSE_VIDEO:
launchVideoLibrary();
break;
case WP_MEDIA:
startMediaGalleryAddActivity();
break;
Expand Down
4 changes: 4 additions & 0 deletions WordPress/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1674,6 +1674,10 @@
<string name="error_all_media_upload_canceled">All media uploads have been cancelled due to an unknown error. Please retry uploading</string>

<string name="photo_picker_title">Choose photo</string>
<string name="photo_picker_choose_photo">Choose photo</string>
<string name="photo_picker_choose_video">Choose video</string>
<string name="photo_picker_capture_photo">Take photo</string>
<string name="photo_picker_capture_video">Take video</string>

<!-- E-mail verification reminder dialog -->
<string name="toast_saving_post_as_draft">Saving post as draft</string>
Expand Down

0 comments on commit 8f2633e

Please sign in to comment.