public static void viewSimpleSlideshow(Context context, SlideshowModel slideshow) { if (!slideshow.isSimple()) { throw new IllegalArgumentException("viewSimpleSlideshow() called on a non-simple slideshow"); } SlideModel slide = slideshow.get(0); MediaModel mm = null; if (slide.hasImage()) { mm = slide.getImage(); } else if (slide.hasVideo()) { mm = slide.getVideo(); } Intent intent = new Intent(Intent.ACTION_VIEW); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.putExtra("SingleItemOnly", true); // So we don't see "surrounding" images in Gallery String contentType; if (mm.isDrmProtected()) { contentType = mm.getDrmObject().getContentType(); } else { contentType = mm.getContentType(); } intent.setDataAndType(mm.getUri(), contentType); context.startActivity(intent); }
public static int getAttachmentType(SlideshowModel model) { if (model == null) { return WorkingMessage.TEXT; } int numberOfSlides = model.size(); if (numberOfSlides > 1) { return WorkingMessage.SLIDESHOW; } else if (numberOfSlides == 1) { // Only one slide in the slide-show. SlideModel slide = model.get(0); if (slide.hasVideo()) { return WorkingMessage.VIDEO; } if (slide.hasAudio() && slide.hasImage()) { return WorkingMessage.SLIDESHOW; } if (slide.hasAudio()) { return WorkingMessage.AUDIO; } if (slide.hasImage()) { return WorkingMessage.IMAGE; } if (slide.hasText()) { return WorkingMessage.TEXT; } } return WorkingMessage.TEXT; }
private void showCurrentSlide() { mPresenter.setLocation(mPosition); mPresenter.present(); updateTitle(); if (mSlideshowModel.get(mPosition).hasImage()) { setReplaceButtonText(R.string.replace_image); } else { setReplaceButtonText(R.string.add_picture); } }
public void onClick(View v) { SlideModel slide = mSlideshowModel.get(mPosition); if (slide != null && slide.hasVideo()) { Toast.makeText( SlideEditorActivity.this, R.string.cannot_add_picture_and_video, Toast.LENGTH_SHORT) .show(); return; } Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null); intent.setType(ContentType.IMAGE_UNSPECIFIED); startActivityForResult(intent, REQUEST_CODE_CHANGE_PICTURE); }
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case MENU_PREVIEW_SLIDESHOW: previewSlideshow(); break; case MENU_REMOVE_TEXT: SlideModel slide = mSlideshowModel.get(mPosition); if (slide != null) { slide.removeText(); } break; case MENU_ADD_PICTURE: Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null); intent.setType(ContentType.IMAGE_UNSPECIFIED); startActivityForResult(intent, REQUEST_CODE_CHANGE_PICTURE); break; case MENU_TAKE_PICTURE: intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); // We have to pass a uri to store the picture data, otherwise the camera will return // a very small image bitmap. intent.putExtra(MediaStore.EXTRA_OUTPUT, TempFileProvider.SCRAP_CONTENT_URI); startActivityForResult(intent, REQUEST_CODE_TAKE_PICTURE); break; case MENU_DEL_PICTURE: mSlideshowEditor.removeImage(mPosition); setReplaceButtonText(R.string.add_picture); break; case MENU_ADD_AUDIO: MessageUtils.selectAudio(this, REQUEST_CODE_CHANGE_MUSIC); break; case MENU_RECORD_SOUND: slide = mSlideshowModel.get(mPosition); int currentSlideSize = slide.getSlideSize(); long sizeLimit = ComposeMessageActivity.computeAttachmentSizeLimit(mSlideshowModel, currentSlideSize); MessageUtils.recordSound(this, REQUEST_CODE_RECORD_SOUND, sizeLimit); break; case MENU_DEL_AUDIO: mSlideshowEditor.removeAudio(mPosition); break; case MENU_ADD_VIDEO: intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType(ContentType.VIDEO_UNSPECIFIED); intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true); startActivityForResult(intent, REQUEST_CODE_CHANGE_VIDEO); break; case MENU_TAKE_VIDEO: slide = mSlideshowModel.get(mPosition); currentSlideSize = slide.getSlideSize(); sizeLimit = ComposeMessageActivity.computeAttachmentSizeLimit(mSlideshowModel, currentSlideSize); if (sizeLimit > 0) { MessageUtils.recordVideo(this, REQUEST_CODE_TAKE_VIDEO, sizeLimit); } else { Toast.makeText(this, getString(R.string.message_too_big_for_video), Toast.LENGTH_SHORT) .show(); } break; case MENU_DEL_VIDEO: mSlideshowEditor.removeVideo(mPosition); break; case MENU_ADD_SLIDE: mPosition++; if (mSlideshowEditor.addNewSlide(mPosition)) { // add successfully showCurrentSlide(); } else { // move position back mPosition--; Toast.makeText(this, R.string.cannot_add_slide_anymore, Toast.LENGTH_SHORT).show(); } break; case MENU_LAYOUT: showLayoutSelectorDialog(); break; case MENU_DURATION: showDurationDialog(); break; } return true; }
@Override public boolean onPrepareOptionsMenu(Menu menu) { if (isFinishing()) { return false; } menu.clear(); SlideModel slide = mSlideshowModel.get(mPosition); if (slide == null) { return false; } // Preview slideshow. menu.add(0, MENU_PREVIEW_SLIDESHOW, 0, R.string.preview_slideshow) .setIcon(com.android.internal.R.drawable.ic_menu_play_clip); // Text if (slide.hasText() && !TextUtils.isEmpty(slide.getText().getText())) { // "Change text" if text is set. menu.add(0, MENU_REMOVE_TEXT, 0, R.string.remove_text) .setIcon(R.drawable.ic_menu_remove_text); } // Picture if (slide.hasImage()) { menu.add(0, MENU_DEL_PICTURE, 0, R.string.remove_picture) .setIcon(R.drawable.ic_menu_remove_picture); } else if (!slide.hasVideo()) { menu.add(0, MENU_ADD_PICTURE, 0, R.string.add_picture).setIcon(R.drawable.ic_menu_picture); menu.add(0, MENU_TAKE_PICTURE, 0, R.string.attach_take_photo) .setIcon(R.drawable.ic_menu_picture); } // Music if (slide.hasAudio()) { menu.add(0, MENU_DEL_AUDIO, 0, R.string.remove_music) .setIcon(R.drawable.ic_menu_remove_sound); } else if (!slide.hasVideo()) { if (MmsConfig.getAllowAttachAudio()) { SubMenu subMenu = menu.addSubMenu(0, MENU_SUB_AUDIO, 0, R.string.add_music) .setIcon(R.drawable.ic_menu_add_sound); subMenu.add(0, MENU_ADD_AUDIO, 0, R.string.attach_sound); subMenu.add(0, MENU_RECORD_SOUND, 0, R.string.attach_record_sound); } else { menu.add(0, MENU_RECORD_SOUND, 0, R.string.attach_record_sound) .setIcon(R.drawable.ic_menu_add_sound); } } // Video if (slide.hasVideo()) { menu.add(0, MENU_DEL_VIDEO, 0, R.string.remove_video) .setIcon(R.drawable.ic_menu_remove_video); } else if (!slide.hasAudio() && !slide.hasImage()) { menu.add(0, MENU_ADD_VIDEO, 0, R.string.add_video).setIcon(R.drawable.ic_menu_movie); menu.add(0, MENU_TAKE_VIDEO, 0, R.string.attach_record_video) .setIcon(R.drawable.ic_menu_movie); } // Add slide menu.add(0, MENU_ADD_SLIDE, 0, R.string.add_slide).setIcon(R.drawable.ic_menu_add_slide); // Slide duration String duration = getResources().getString(R.string.duration_sec); menu.add( 0, MENU_DURATION, 0, duration.replace("%s", String.valueOf(slide.getDuration() / 1000))) .setIcon(R.drawable.ic_menu_duration); // Slide layout int resId; if (mSlideshowModel.getLayout().getLayoutType() == LayoutModel.LAYOUT_TOP_TEXT) { resId = R.string.layout_top; } else { resId = R.string.layout_bottom; } // FIXME: set correct icon when layout icon is available. menu.add(0, MENU_LAYOUT, 0, resId).setIcon(R.drawable.ic_menu_picture); return true; }