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
This commit is contained in:
YuviPanda 2013-10-22 03:43:10 +05:30 committed by Yuvipanda
parent 884709b470
commit 5ad8171d51
6 changed files with 27 additions and 4 deletions

View file

@ -38,7 +38,7 @@ public class CampaignContribution extends Contribution {
} else { } else {
buffer.append("{{subst:unc}}\n"); 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(); return buffer.toString();
} }

View file

@ -8,6 +8,7 @@ import android.os.Environment;
import android.provider.MediaStore; import android.provider.MediaStore;
import android.util.Log; import android.util.Log;
import com.actionbarsherlock.app.SherlockFragment; import com.actionbarsherlock.app.SherlockFragment;
import org.wikimedia.commons.campaigns.Campaign;
import org.wikimedia.commons.upload.ShareActivity; import org.wikimedia.commons.upload.ShareActivity;
import org.wikimedia.commons.upload.UploadService; import org.wikimedia.commons.upload.UploadService;
@ -18,13 +19,15 @@ import java.util.Date;
public class ContributionController { public class ContributionController {
private SherlockFragment fragment; private SherlockFragment fragment;
private Activity activity; private Activity activity;
private Campaign campaign;
private final static int SELECT_FROM_GALLERY = 1; private final static int SELECT_FROM_GALLERY = 1;
private final static int SELECT_FROM_CAMERA = 2; private final static int SELECT_FROM_CAMERA = 2;
public ContributionController(SherlockFragment fragment) { public ContributionController(SherlockFragment fragment, Campaign campaign) {
this.fragment = fragment; this.fragment = fragment;
this.activity = fragment.getActivity(); this.activity = fragment.getActivity();
this.campaign = campaign;
} }
// See http://stackoverflow.com/a/5054673/17865 for why this is done // 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) { public void handleImagePicked(int requestCode, Intent data) {
Intent shareIntent = new Intent(activity, ShareActivity.class); Intent shareIntent = new Intent(activity, ShareActivity.class);
shareIntent.setAction(Intent.ACTION_SEND); shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(UploadService.EXTRA_CAMPAIGN, campaign);
switch(requestCode) { switch(requestCode) {
case SELECT_FROM_GALLERY: case SELECT_FROM_GALLERY:
shareIntent.setType(activity.getContentResolver().getType(data.getData())); shareIntent.setType(activity.getContentResolver().getType(data.getData()));
@ -85,11 +89,13 @@ public class ContributionController {
public void saveState(Bundle outState) { public void saveState(Bundle outState) {
outState.putParcelable("lastGeneratedCaptureURI", lastGeneratedCaptureURI); outState.putParcelable("lastGeneratedCaptureURI", lastGeneratedCaptureURI);
outState.putSerializable("campaign", campaign);
} }
public void loadState(Bundle savedInstanceState) { public void loadState(Bundle savedInstanceState) {
if(savedInstanceState != null) { if(savedInstanceState != null) {
lastGeneratedCaptureURI = (Uri) savedInstanceState.getParcelable("lastGeneratedCaptureURI"); lastGeneratedCaptureURI = (Uri) savedInstanceState.getParcelable("lastGeneratedCaptureURI");
campaign = (Campaign) savedInstanceState.getSerializable("campaign");
} }
} }

View file

@ -28,6 +28,7 @@ public class ContributionsActivity
implements LoaderManager.LoaderCallbacks<Object>, implements LoaderManager.LoaderCallbacks<Object>,
AdapterView.OnItemClickListener, AdapterView.OnItemClickListener,
MediaDetailPagerFragment.MediaDetailProvider, MediaDetailPagerFragment.MediaDetailProvider,
ContributionsListFragment.CurrentCampaignProvider,
FragmentManager.OnBackStackChangedListener { FragmentManager.OnBackStackChangedListener {
@ -256,4 +257,8 @@ public class ContributionsActivity
getSupportActionBar().setDisplayHomeAsUpEnabled(false); getSupportActionBar().setDisplayHomeAsUpEnabled(false);
} }
} }
public Campaign getCurrentCampaign() {
return campaign;
}
} }

View file

@ -19,12 +19,18 @@ import com.actionbarsherlock.view.MenuItem;
import org.wikimedia.commons.*; import org.wikimedia.commons.*;
import org.wikimedia.commons.R; import org.wikimedia.commons.R;
import org.wikimedia.commons.campaigns.Campaign;
public class ContributionsListFragment extends SherlockFragment { public class ContributionsListFragment extends SherlockFragment {
public interface CurrentCampaignProvider {
Campaign getCurrentCampaign();
}
private GridView contributionsList; private GridView contributionsList;
private TextView waitingMessage; private TextView waitingMessage;
private TextView emptyMessage; private TextView emptyMessage;
private Campaign campaign;
private ContributionController controller; private ContributionController controller;
@ -113,7 +119,7 @@ public class ContributionsListFragment extends SherlockFragment {
public void onActivityCreated(Bundle savedInstanceState) { public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState); super.onActivityCreated(savedInstanceState);
controller = new ContributionController(this); controller = new ContributionController(this, ((CurrentCampaignProvider)getActivity()).getCurrentCampaign());
controller.loadState(savedInstanceState); controller.loadState(savedInstanceState);
contributionsList = (GridView)getView().findViewById(R.id.contributionsList); contributionsList = (GridView)getView().findViewById(R.id.contributionsList);

View file

@ -10,6 +10,7 @@ import com.actionbarsherlock.view.MenuItem;
import android.widget.*; import android.widget.*;
import org.wikimedia.commons.*; import org.wikimedia.commons.*;
import org.wikimedia.commons.campaigns.Campaign;
import org.wikimedia.commons.category.CategorizationFragment; import org.wikimedia.commons.category.CategorizationFragment;
import org.wikimedia.commons.contributions.*; import org.wikimedia.commons.contributions.*;
import org.wikimedia.commons.auth.*; import org.wikimedia.commons.auth.*;
@ -149,7 +150,11 @@ public class ShareActivity
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(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); setContentView(R.layout.activity_share);
app = (CommonsApplication)this.getApplicationContext(); app = (CommonsApplication)this.getApplicationContext();

View file

@ -30,6 +30,7 @@ public class UploadService extends HandlerService<Contribution> {
public static final String ACTION_START_SERVICE = EXTRA_PREFIX + ".upload"; public static final String ACTION_START_SERVICE = EXTRA_PREFIX + ".upload";
public static final String EXTRA_SOURCE = EXTRA_PREFIX + ".source"; public static final String EXTRA_SOURCE = EXTRA_PREFIX + ".source";
public static final String EXTRA_CAMPAIGN = EXTRA_PREFIX + ".campaign";
private NotificationManager notificationManager; private NotificationManager notificationManager;
private ContentProviderClient contributionsProviderClient; private ContentProviderClient contributionsProviderClient;