Added menu option to Upload from Gallery

This commit is contained in:
YuviPanda 2013-02-02 17:12:33 +05:30
parent 86711188e1
commit 999b8a0c0e
5 changed files with 47 additions and 3 deletions

View file

@ -43,6 +43,7 @@
android:name=".contributions.ContributionsActivity"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:uiOptions="splitActionBarWhenNarrow"
>
<intent-filter>
<category android:name="android.intent.category.LAUNCHER"/>

View file

@ -39,4 +39,5 @@
<string name="title_activity_contributions">My Contributions</string>
<string name="contribution_state_queued">Queued</string>
<string name="contribution_state_in_progress">Uploading</string>
<string name="menu_from_gallery">From Gallery</string>
</resources>

View file

@ -37,8 +37,8 @@ public class ImageLoaderTask extends AsyncTask<Uri, String, Bitmap> {
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();

View file

@ -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));
}

View file

@ -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<Cursor> {
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<Cursor> onCreateLoader(int i, Bundle bundle) {
return new CursorLoader(this, ContributionsContentProvider.BASE_URI, CONTRIBUTIONS_PROJECTION, CONTRIBUTION_SELECTION, null, CONTRIBUTION_SORT);
}