diff --git a/commons/res/values/strings.xml b/commons/res/values/strings.xml
index b9201bcca..18f7d8095 100644
--- a/commons/res/values/strings.xml
+++ b/commons/res/values/strings.xml
@@ -39,7 +39,8 @@
My Contributions
Queued
Failed
- Uploading
+ %1$d%% complete
+ Uploading
From Gallery
Take Photo
\ No newline at end of file
diff --git a/commons/src/main/java/org/wikimedia/commons/UploadService.java b/commons/src/main/java/org/wikimedia/commons/UploadService.java
index dfc0c68b2..16c6fb85f 100644
--- a/commons/src/main/java/org/wikimedia/commons/UploadService.java
+++ b/commons/src/main/java/org/wikimedia/commons/UploadService.java
@@ -4,7 +4,6 @@ import java.io.*;
import java.text.*;
import java.util.Date;
-import android.support.v4.content.LocalBroadcastManager;
import org.mediawiki.api.*;
import org.wikimedia.commons.contributions.Contribution;
import org.wikimedia.commons.contributions.ContributionsActivity;
@@ -26,10 +25,6 @@ import android.net.*;
public class UploadService extends IntentService {
private static final String EXTRA_PREFIX = "org.wikimedia.commons.upload";
- public static final String INTENT_CONTRIBUTION_STATE_CHANGED = EXTRA_PREFIX + ".progress";
- public static final String EXTRA_CONTRIBUTION_ID = EXTRA_PREFIX + ".filename";
- public static final String EXTRA_TRANSFERRED_BYTES = EXTRA_PREFIX + ".progress.transferred";
-
public static final String EXTRA_MEDIA_URI = EXTRA_PREFIX + ".uri";
public static final String EXTRA_TARGET_FILENAME = EXTRA_PREFIX + ".filename";
@@ -38,7 +33,6 @@ public class UploadService extends IntentService {
public static final String EXTRA_MIMETYPE = EXTRA_PREFIX + ".mimetype";
private NotificationManager notificationManager;
- private LocalBroadcastManager localBroadcastManager;
private ContentProviderClient contributionsProviderClient;
private CommonsApplication app;
@@ -91,7 +85,6 @@ public class UploadService extends IntentService {
}
notificationTitleChanged = true;
contribution.setState(Contribution.STATE_IN_PROGRESS);
- contribution.save();
}
if(transferred == total) {
// Completed!
@@ -100,12 +93,9 @@ public class UploadService extends IntentService {
} else {
curNotification.contentView.setProgressBar(R.id.uploadNotificationProgress, 100, (int) (((double) transferred / (double) total) * 100), false);
notificationManager.notify(NOTIFICATION_DOWNLOAD_IN_PROGRESS, curNotification);
-
- Intent mediaUploadProgressIntent = new Intent(INTENT_CONTRIBUTION_STATE_CHANGED);
- // mediaUploadProgressIntent.putExtra(EXTRA_MEDIA contribution);
- mediaUploadProgressIntent.putExtra(EXTRA_TRANSFERRED_BYTES, transferred);
- localBroadcastManager.sendBroadcast(mediaUploadProgressIntent);
}
+ contribution.setTransferred(transferred);
+ contribution.save();
}
}
@@ -121,7 +111,6 @@ public class UploadService extends IntentService {
public void onCreate() {
super.onCreate();
notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
- localBroadcastManager = LocalBroadcastManager.getInstance(this);
app = (CommonsApplication) this.getApplicationContext();
contributionsProviderClient = this.getContentResolver().acquireContentProviderClient(ContributionsContentProvider.AUTHORITY);
}
@@ -184,7 +173,6 @@ public class UploadService extends IntentService {
Intent mediaUploadQueuedIntent = new Intent();
mediaUploadQueuedIntent.putExtra("dummy-data", contribution); // FIXME: Move to separate handler, do not inherit from IntentService
- localBroadcastManager.sendBroadcast(mediaUploadQueuedIntent);
return super.onStartCommand(mediaUploadQueuedIntent, flags, startId);
}
diff --git a/commons/src/main/java/org/wikimedia/commons/contributions/Contribution.java b/commons/src/main/java/org/wikimedia/commons/contributions/Contribution.java
index b28bfec21..e02ab22f1 100644
--- a/commons/src/main/java/org/wikimedia/commons/contributions/Contribution.java
+++ b/commons/src/main/java/org/wikimedia/commons/contributions/Contribution.java
@@ -21,10 +21,23 @@ public class Contribution extends Media {
private ContentProviderClient client;
private Uri contentUri;
+ public long getTransferred() {
+ return transferred;
+ }
+
+ public void setTransferred(long transferred) {
+ this.transferred = transferred;
+ }
+
+ private long transferred;
+
public String getEditSummary() {
return editSummary;
}
+ public Uri getContentUri() {
+ return contentUri;
+ }
private String editSummary;
public Date getTimestamp() {
@@ -104,6 +117,7 @@ public class Contribution extends Media {
cv.put(Table.COLUMN_LENGTH, getDataLength());
cv.put(Table.COLUMN_TIMESTAMP, getTimestamp().getTime());
cv.put(Table.COLUMN_STATE, getState());
+ cv.put(Table.COLUMN_TRANSFERRED, transferred);
return cv;
}
@@ -119,6 +133,7 @@ public class Contribution extends Media {
public static final String COLUMN_STATE = "state";
public static final String COLUMN_LENGTH = "length";
public static final String COLUMN_UPLOADED = "uploaded";
+ public static final String COLUMN_TRANSFERRED = "transferred"; // Currently transferred number of bytes
private static final String CREATE_TABLE_STATEMENT = "CREATE TABLE " + TABLE_NAME + " ("
@@ -129,7 +144,8 @@ public class Contribution extends Media {
+ "uploaded INTEGER,"
+ "timestamp INTEGER,"
+ "state INTEGER,"
- + "length INTEGER"
+ + "length INTEGER,"
+ + "transferred INTEGER"
+ ");";
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 082976820..db8c28c6e 100644
--- a/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsActivity.java
+++ b/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsActivity.java
@@ -7,7 +7,6 @@ import android.provider.MediaStore;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
-import android.content.BroadcastReceiver;
import android.content.*;
import android.database.Cursor;
import android.os.Bundle;
@@ -50,6 +49,8 @@ public class ContributionsActivity extends AuthenticatedActivity implements Load
private final static int SELECT_FROM_GALLERY = 1;
private final static int SELECT_FROM_CAMERA = 2;
+ private TextView progressUpdateTextView;
+
public ContributionsActivity() {
super(WikiAccountAuthenticator.COMMONS_ACCOUNT_TYPE);
}
@@ -60,12 +61,17 @@ public class ContributionsActivity extends AuthenticatedActivity implements Load
private final int COLUMN_LOCALURI;
private final int COLUMN_STATE;
private final int COLUMN_UPLOADED;
+ private final int COLUMN_TRANSFERRED;
+ private final int COLUMN_LENGTH;
+
public ContributionAdapter(Context context, Cursor c, int flags) {
super(context, c, flags);
COLUMN_FILENAME = c.getColumnIndex(Contribution.Table.COLUMN_FILENAME);
COLUMN_STATE = c.getColumnIndex(Contribution.Table.COLUMN_STATE);
COLUMN_LOCALURI = c.getColumnIndex(Contribution.Table.COLUMN_LOCAL_URI);
COLUMN_UPLOADED = c.getColumnIndex(Contribution.Table.COLUMN_UPLOADED);
+ COLUMN_LENGTH = c.getColumnIndex(Contribution.Table.COLUMN_LENGTH);
+ COLUMN_TRANSFERRED = c.getColumnIndex(Contribution.Table.COLUMN_TRANSFERRED);
}
@Override
@@ -97,7 +103,11 @@ public class ContributionsActivity extends AuthenticatedActivity implements Load
stateView.setText(R.string.contribution_state_queued);
break;
case Contribution.STATE_IN_PROGRESS:
- stateView.setText(R.string.contribution_state_in_progress);
+ stateView.setText(R.string.contribution_state_starting);
+ long total = cursor.getLong(COLUMN_LENGTH);
+ long transferred = cursor.getLong(COLUMN_TRANSFERRED);
+ String stateString = String.format(getString(R.string.contribution_state_in_progress), (int)(((double)transferred / (double)total) * 100));
+ stateView.setText(stateString);
break;
case Contribution.STATE_FAILED:
stateView.setText(R.string.contribution_state_failed);
@@ -106,24 +116,20 @@ public class ContributionsActivity extends AuthenticatedActivity implements Load
}
}
- private LocalBroadcastManager localBroadcastManager;
-
private GridView contributionsList;
private ContributionAdapter contributionsAdapter;
private DisplayImageOptions contributionDisplayOptions;
- private String[] broadcastsToReceive = {
- UploadService.INTENT_CONTRIBUTION_STATE_CHANGED
- };
-
private String[] CONTRIBUTIONS_PROJECTION = {
Contribution.Table.COLUMN_ID,
Contribution.Table.COLUMN_FILENAME,
Contribution.Table.COLUMN_LOCAL_URI,
Contribution.Table.COLUMN_STATE,
- Contribution.Table.COLUMN_UPLOADED
+ Contribution.Table.COLUMN_UPLOADED,
+ Contribution.Table.COLUMN_LENGTH,
+ Contribution.Table.COLUMN_TRANSFERRED
};
private String CONTRIBUTION_SELECTION = "";
@@ -137,26 +143,14 @@ public class ContributionsActivity extends AuthenticatedActivity implements Load
*/
private String CONTRIBUTION_SORT = Contribution.Table.COLUMN_STATE + " DESC, (" + Contribution.Table.COLUMN_TIMESTAMP + " * " + Contribution.Table.COLUMN_STATE + ")";
- private BroadcastReceiver messageReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- }
- };
-
@Override
protected void onResume() {
super.onResume();
- for(int i=0; i < broadcastsToReceive.length; i++) {
- localBroadcastManager.registerReceiver(messageReceiver, new IntentFilter(broadcastsToReceive[i]));
- }
}
@Override
protected void onPause() {
super.onPause();
- for(int i=0; i < broadcastsToReceive.length; i++) {
- localBroadcastManager.unregisterReceiver(messageReceiver);
- }
}
@Override
@@ -177,7 +171,6 @@ public class ContributionsActivity extends AuthenticatedActivity implements Load
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle(R.string.title_activity_contributions);
- localBroadcastManager = LocalBroadcastManager.getInstance(this);
setContentView(R.layout.activity_contributions);
contributionsList = (GridView)findViewById(R.id.contributionsList);