@Override public boolean onPrepareOptionsMenu(Menu menu) { menu.clear(); int position = mList.getSelectedItemPosition(); if ((position >= 0) && (position != (mList.getCount() - 1))) { // Selected one slide. if (position > 0) { menu.add(0, MENU_MOVE_UP, 0, R.string.move_up).setIcon(R.drawable.ic_menu_move_up); } if (position < (mSlideListAdapter.getCount() - 1)) { menu.add(0, MENU_MOVE_DOWN, 0, R.string.move_down).setIcon(R.drawable.ic_menu_move_down); } if (mSlideshowModel.size() < SlideshowEditor.MAX_SLIDE_NUM) { menu.add(0, MENU_ADD_SLIDE, 0, R.string.add_slide).setIcon(R.drawable.ic_menu_add_slide); } menu.add(0, MENU_REMOVE_SLIDE, 0, R.string.remove_slide) .setIcon(android.R.drawable.ic_menu_delete); } else { if (mSlideshowModel.size() < SlideshowEditor.MAX_SLIDE_NUM) { menu.add(0, MENU_ADD_SLIDE, 0, R.string.add_slide).setIcon(R.drawable.ic_menu_add_slide); } } menu.add(0, MENU_DISCARD_SLIDESHOW, 0, R.string.discard_slideshow) .setIcon(R.drawable.ic_menu_delete_played); return true; }
private void addNewSlide() { if (mSlideshowEditor.addNewSlide()) { // add successfully mSlideListAdapter.notifyDataSetChanged(); // Select the new slide. mList.requestFocus(); mList.setSelection(mSlideshowModel.size() - 1); } else { Toast.makeText(this, R.string.cannot_add_slide_anymore, Toast.LENGTH_SHORT).show(); } }
@Override public boolean onOptionsItemSelected(MenuItem item) { int position = mList.getSelectedItemPosition(); switch (item.getItemId()) { case MENU_MOVE_UP: if ((position > 0) && (position < mSlideshowModel.size())) { mSlideshowEditor.moveSlideUp(position); mSlideListAdapter.notifyDataSetChanged(); mList.setSelection(position - 1); } break; case MENU_MOVE_DOWN: if ((position >= 0) && (position < mSlideshowModel.size() - 1)) { mSlideshowEditor.moveSlideDown(position); mSlideListAdapter.notifyDataSetChanged(); mList.setSelection(position + 1); } break; case MENU_REMOVE_SLIDE: if ((position >= 0) && (position < mSlideshowModel.size())) { mSlideshowEditor.removeSlide(position); mSlideListAdapter.notifyDataSetChanged(); } break; case MENU_ADD_SLIDE: addNewSlide(); break; case MENU_DISCARD_SLIDESHOW: // delete all slides from slideshow. mSlideshowEditor.removeAllSlides(); mSlideListAdapter.notifyDataSetChanged(); finish(); break; } return true; }