From da92ec7235f30a81e7cf7b0900d1a12ef5132a09 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Sat, 2 Feb 2013 15:22:25 +0530 Subject: [PATCH] Show uploaded date in my contributions --- commons/res/layout/layout_contribution.xml | 20 +++++++++++----- .../org/wikimedia/commons/UploadService.java | 17 ++++++++++--- .../commons/contributions/Contribution.java | 11 +++++++-- .../contributions/ContributionsActivity.java | 24 ++++++++++++++++--- 4 files changed, 58 insertions(+), 14 deletions(-) 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 = "";