Fields Summary |
---|
private static final String | TAG |
private static final boolean | DEBUG |
private static final boolean | LOCAL_LOGV |
private static final int | MENU_MOVE_UP |
private static final int | MENU_MOVE_DOWN |
private static final int | MENU_REMOVE_SLIDE |
private static final int | MENU_ADD_SLIDE |
private static final int | MENU_DISCARD_SLIDESHOW |
private static final int | REQUEST_CODE_EDIT_SLIDE |
private static final String | STATE |
private static final String | SLIDE_INDEX |
private static final String | MESSAGE_URI |
private android.widget.ListView | mList |
private SlideListAdapter | mSlideListAdapter |
private com.android.mms.model.SlideshowModel | mSlideshowModel |
private SlideshowEditor | mSlideshowEditor |
private android.os.Bundle | mState |
private android.net.Uri | mUri |
private boolean | mDirty |
private final com.android.mms.model.IModelChangedObserver | mModelChangedObserver |
Methods Summary |
---|
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();
}
|
private void | cleanupSlideshowModel()
if (mSlideshowModel != null) {
mSlideshowModel.unregisterModelChangedObserver(
mModelChangedObserver);
mSlideshowModel = null;
}
|
private android.view.View | createAddSlideItem()
View v = ((LayoutInflater) getSystemService(
Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.slideshow_edit_item, null);
// Add slide.
TextView text = (TextView) v.findViewById(R.id.slide_number_text);
text.setText(R.string.add_slide);
text = (TextView) v.findViewById(R.id.text_preview);
text.setText(R.string.add_slide_hint);
text.setVisibility(View.VISIBLE);
ImageView image = (ImageView) v.findViewById(R.id.image_preview);
image.setImageResource(R.drawable.ic_launcher_slideshow_add_sms);
return v;
|
private void | initSlideList()
cleanupSlideshowModel();
mSlideshowModel = SlideshowModel.createFromMessageUri(this, mUri);
mSlideshowModel.registerModelChangedObserver(mModelChangedObserver);
mSlideshowEditor = new SlideshowEditor(this, mSlideshowModel);
mSlideListAdapter = new SlideListAdapter(
this, R.layout.slideshow_edit_item, mSlideshowModel);
mList.setAdapter(mSlideListAdapter);
|
protected void | onActivityResult(int requestCode, int resultCode, android.content.Intent data)
if (resultCode != RESULT_OK) {
return;
}
switch(requestCode) {
case REQUEST_CODE_EDIT_SLIDE:
synchronized (this) {
mDirty = true;
}
setResult(RESULT_OK);
if ((data != null) && data.getBooleanExtra("done", false)) {
finish();
return;
}
try {
initSlideList();
} catch (MmsException e) {
Log.e(TAG, "Failed to initialize the slide-list.", e);
finish();
return;
}
break;
}
|
protected void | onCreate(android.os.Bundle icicle)
super.onCreate(icicle);
mList = getListView();
mList.addFooterView(createAddSlideItem());
if (icicle != null) {
// Retrieve previously saved state of this activity.
mState = icicle.getBundle(STATE);
}
if (mState != null) {
mUri = Uri.parse(mState.getString(MESSAGE_URI));
} else {
mUri = getIntent().getData();
}
if (mUri == null) {
Log.e(TAG, "Cannot startup activity, null Uri.");
finish();
return;
}
try {
initSlideList();
} catch (MmsException e) {
Log.e(TAG, "Failed to initialize the slide-list.", e);
finish();
}
|
protected void | onDestroy()
super.onDestroy();
cleanupSlideshowModel();
|
protected void | onListItemClick(android.widget.ListView l, android.view.View v, int position, long id)
if (position == (l.getCount() - 1)) {
addNewSlide();
} else {
openSlide(position);
}
|
public boolean | onOptionsItemSelected(android.view.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;
|
protected void | onPause()
super.onPause();
synchronized (this) {
if (mDirty) {
try {
PduBody pb = mSlideshowModel.toPduBody();
PduPersister.getPduPersister(this).updateParts(mUri, pb);
mSlideshowModel.sync(pb);
} catch (MmsException e) {
Log.e(TAG, "Cannot update the message: " + mUri, e);
}
}
}
|
public boolean | onPrepareOptionsMenu(android.view.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);
}
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 {
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;
|
protected void | onResume()
super.onResume();
if (mState != null) {
mList.setSelection(mState.getInt(SLIDE_INDEX, 0));
}
|
protected void | onSaveInstanceState(android.os.Bundle outState)
super.onSaveInstanceState(outState);
mState = new Bundle();
if (mList.getSelectedItemPosition() >= 0) {
mState.putInt(SLIDE_INDEX, mList.getSelectedItemPosition());
}
if (mUri != null) {
mState.putString(MESSAGE_URI, mUri.toString());
}
if (LOCAL_LOGV) {
Log.v(TAG, "Saving state: " + mState);
}
outState.putBundle(STATE, mState);
|
private void | openSlide(int index)
Intent intent = new Intent(this, SlideEditorActivity.class);
intent.setData(mUri);
intent.putExtra(SlideEditorActivity.SLIDE_INDEX, index);
startActivityForResult(intent, REQUEST_CODE_EDIT_SLIDE);
|