Add post-upload categorization to Multiple Upload

Some of the related changes snuck in last commit too
This commit is contained in:
YuviPanda 2013-03-31 09:17:21 +05:30
parent 87c09c344b
commit da6e035878
6 changed files with 51 additions and 11 deletions

View file

@ -16,11 +16,6 @@
android:id="@+id/single_upload_fragment_container" android:id="@+id/single_upload_fragment_container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="#AA000000"
android:paddingBottom="8dip"
android:paddingLeft="16dip"
android:paddingRight="16dip"
android:paddingTop="8dip"
/> />
</FrameLayout> </FrameLayout>

View file

@ -3,7 +3,13 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:orientation="vertical"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent"
android:background="#AA000000"
android:paddingBottom="8dip"
android:paddingLeft="16dip"
android:paddingRight="16dip"
android:paddingTop="8dip"
>
<FrameLayout <FrameLayout
android:layout_height="wrap_content" android:layout_height="wrap_content"

View file

@ -4,7 +4,13 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_gravity="fill" android:layout_gravity="fill"
android:orientation="vertical"> android:orientation="vertical"
android:background="#AA000000"
android:paddingBottom="8dip"
android:paddingLeft="16dip"
android:paddingRight="16dip"
android:paddingTop="8dip"
>
<EditText <EditText
android:id="@+id/titleEdit" android:id="@+id/titleEdit"

View file

@ -15,6 +15,7 @@
/> />
<RelativeLayout <RelativeLayout
android:id="@+id/uploadOverlay"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center|bottom" android:layout_gravity="center|bottom"

View file

@ -17,18 +17,23 @@ import com.actionbarsherlock.view.MenuItem;
import org.wikimedia.commons.auth.*; import org.wikimedia.commons.auth.*;
import org.wikimedia.commons.contributions.*; import org.wikimedia.commons.contributions.*;
import org.wikimedia.commons.media.*; import org.wikimedia.commons.media.*;
import org.wikimedia.commons.modifications.CategoryModifier;
import org.wikimedia.commons.modifications.ModificationsContentProvider;
import org.wikimedia.commons.modifications.ModifierSequence;
public class MultipleShareActivity public class MultipleShareActivity
extends AuthenticatedActivity extends AuthenticatedActivity
implements MediaDetailPagerFragment.MediaDetailProvider, implements MediaDetailPagerFragment.MediaDetailProvider,
AdapterView.OnItemClickListener, AdapterView.OnItemClickListener,
FragmentManager.OnBackStackChangedListener, FragmentManager.OnBackStackChangedListener,
MultipleUploadListFragment.OnMultipleUploadInitiatedHandler { MultipleUploadListFragment.OnMultipleUploadInitiatedHandler,
CategorizationFragment.OnCategoriesSaveHandler {
private CommonsApplication app; private CommonsApplication app;
private ArrayList<Contribution> photosList = null; private ArrayList<Contribution> photosList = null;
private MultipleUploadListFragment uploadsList; private MultipleUploadListFragment uploadsList;
private MediaDetailPagerFragment mediaDetails; private MediaDetailPagerFragment mediaDetails;
private CategorizationFragment categorizationFragment;
public MultipleShareActivity() { public MultipleShareActivity() {
@ -61,6 +66,26 @@ public class MultipleShareActivity
public void OnMultipleUploadInitiated() { public void OnMultipleUploadInitiated() {
StartMultipleUploadTask startUploads = new StartMultipleUploadTask(); StartMultipleUploadTask startUploads = new StartMultipleUploadTask();
Utils.executeAsyncTask(startUploads); Utils.executeAsyncTask(startUploads);
uploadsList.setImageOnlyMode(true);
categorizationFragment = (CategorizationFragment) this.getSupportFragmentManager().findFragmentByTag("categorization");
if(categorizationFragment == null) {
categorizationFragment = new CategorizationFragment();
}
getSupportFragmentManager().beginTransaction()
.add(R.id.uploadsFragmentContainer, categorizationFragment, "categorization")
.commit();
}
public void onCategoriesSave(ArrayList<String> categories) {
ContentProviderClient client = getContentResolver().acquireContentProviderClient(ModificationsContentProvider.AUTHORITY);
for(Contribution contribution: photosList) {
ModifierSequence categoriesSequence = new ModifierSequence(contribution.getContentUri());
categoriesSequence.queueModifier(new CategoryModifier(categories.toArray(new String[]{})));
categoriesSequence.setContentProviderClient(client);
categoriesSequence.save();
}
finish();
} }
private class StartMultipleUploadTask extends AsyncTask<Void, Integer, Void> { private class StartMultipleUploadTask extends AsyncTask<Void, Integer, Void> {
@ -115,7 +140,6 @@ public class MultipleShareActivity
dialog.dismiss(); dialog.dismiss();
Toast startingToast = Toast.makeText(getApplicationContext(), R.string.uploading_started, Toast.LENGTH_LONG); Toast startingToast = Toast.makeText(getApplicationContext(), R.string.uploading_started, Toast.LENGTH_LONG);
startingToast.show(); startingToast.show();
finish();
} }
} }

View file

@ -41,6 +41,8 @@ public class MultipleUploadListFragment extends SherlockFragment {
ImageView image; ImageView image;
TextView title; TextView title;
RelativeLayout overlay;
} }
private class PhotoDisplayAdapter extends BaseAdapter { private class PhotoDisplayAdapter extends BaseAdapter {
@ -65,6 +67,7 @@ public class MultipleUploadListFragment extends SherlockFragment {
holder = new UploadHolderView(); holder = new UploadHolderView();
holder.image = (ImageView) view.findViewById(R.id.uploadImage); holder.image = (ImageView) view.findViewById(R.id.uploadImage);
holder.title = (TextView) view.findViewById(R.id.uploadTitle); holder.title = (TextView) view.findViewById(R.id.uploadTitle);
holder.overlay = (RelativeLayout) view.findViewById(R.id.uploadOverlay);
holder.image.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, photoSize.y)); holder.image.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, photoSize.y));
@ -81,7 +84,12 @@ public class MultipleUploadListFragment extends SherlockFragment {
holder.imageUri = up.getLocalUri(); holder.imageUri = up.getLocalUri();
} }
holder.title.setText(up.getFilename()); if(!imageOnlyMode) {
holder.overlay.setVisibility(View.VISIBLE);
holder.title.setText(up.getFilename());
} else {
holder.overlay.setVisibility(View.GONE);
}
return view; return view;
@ -126,7 +134,7 @@ public class MultipleUploadListFragment extends SherlockFragment {
} else { } else {
baseTitle.setVisibility(View.VISIBLE); baseTitle.setVisibility(View.VISIBLE);
} }
photosAdapter.notifyDataSetInvalidated(); photosAdapter.notifyDataSetChanged();
} }
@Override @Override