From 999b8a0c0e8b593a7222e48eec8bc4da9051d0a7 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Sat, 2 Feb 2013 17:12:33 +0530 Subject: [PATCH] Added menu option to Upload from Gallery --- commons/AndroidManifest.xml | 1 + commons/res/values/strings.xml | 1 + .../wikimedia/commons/ImageLoaderTask.java | 4 +- .../org/wikimedia/commons/UploadService.java | 2 +- .../contributions/ContributionsActivity.java | 42 +++++++++++++++++++ 5 files changed, 47 insertions(+), 3 deletions(-) diff --git a/commons/AndroidManifest.xml b/commons/AndroidManifest.xml index fb16ebfd0..5d2892c2f 100644 --- a/commons/AndroidManifest.xml +++ b/commons/AndroidManifest.xml @@ -43,6 +43,7 @@ android:name=".contributions.ContributionsActivity" android:icon="@drawable/ic_launcher" android:label="@string/app_name" + android:uiOptions="splitActionBarWhenNarrow" > diff --git a/commons/res/values/strings.xml b/commons/res/values/strings.xml index a4bba20ff..b108c3524 100644 --- a/commons/res/values/strings.xml +++ b/commons/res/values/strings.xml @@ -39,4 +39,5 @@ My Contributions Queued Uploading + From Gallery \ No newline at end of file diff --git a/commons/src/main/java/org/wikimedia/commons/ImageLoaderTask.java b/commons/src/main/java/org/wikimedia/commons/ImageLoaderTask.java index 1e4b21df2..fd25d147a 100644 --- a/commons/src/main/java/org/wikimedia/commons/ImageLoaderTask.java +++ b/commons/src/main/java/org/wikimedia/commons/ImageLoaderTask.java @@ -37,8 +37,8 @@ public class ImageLoaderTask extends AsyncTask { Cursor cursor = view.getContext().getContentResolver().query(photoUri, new String[] { MediaStore.Images.ImageColumns.ORIENTATION }, null, null, null); - if (cursor.getCount() != 1) { - return -1; + if (cursor == null || cursor.getCount() != 1) { + return 0; } cursor.moveToFirst(); diff --git a/commons/src/main/java/org/wikimedia/commons/UploadService.java b/commons/src/main/java/org/wikimedia/commons/UploadService.java index b59d8fdbd..c3e131e01 100644 --- a/commons/src/main/java/org/wikimedia/commons/UploadService.java +++ b/commons/src/main/java/org/wikimedia/commons/UploadService.java @@ -156,7 +156,7 @@ public class UploadService extends IntentService { if(mimeType.startsWith("image/")) { Cursor cursor = this.getContentResolver().query(mediaUri, new String[]{MediaStore.Images.ImageColumns.DATE_TAKEN}, null, null, null); - if(cursor.getCount() != 0) { + if(cursor != null && cursor.getCount() != 0) { cursor.moveToFirst(); dateCreated = new Date(cursor.getLong(0)); } diff --git a/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsActivity.java b/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsActivity.java index df68f5a79..d2d763e00 100644 --- a/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsActivity.java +++ b/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsActivity.java @@ -12,12 +12,15 @@ import android.os.Bundle; import android.support.v4.content.*; import android.support.v4.widget.CursorAdapter; import android.support.v4.widget.SimpleCursorAdapter; +import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import com.actionbarsherlock.app.SherlockFragmentActivity; +import com.actionbarsherlock.view.Menu; +import com.actionbarsherlock.view.MenuItem; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; @@ -27,6 +30,7 @@ import com.nostra13.universalimageloader.core.assist.ImageScaleType; import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer; import org.wikimedia.commons.ImageLoaderTask; import org.wikimedia.commons.R; +import org.wikimedia.commons.ShareActivity; import org.wikimedia.commons.UploadService; import org.wikimedia.commons.auth.AuthenticatedActivity; import org.wikimedia.commons.auth.WikiAccountAuthenticator; @@ -37,6 +41,8 @@ import java.util.Date; // Inherit from SherlockFragmentActivity but not use Fragments. Because Loaders are available only from FragmentActivities public class ContributionsActivity extends AuthenticatedActivity implements LoaderManager.LoaderCallbacks { + private final static int SELECT_FROM_GALLERY = 1; + public ContributionsActivity() { super(WikiAccountAuthenticator.COMMONS_ACCOUNT_TYPE); } @@ -153,6 +159,42 @@ public class ContributionsActivity extends AuthenticatedActivity implements Load requestAuthToken(); } + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + switch(requestCode) { + case SELECT_FROM_GALLERY: + if(resultCode == RESULT_OK) { + Intent shareIntent = new Intent(this, ShareActivity.class); + shareIntent.setAction(Intent.ACTION_SEND); + Log.d("Commons", "Type is " + data.getType() + " Uri is " + data.getData()); + shareIntent.setType("image/*"); //FIXME: Find out appropriate mime type + shareIntent.putExtra(Intent.EXTRA_STREAM, data.getData()); + startActivity(shareIntent); + break; + } + } + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch(item.getItemId()) { + case R.id.menu_from_gallery: + Intent pickImageIntent = new Intent(Intent.ACTION_GET_CONTENT); + pickImageIntent.setType("image/*"); + startActivityForResult(pickImageIntent, SELECT_FROM_GALLERY); + return true; + default: + return super.onOptionsItemSelected(item); + } + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getSupportMenuInflater().inflate(R.menu.activity_contributions, menu); + return true; + } + public Loader onCreateLoader(int i, Bundle bundle) { return new CursorLoader(this, ContributionsContentProvider.BASE_URI, CONTRIBUTIONS_PROJECTION, CONTRIBUTION_SELECTION, null, CONTRIBUTION_SORT); }