From: David A. Velasco Date: Thu, 13 Nov 2014 11:21:49 +0000 (+0100) Subject: Merge pull request #685 from tobiasKaminsky/beautifyTimestamps X-Git-Tag: oc-android-1.7.0_signed~108 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/1b36e1ca089dc7e2b40254928215dcb408cd4c41?hp=02a11c3b910665eb859cf7d14e632caf5d473e37 Merge pull request #685 from tobiasKaminsky/beautifyTimestamps Relative time stamps in the list of files. --- diff --git a/owncloud-android-library b/owncloud-android-library index 4f315c7e..5bd0d738 160000 --- a/owncloud-android-library +++ b/owncloud-android-library @@ -1 +1 @@ -Subproject commit 4f315c7e06f6eef48df246be0ee9252fdfccdf00 +Subproject commit 5bd0d7387712ce3f53869294761ac4d8537841cd diff --git a/res/values/strings.xml b/res/values/strings.xml index 2655e29f..d8f1e930 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -62,6 +62,7 @@ No content was received. Nothing to upload. %1$s is not allowed to access the shared content Uploading + seconds ago Nothing in here. Upload something! Loading... There are no files in this folder. diff --git a/src/com/owncloud/android/ui/adapter/FileListListAdapter.java b/src/com/owncloud/android/ui/adapter/FileListListAdapter.java index e002efb7..10356320 100644 --- a/src/com/owncloud/android/ui/adapter/FileListListAdapter.java +++ b/src/com/owncloud/android/ui/adapter/FileListListAdapter.java @@ -29,6 +29,7 @@ import android.content.Context; import android.content.SharedPreferences; import android.graphics.Bitmap; import android.preference.PreferenceManager; +import android.text.format.DateUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -46,6 +47,7 @@ import com.owncloud.android.datamodel.ThumbnailsCacheManager; import com.owncloud.android.datamodel.ThumbnailsCacheManager.AsyncDrawable; import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder; import com.owncloud.android.files.services.FileUploader.FileUploaderBinder; +import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.ui.activity.ComponentsGetter; import com.owncloud.android.utils.DisplayUtils; import com.owncloud.android.utils.FileStorageUtils; @@ -183,9 +185,7 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { fileSizeV.setVisibility(View.VISIBLE); fileSizeV.setText(DisplayUtils.bytesToHumanReadable(file.getFileLength())); lastModV.setVisibility(View.VISIBLE); - lastModV.setText( - DisplayUtils.unixTimeToHumanReadable(file.getModificationTimestamp()) - ); + lastModV.setText(showRelativeTimestamp(file)); // this if-else is needed even thoe fav icon is visible by default // because android reuses views in listview if (!file.keepInSync()) { @@ -253,9 +253,7 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { // } lastModV.setVisibility(View.VISIBLE); - lastModV.setText( - DisplayUtils.unixTimeToHumanReadable(file.getModificationTimestamp()) - ); + lastModV.setText(showRelativeTimestamp(file)); checkBoxV.setVisibility(View.GONE); view.findViewById(R.id.imageView3).setVisibility(View.GONE); @@ -517,5 +515,10 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { mSortAscending = ascending; sortDirectory(); - } + } + + private CharSequence showRelativeTimestamp(OCFile file){ + return DisplayUtils.getRelativeDateTimeString(mContext, file.getModificationTimestamp(), + DateUtils.SECOND_IN_MILLIS, DateUtils.WEEK_IN_MILLIS, 0); + } } diff --git a/src/com/owncloud/android/utils/DisplayUtils.java b/src/com/owncloud/android/utils/DisplayUtils.java index 804a4dd0..d8bf88f3 100644 --- a/src/com/owncloud/android/utils/DisplayUtils.java +++ b/src/com/owncloud/android/utils/DisplayUtils.java @@ -27,7 +27,10 @@ import java.util.HashSet; import java.util.Set; import android.annotation.TargetApi; +import android.content.Context; import android.os.Build; +import android.text.format.DateFormat; +import android.text.format.DateUtils; import com.owncloud.android.MainApp; import com.owncloud.android.R; @@ -274,4 +277,30 @@ public class DisplayUtils { return url; } } + + public static CharSequence getRelativeDateTimeString(Context c, long time, long minResolution, long transitionResolution, int flags){ + CharSequence dateString = ""; + + // in Future + if (time > System.currentTimeMillis()){ + return DisplayUtils.unixTimeToHumanReadable(time); + } + // < 60 seconds -> seconds ago + else if ((System.currentTimeMillis() - time) < 60 * 1000) { + return c.getString(R.string.file_list_seconds_ago); + } else { + // Workaround 2.x bug (see https://github.com/owncloud/android/issues/716) + if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.HONEYCOMB && (System.currentTimeMillis() - time) > 24 * 60 * 60 * 1000){ + Date date = new Date(time); + date.setHours(0); + date.setMinutes(0); + date.setSeconds(0); + dateString = DateUtils.getRelativeDateTimeString(c, date.getTime(), minResolution, transitionResolution, flags); + } else { + dateString = DateUtils.getRelativeDateTimeString(c, time, minResolution, transitionResolution, flags); + } + } + + return dateString.toString().split(",")[0]; + } }