aboutsummaryrefslogtreecommitdiff
path: root/WordPress/src/main/java/org/wordpress/android/ui/media/MediaGalleryActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'WordPress/src/main/java/org/wordpress/android/ui/media/MediaGalleryActivity.java')
-rw-r--r--WordPress/src/main/java/org/wordpress/android/ui/media/MediaGalleryActivity.java186
1 files changed, 186 insertions, 0 deletions
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/media/MediaGalleryActivity.java b/WordPress/src/main/java/org/wordpress/android/ui/media/MediaGalleryActivity.java
new file mode 100644
index 000000000..e3168ed45
--- /dev/null
+++ b/WordPress/src/main/java/org/wordpress/android/ui/media/MediaGalleryActivity.java
@@ -0,0 +1,186 @@
+package org.wordpress.android.ui.media;
+
+import android.app.FragmentManager;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.AppCompatActivity;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.Toast;
+
+import com.sothree.slidinguppanel.SlidingUpPanelLayout;
+import com.sothree.slidinguppanel.SlidingUpPanelLayout.PanelSlideListener;
+
+import org.wordpress.android.R;
+import org.wordpress.android.WordPress;
+import org.wordpress.android.util.helpers.MediaGallery;
+import org.wordpress.android.ui.media.MediaGallerySettingsFragment.MediaGallerySettingsCallback;
+import org.wordpress.android.util.DisplayUtils;
+
+import java.util.ArrayList;
+
+/**
+ * An activity where the user can manage a media gallery
+ */
+public class MediaGalleryActivity extends AppCompatActivity implements MediaGallerySettingsCallback {
+ public static final int REQUEST_CODE = 3000;
+
+ // params for the gallery
+ public static final String PARAMS_MEDIA_GALLERY = "PARAMS_MEDIA_GALLERY";
+
+ // launches media picker in onCreate() if set
+ public static final String PARAMS_LAUNCH_PICKER = "PARAMS_LAUNCH_PICKER";
+
+ // result of the gallery
+ public static final String RESULT_MEDIA_GALLERY = "RESULT_MEDIA_GALLERY";
+
+ private MediaGalleryEditFragment mMediaGalleryEditFragment;
+ private MediaGallerySettingsFragment mMediaGallerySettingsFragment;
+
+ private SlidingUpPanelLayout mSlidingPanelLayout;
+ private boolean mIsPanelCollapsed = true;
+
+ private MediaGallery mMediaGallery;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ if (WordPress.wpDB == null) {
+ Toast.makeText(this, R.string.fatal_db_error, Toast.LENGTH_LONG).show();
+ finish();
+ return;
+ }
+
+ setTitle(R.string.media_gallery_edit);
+
+ setContentView(R.layout.media_gallery_activity);
+
+ ActionBar actionBar = getSupportActionBar();
+ if (actionBar != null) {
+ actionBar.setDisplayShowTitleEnabled(true);
+ }
+
+ FragmentManager fm = getFragmentManager();
+
+ mMediaGallery = (MediaGallery) getIntent().getSerializableExtra(PARAMS_MEDIA_GALLERY);
+ if (mMediaGallery == null) {
+ mMediaGallery = new MediaGallery();
+ }
+
+ mMediaGalleryEditFragment = (MediaGalleryEditFragment) fm.findFragmentById(R.id.mediaGalleryEditFragment);
+ mMediaGallerySettingsFragment = (MediaGallerySettingsFragment) fm.findFragmentById(
+ R.id.mediaGallerySettingsFragment);
+ if (savedInstanceState == null) {
+ // if not null, the fragments will remember its state
+ mMediaGallerySettingsFragment.setRandom(mMediaGallery.isRandom());
+ mMediaGallerySettingsFragment.setNumColumns(mMediaGallery.getNumColumns());
+ mMediaGallerySettingsFragment.setType(mMediaGallery.getType());
+ mMediaGalleryEditFragment.setMediaIds(mMediaGallery.getIds());
+ }
+
+ mSlidingPanelLayout = (SlidingUpPanelLayout) findViewById(R.id.media_gallery_root);
+ if (mSlidingPanelLayout != null) {
+ // sliding panel layout is on phone only
+
+ mSlidingPanelLayout.setDragView(mMediaGallerySettingsFragment.getDragView());
+ mSlidingPanelLayout.setPanelHeight(DisplayUtils.dpToPx(this, 48));
+ mSlidingPanelLayout.setPanelSlideListener(new PanelSlideListener() {
+ @Override
+ public void onPanelSlide(View panel, float slideOffset) {
+ }
+
+ @Override
+ public void onPanelExpanded(View panel) {
+ mMediaGallerySettingsFragment.onPanelExpanded();
+ mIsPanelCollapsed = false;
+ }
+
+ @Override
+ public void onPanelCollapsed(View panel) {
+ mMediaGallerySettingsFragment.onPanelCollapsed();
+ mIsPanelCollapsed = true;
+ }
+ });
+ }
+
+ if (getIntent().hasExtra(PARAMS_LAUNCH_PICKER)) {
+ handleAddMedia();
+ }
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ super.onCreateOptionsMenu(menu);
+ getMenuInflater().inflate(R.menu.media_gallery, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ if (item.getItemId() == R.id.menu_add_media) {
+ handleAddMedia();
+ return true;
+ } else if (item.getItemId() == R.id.menu_save) {
+ handleSaveMedia();
+ return true;
+ }
+
+ return super.onOptionsItemSelected(item);
+ }
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if (requestCode == MediaGalleryPickerActivity.REQUEST_CODE) {
+ if (resultCode == RESULT_OK) {
+ ArrayList<String> ids = data.getStringArrayListExtra(MediaGalleryPickerActivity.RESULT_IDS);
+ mMediaGalleryEditFragment.setMediaIds(ids);
+ }
+ }
+ super.onActivityResult(requestCode, resultCode, data);
+ }
+
+ private void handleAddMedia() {
+ // need to make MediaGalleryAdd into an activity rather than a fragment because I can't add this fragment
+ // on top of the slidingpanel layout (since it needs to be the root layout)
+
+ ArrayList<String> mediaIds = mMediaGalleryEditFragment.getMediaIds();
+
+ Intent intent = new Intent(this, MediaGalleryPickerActivity.class);
+ intent.putExtra(MediaGalleryPickerActivity.PARAM_SELECTED_IDS, mediaIds);
+ startActivityForResult(intent, MediaGalleryPickerActivity.REQUEST_CODE);
+ }
+
+ private void handleSaveMedia() {
+ Intent intent = new Intent();
+ ArrayList<String> ids = mMediaGalleryEditFragment.getMediaIds();
+ boolean isRandom = mMediaGallerySettingsFragment.isRandom();
+ int numColumns = mMediaGallerySettingsFragment.getNumColumns();
+ String type = mMediaGallerySettingsFragment.getType();
+
+ mMediaGallery.setIds(ids);
+ mMediaGallery.setRandom(isRandom);
+ mMediaGallery.setNumColumns(numColumns);
+ mMediaGallery.setType(type);
+
+ intent.putExtra(RESULT_MEDIA_GALLERY, mMediaGallery);
+ setResult(RESULT_OK, intent);
+ finish();
+ }
+
+ @Override
+ public void onBackPressed() {
+ if (mSlidingPanelLayout != null && !mIsPanelCollapsed) {
+ mSlidingPanelLayout.collapsePane();
+ } else {
+ super.onBackPressed();
+ }
+ }
+
+ @Override
+ public void onReverseClicked() {
+ mMediaGalleryEditFragment.reverseIds();
+ }
+}