diff --git a/commons/res/layout/activity_share.xml b/commons/res/layout/activity_share.xml
index 5cc94aecc..59d509cc8 100644
--- a/commons/res/layout/activity_share.xml
+++ b/commons/res/layout/activity_share.xml
@@ -12,34 +12,10 @@
android:layout_height="fill_parent"
android:scaleType="centerCrop" />
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/commons/res/layout/fragment_single_upload.xml b/commons/res/layout/fragment_single_upload.xml
new file mode 100644
index 000000000..46170a01c
--- /dev/null
+++ b/commons/res/layout/fragment_single_upload.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
diff --git a/commons/src/main/java/org/wikimedia/commons/ShareActivity.java b/commons/src/main/java/org/wikimedia/commons/ShareActivity.java
index 2f6aa24b0..84c3e6354 100644
--- a/commons/src/main/java/org/wikimedia/commons/ShareActivity.java
+++ b/commons/src/main/java/org/wikimedia/commons/ShareActivity.java
@@ -17,23 +17,23 @@ import org.wikimedia.commons.auth.*;
import org.wikimedia.commons.modifications.PostUploadActivity;
-public class ShareActivity extends AuthenticatedActivity {
+public class ShareActivity extends AuthenticatedActivity implements SingleUploadFragment.OnUploadActionInitiated {
+
+ private SingleUploadFragment shareView;
public ShareActivity() {
super(WikiAccountAuthenticator.COMMONS_ACCOUNT_TYPE);
}
private CommonsApplication app;
-
- private ImageView backgroundImageView;
- private EditText titleEdit;
- private EditText descEdit;
private String source;
private String mimeType;
private Uri mediaUri;
+ private ImageView backgroundImageView;
+
private UploadService uploadService;
private boolean isUploadServiceConnected;
private ServiceConnection uploadServiceConnection = new ServiceConnection() {
@@ -48,6 +48,11 @@ public class ShareActivity extends AuthenticatedActivity {
}
};
+ public void uploadActionInitiated(String title, String description) {
+ StartUploadTask task = new SingleStartUploadTask(ShareActivity.this, uploadService, title, mediaUri, description, mimeType, source);
+ task.execute();
+
+ }
private class SingleStartUploadTask extends StartUploadTask {
@@ -85,29 +90,22 @@ public class ShareActivity extends AuthenticatedActivity {
protected void onAuthCookieAcquired(String authCookie) {
super.onAuthCookieAcquired(authCookie);
app.getApi().setAuthCookie(authCookie);
- Intent intent = getIntent();
- if(intent.getAction().equals(Intent.ACTION_SEND)) {
- mediaUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
- if(intent.hasExtra(UploadService.EXTRA_SOURCE)) {
- source = intent.getStringExtra(UploadService.EXTRA_SOURCE);
- } else {
- source = Contribution.SOURCE_EXTERNAL;
- }
-
- mimeType = intent.getType();
- if(mimeType.startsWith("image/")) {
- ImageLoader.getInstance().displayImage(mediaUri.toString(), backgroundImageView);
- }
- Intent uploadServiceIntent = new Intent(getApplicationContext(), UploadService.class);
- uploadServiceIntent.setAction(UploadService.ACTION_START_SERVICE);
- startService(uploadServiceIntent);
- bindService(uploadServiceIntent, uploadServiceConnection, Context.BIND_AUTO_CREATE);
+ shareView = (SingleUploadFragment) getSupportFragmentManager().findFragmentByTag("shareView");
+ if(shareView == null) {
+ shareView = new SingleUploadFragment();
+ this.getSupportFragmentManager()
+ .beginTransaction()
+ .add(R.id.single_upload_fragment_container, shareView, "shareView")
+ .commit();
}
+
+ Intent uploadServiceIntent = new Intent(getApplicationContext(), UploadService.class);
+ uploadServiceIntent.setAction(UploadService.ACTION_START_SERVICE);
+ startService(uploadServiceIntent);
+ bindService(uploadServiceIntent, uploadServiceConnection, Context.BIND_AUTO_CREATE);
}
-
-
@Override
protected void onAuthFailure() {
@@ -117,8 +115,6 @@ public class ShareActivity extends AuthenticatedActivity {
finish();
}
-
-
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -128,28 +124,23 @@ public class ShareActivity extends AuthenticatedActivity {
app = (CommonsApplication)this.getApplicationContext();
backgroundImageView = (ImageView)findViewById(R.id.backgroundImage);
- titleEdit = (EditText)findViewById(R.id.titleEdit);
- descEdit = (EditText)findViewById(R.id.descEdit);
- TextWatcher uploadEnabler = new TextWatcher() {
- public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) { }
+ Intent intent = getIntent();
- public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {}
-
- public void afterTextChanged(Editable editable) {
- actionMenu.findItem(R.id.menu_upload_single).setEnabled(titleEdit.getText().length() != 0);
+ if(intent.getAction().equals(Intent.ACTION_SEND)) {
+ mediaUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
+ if(intent.hasExtra(UploadService.EXTRA_SOURCE)) {
+ source = intent.getStringExtra(UploadService.EXTRA_SOURCE);
+ } else {
+ source = Contribution.SOURCE_EXTERNAL;
}
- };
- titleEdit.addTextChangedListener(uploadEnabler);
+ mimeType = intent.getType();
+ }
+
+ ImageLoader.getInstance().displayImage(mediaUri.toString(), backgroundImageView);
requestAuthToken();
-
- }
-
- @Override
- protected void onResume() {
- super.onResume();
}
@Override
@@ -160,25 +151,12 @@ public class ShareActivity extends AuthenticatedActivity {
}
}
- private Menu actionMenu;
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getSupportMenuInflater().inflate(R.menu.activity_share, menu);
- actionMenu = menu;
- return true;
- }
-
-
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
- case R.id.menu_upload_single:
- StartUploadTask task = new SingleStartUploadTask(ShareActivity.this, uploadService, titleEdit.getText().toString(), mediaUri, descEdit.getText().toString(), mimeType, source);
- task.execute();
- return true;
}
return super.onOptionsItemSelected(item);
}
diff --git a/commons/src/main/java/org/wikimedia/commons/SingleUploadFragment.java b/commons/src/main/java/org/wikimedia/commons/SingleUploadFragment.java
new file mode 100644
index 000000000..d4cd20be7
--- /dev/null
+++ b/commons/src/main/java/org/wikimedia/commons/SingleUploadFragment.java
@@ -0,0 +1,88 @@
+package org.wikimedia.commons;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.text.Editable;
+import android.text.TextWatcher;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.EditText;
+import com.actionbarsherlock.app.SherlockFragment;
+import com.actionbarsherlock.view.Menu;
+import com.actionbarsherlock.view.MenuInflater;
+import com.actionbarsherlock.view.MenuItem;
+import com.nostra13.universalimageloader.core.ImageLoader;
+import org.wikimedia.commons.contributions.Contribution;
+
+public class SingleUploadFragment extends SherlockFragment {
+
+ public interface OnUploadActionInitiated {
+ void uploadActionInitiated(String title, String description);
+ }
+
+ private EditText titleEdit;
+ private EditText descEdit;
+
+ private OnUploadActionInitiated uploadActionInitiatedHandler;
+
+ private Menu actionMenu;
+
+ @Override
+ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+ inflater.inflate(R.menu.activity_share, menu);
+ actionMenu = menu;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.menu_upload_single:
+ uploadActionInitiatedHandler.uploadActionInitiated(titleEdit.getText().toString(), descEdit.getText().toString());
+ return true;
+
+ }
+ return super.onOptionsItemSelected(item);
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ View rootView = inflater.inflate(R.layout.fragment_single_upload, null);
+
+ titleEdit = (EditText)rootView.findViewById(R.id.titleEdit);
+ descEdit = (EditText)rootView.findViewById(R.id.descEdit);
+
+ TextWatcher uploadEnabler = new TextWatcher() {
+ public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) { }
+
+ public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {}
+
+ public void afterTextChanged(Editable editable) {
+ if(actionMenu == null) {
+ getSherlockActivity().invalidateOptionsMenu();
+ }
+ actionMenu.findItem(R.id.menu_upload_single).setEnabled(titleEdit.getText().length() != 0);
+ }
+ };
+
+ titleEdit.addTextChangedListener(uploadEnabler);
+
+ return rootView;
+ }
+
+
+ @Override
+ public void onAttach(Activity activity) {
+ super.onAttach(activity);
+ uploadActionInitiatedHandler = (OnUploadActionInitiated) activity;
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setHasOptionsMenu(true);
+ }
+}