diff --git a/commons/res/layout/layout_contribution.xml b/commons/res/layout/layout_contribution.xml
index 063109e57..fa10bfd3f 100644
--- a/commons/res/layout/layout_contribution.xml
+++ b/commons/res/layout/layout_contribution.xml
@@ -11,21 +11,29 @@
android:scaleType="centerCrop"
/>
-
+ android:background="#AA000000"
+ android:padding="10dp"
+ >
-
+
+
\ 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 fa1a4c25b..2725bcb4b 100644
--- a/commons/src/main/java/org/wikimedia/commons/UploadService.java
+++ b/commons/src/main/java/org/wikimedia/commons/UploadService.java
@@ -1,6 +1,7 @@
package org.wikimedia.commons;
import java.io.*;
+import java.text.*;
import java.util.Date;
import android.support.v4.content.LocalBroadcastManager;
@@ -263,10 +264,19 @@ public class UploadService extends IntentService {
Log.d("Commons", "Response is" + CommonsApplication.getStringFromDOM(result.getDocument()));
stopForeground(true);
curProgressNotification = null;
-
+
+ SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); // Assuming MW always gives me UTC
+
+
String descUrl = result.getString("/api/upload/imageinfo/@descriptionurl");
-
- Intent openUploadedPageIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(descUrl));
+ Date dateUploaded = null;
+ try {
+ dateUploaded = isoFormat.parse(result.getString("/api/upload/imageinfo/@timestamp"));
+ } catch (java.text.ParseException e) {
+ throw new RuntimeException(e); // Hopefully mediawiki doesn't give me bogus stuff?
+ }
+
+ Intent openUploadedPageIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(descUrl));
Notification doneNotification = new NotificationCompat.Builder(this)
.setAutoCancel(true)
.setSmallIcon(R.drawable.ic_launcher)
@@ -278,6 +288,7 @@ public class UploadService extends IntentService {
notificationManager.notify(notificationTag, NOTIFICATION_DOWNLOAD_COMPLETE, doneNotification);
contribution.setState(Contribution.STATE_COMPLETED);
+ contribution.setDateUploaded(dateUploaded);
contribution.save();
}
}
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 7707e2a6f..ab5ed8bbc 100644
--- a/commons/src/main/java/org/wikimedia/commons/contributions/Contribution.java
+++ b/commons/src/main/java/org/wikimedia/commons/contributions/Contribution.java
@@ -47,6 +47,10 @@ public class Contribution extends Media {
this.state = state;
}
+ public void setDateUploaded(Date date) {
+ this.dateUploaded = date;
+ }
+
public String getPageContents() {
StringBuffer buffer = new StringBuffer();
SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd");
@@ -93,6 +97,9 @@ public class Contribution extends Media {
if(getRemoteUri() != null) {
cv.put(Table.COLUMN_REMOTE_URI, getRemoteUri().toString());
}
+ if(getDateUploaded() != null) {
+ cv.put(Table.COLUMN_UPLOADED, getDateUploaded().getTime());
+ }
cv.put(Table.COLUMN_LENGTH, getDataLength());
cv.put(Table.COLUMN_TIMESTAMP, getTimestamp().getTime());
cv.put(Table.COLUMN_STATE, getState());
@@ -110,8 +117,7 @@ public class Contribution extends Media {
public static final String COLUMN_TIMESTAMP = "timestamp";
public static final String COLUMN_STATE = "state";
public static final String COLUMN_LENGTH = "length";
-
-
+ public static final String COLUMN_UPLOADED = "uploaded";
private static final String CREATE_TABLE_STATEMENT = "CREATE TABLE " + TABLE_NAME + " ("
@@ -119,6 +125,7 @@ public class Contribution extends Media {
+ "filename STRING,"
+ "local_uri STRING,"
+ "remote_uri STRING,"
+ + "uploaded INTEGER,"
+ "timestamp INTEGER,"
+ "state INTEGER,"
+ "length 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 d7fbf863e..2dca71efd 100644
--- a/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsActivity.java
+++ b/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsActivity.java
@@ -31,6 +31,9 @@ import org.wikimedia.commons.UploadService;
import org.wikimedia.commons.auth.AuthenticatedActivity;
import org.wikimedia.commons.auth.WikiAccountAuthenticator;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
// Inherit from SherlockFragmentActivity but not use Fragments. Because Loaders are available only from FragmentActivities
public class ContributionsActivity extends AuthenticatedActivity implements LoaderManager.LoaderCallbacks {
@@ -42,10 +45,14 @@ public class ContributionsActivity extends AuthenticatedActivity implements Load
private final int COLUMN_FILENAME;
private final int COLUMN_LOCALURI;
+ private final int COLUMN_STATE;
+ private final int COLUMN_UPLOADED;
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);
}
@Override
@@ -56,13 +63,23 @@ public class ContributionsActivity extends AuthenticatedActivity implements Load
@Override
public void bindView(View view, Context context, Cursor cursor) {
ImageView image = (ImageView)view.findViewById(R.id.contributionImage);
- TextView title = (TextView)view.findViewById(R.id.contributionTitle);
+ TextView titleView = (TextView)view.findViewById(R.id.contributionTitle);
+ TextView stateView = (TextView)view.findViewById(R.id.contributionState);
Uri imageUri = Uri.parse(cursor.getString(COLUMN_LOCALURI));
+ int state = cursor.getInt(COLUMN_STATE);
ImageLoader.getInstance().displayImage(imageUri.toString(), image, contributionDisplayOptions);
- title.setText(cursor.getString(COLUMN_FILENAME));
+ titleView.setText(cursor.getString(COLUMN_FILENAME));
+ if(state == Contribution.STATE_COMPLETED) {
+ Date uploaded = new Date(cursor.getLong(COLUMN_UPLOADED));
+ stateView.setText(SimpleDateFormat.getDateInstance().format(uploaded));
+ } else if(state == Contribution.STATE_QUEUED) {
+ stateView.setText("Queued");
+ } else if(state == Contribution.STATE_IN_PROGRESS) {
+ stateView.setText("Uploading");
+ }
}
}
@@ -82,7 +99,8 @@ public class ContributionsActivity extends AuthenticatedActivity implements Load
Contribution.Table.COLUMN_ID,
Contribution.Table.COLUMN_FILENAME,
Contribution.Table.COLUMN_LOCAL_URI,
- Contribution.Table.COLUMN_STATE
+ Contribution.Table.COLUMN_STATE,
+ Contribution.Table.COLUMN_UPLOADED
};
private String CONTRIBUTION_SELECTION = "";