From 5ad8171d51de7d6240f74da12e5afacadd104a8c Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Tue, 22 Oct 2013 03:43:10 +0530 Subject: [PATCH] Let people upload to the campaign they are looking at FIXME: Show progress of upload as it happens, or at least direct them to a place where that can happen Change-Id: I7695fcb9de7d6c2ffdfa2bc60e116a20a6298e31 --- .../wikimedia/commons/campaigns/CampaignContribution.java | 2 +- .../commons/contributions/ContributionController.java | 8 +++++++- .../commons/contributions/ContributionsActivity.java | 5 +++++ .../commons/contributions/ContributionsListFragment.java | 8 +++++++- .../java/org/wikimedia/commons/upload/ShareActivity.java | 7 ++++++- .../java/org/wikimedia/commons/upload/UploadService.java | 1 + 6 files changed, 27 insertions(+), 4 deletions(-) diff --git a/commons/src/main/java/org/wikimedia/commons/campaigns/CampaignContribution.java b/commons/src/main/java/org/wikimedia/commons/campaigns/CampaignContribution.java index a105c0e62..c9a8045a9 100644 --- a/commons/src/main/java/org/wikimedia/commons/campaigns/CampaignContribution.java +++ b/commons/src/main/java/org/wikimedia/commons/campaigns/CampaignContribution.java @@ -38,7 +38,7 @@ public class CampaignContribution extends Contribution { } else { buffer.append("{{subst:unc}}\n"); } - buffer.append("[[Category:").append(campaign.getTrackingCategory()).append("\n"); + buffer.append("[[Category:").append(campaign.getTrackingCategory()).append("]]").append("\n"); return buffer.toString(); } diff --git a/commons/src/main/java/org/wikimedia/commons/contributions/ContributionController.java b/commons/src/main/java/org/wikimedia/commons/contributions/ContributionController.java index f6beac475..ce2a730d8 100644 --- a/commons/src/main/java/org/wikimedia/commons/contributions/ContributionController.java +++ b/commons/src/main/java/org/wikimedia/commons/contributions/ContributionController.java @@ -8,6 +8,7 @@ import android.os.Environment; import android.provider.MediaStore; import android.util.Log; import com.actionbarsherlock.app.SherlockFragment; +import org.wikimedia.commons.campaigns.Campaign; import org.wikimedia.commons.upload.ShareActivity; import org.wikimedia.commons.upload.UploadService; @@ -18,13 +19,15 @@ import java.util.Date; public class ContributionController { private SherlockFragment fragment; private Activity activity; + private Campaign campaign; private final static int SELECT_FROM_GALLERY = 1; private final static int SELECT_FROM_CAMERA = 2; - public ContributionController(SherlockFragment fragment) { + public ContributionController(SherlockFragment fragment, Campaign campaign) { this.fragment = fragment; this.activity = fragment.getActivity(); + this.campaign = campaign; } // See http://stackoverflow.com/a/5054673/17865 for why this is done @@ -68,6 +71,7 @@ public class ContributionController { public void handleImagePicked(int requestCode, Intent data) { Intent shareIntent = new Intent(activity, ShareActivity.class); shareIntent.setAction(Intent.ACTION_SEND); + shareIntent.putExtra(UploadService.EXTRA_CAMPAIGN, campaign); switch(requestCode) { case SELECT_FROM_GALLERY: shareIntent.setType(activity.getContentResolver().getType(data.getData())); @@ -85,11 +89,13 @@ public class ContributionController { public void saveState(Bundle outState) { outState.putParcelable("lastGeneratedCaptureURI", lastGeneratedCaptureURI); + outState.putSerializable("campaign", campaign); } public void loadState(Bundle savedInstanceState) { if(savedInstanceState != null) { lastGeneratedCaptureURI = (Uri) savedInstanceState.getParcelable("lastGeneratedCaptureURI"); + campaign = (Campaign) savedInstanceState.getSerializable("campaign"); } } 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 a1951fa9c..1dff81dbd 100644 --- a/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsActivity.java +++ b/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsActivity.java @@ -28,6 +28,7 @@ public class ContributionsActivity implements LoaderManager.LoaderCallbacks, AdapterView.OnItemClickListener, MediaDetailPagerFragment.MediaDetailProvider, + ContributionsListFragment.CurrentCampaignProvider, FragmentManager.OnBackStackChangedListener { @@ -256,4 +257,8 @@ public class ContributionsActivity getSupportActionBar().setDisplayHomeAsUpEnabled(false); } } + + public Campaign getCurrentCampaign() { + return campaign; + } } diff --git a/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsListFragment.java b/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsListFragment.java index 0be5eaddb..fea1c7f9f 100644 --- a/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsListFragment.java +++ b/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsListFragment.java @@ -19,12 +19,18 @@ import com.actionbarsherlock.view.MenuItem; import org.wikimedia.commons.*; import org.wikimedia.commons.R; +import org.wikimedia.commons.campaigns.Campaign; public class ContributionsListFragment extends SherlockFragment { + public interface CurrentCampaignProvider { + Campaign getCurrentCampaign(); + } + private GridView contributionsList; private TextView waitingMessage; private TextView emptyMessage; + private Campaign campaign; private ContributionController controller; @@ -113,7 +119,7 @@ public class ContributionsListFragment extends SherlockFragment { public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - controller = new ContributionController(this); + controller = new ContributionController(this, ((CurrentCampaignProvider)getActivity()).getCurrentCampaign()); controller.loadState(savedInstanceState); contributionsList = (GridView)getView().findViewById(R.id.contributionsList); diff --git a/commons/src/main/java/org/wikimedia/commons/upload/ShareActivity.java b/commons/src/main/java/org/wikimedia/commons/upload/ShareActivity.java index 983018f20..087285684 100644 --- a/commons/src/main/java/org/wikimedia/commons/upload/ShareActivity.java +++ b/commons/src/main/java/org/wikimedia/commons/upload/ShareActivity.java @@ -10,6 +10,7 @@ import com.actionbarsherlock.view.MenuItem; import android.widget.*; import org.wikimedia.commons.*; +import org.wikimedia.commons.campaigns.Campaign; import org.wikimedia.commons.category.CategorizationFragment; import org.wikimedia.commons.contributions.*; import org.wikimedia.commons.auth.*; @@ -149,7 +150,11 @@ public class ShareActivity @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - uploadController = new UploadController(this); + Campaign campaign = null; + if(getIntent().hasExtra(UploadService.EXTRA_CAMPAIGN)) { + campaign = (Campaign) getIntent().getSerializableExtra(UploadService.EXTRA_CAMPAIGN); + } + uploadController = new UploadController(this, campaign); setContentView(R.layout.activity_share); app = (CommonsApplication)this.getApplicationContext(); diff --git a/commons/src/main/java/org/wikimedia/commons/upload/UploadService.java b/commons/src/main/java/org/wikimedia/commons/upload/UploadService.java index ecb457c79..8124fb659 100644 --- a/commons/src/main/java/org/wikimedia/commons/upload/UploadService.java +++ b/commons/src/main/java/org/wikimedia/commons/upload/UploadService.java @@ -30,6 +30,7 @@ public class UploadService extends HandlerService { public static final String ACTION_START_SERVICE = EXTRA_PREFIX + ".upload"; public static final String EXTRA_SOURCE = EXTRA_PREFIX + ".source"; + public static final String EXTRA_CAMPAIGN = EXTRA_PREFIX + ".campaign"; private NotificationManager notificationManager; private ContentProviderClient contributionsProviderClient;