kopia lustrzana https://github.com/ryukoposting/Signal-Android
				
				
				
			
							rodzic
							
								
									8031c788d9
								
							
						
					
					
						commit
						0fd52ad1fe
					
				|  | @ -0,0 +1,13 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <resources> | ||||
|     <plurals name="minutes_ago"> | ||||
|         <item quantity="one">@string/plurals__one_minute</item> | ||||
|         <item quantity="other">@string/plurals__many_minutes</item> | ||||
|     </plurals> | ||||
| 
 | ||||
|     <plurals name="hours_ago"> | ||||
|         <item quantity="one">@string/plurals__one_hour</item> | ||||
|         <item quantity="other">@string/plurals__many_hours</item> | ||||
|     </plurals> | ||||
| 
 | ||||
| </resources> | ||||
|  | @ -142,6 +142,9 @@ | |||
|     <!-- ConversationListItem --> | ||||
|     <string name="ConversationListItem_key_exchange_message">Key exchange message...</string> | ||||
| 
 | ||||
|     <!-- DateUtils --> | ||||
|     <string name="DateUtils_now">Now</string> | ||||
| 
 | ||||
|     <!-- ShareActivity --> | ||||
|     <string name="ShareActivity_share_with">Share with</string> | ||||
| 
 | ||||
|  | @ -652,6 +655,13 @@ | |||
|     <string name="arrays__import_export">Import / export</string> | ||||
|     <string name="arrays__my_identity_key">My identity key</string> | ||||
| 
 | ||||
|     <!-- plurals.xml --> | ||||
|     <string name="plurals__one_minute">%d min</string> | ||||
|     <string name="plurals__many_minutes">%d mins</string> | ||||
|     <string name="plurals__one_hour">%d hour</string> | ||||
|     <string name="plurals__many_hours">%d hours</string> | ||||
| 
 | ||||
| 
 | ||||
|     <!-- preferences.xml --> | ||||
|     <string name="preferences__general">General</string> | ||||
|     <string name="preferences__sms_mms">SMS and MMS</string> | ||||
|  |  | |||
|  | @ -309,7 +309,7 @@ public class ConversationItem extends LinearLayout { | |||
|       if (messageRecord.isPush()) timestamp = messageRecord.getDateSent(); | ||||
|       else                        timestamp = messageRecord.getDateReceived(); | ||||
| 
 | ||||
|       dateText.setText(DateUtils.getBetterRelativeTimeSpanString(getContext(), timestamp)); | ||||
|       dateText.setText(DateUtils.getExtendedRelativeTimeSpanString(getContext(), timestamp)); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|  |  | |||
|  | @ -112,10 +112,7 @@ public class ConversationListItem extends RelativeLayout | |||
|     this.subjectView.setTypeface(read ? LIGHT_TYPEFACE : BOLD_TYPEFACE); | ||||
| 
 | ||||
|     if (thread.getDate() > 0) { | ||||
|       CharSequence date = DateUtils.getRelativeTimeSpanString(thread.getDate(), | ||||
|                                                               System.currentTimeMillis(), | ||||
|                                                               DateUtils.MINUTE_IN_MILLIS, | ||||
|                                                               DateUtils.FORMAT_ABBREV_RELATIVE); | ||||
|       CharSequence date = DateUtils.getBriefRelativeTimeSpanString(context, thread.getDate()); | ||||
|       dateView.setText(read ? date : color(getResources().getColor(R.color.textsecure_primary), date)); | ||||
|       dateView.setTypeface(read ? LIGHT_TYPEFACE : BOLD_TYPEFACE); | ||||
|     } | ||||
|  |  | |||
|  | @ -18,34 +18,57 @@ package org.thoughtcrime.securesms.util; | |||
| 
 | ||||
| import android.content.Context; | ||||
| 
 | ||||
| import org.thoughtcrime.securesms.R; | ||||
| 
 | ||||
| import java.util.concurrent.TimeUnit; | ||||
| 
 | ||||
| /** | ||||
|  * Utility methods to help display dates in a nice, easily readable way. | ||||
|  */ | ||||
| public class DateUtils extends android.text.format.DateUtils { | ||||
| 
 | ||||
|   private final static long DAY_IN_MILLIS  = 86400000L; | ||||
|   private final static long WEEK_IN_MILLIS = 7 * DAY_IN_MILLIS; | ||||
|   private final static long YEAR_IN_MILLIS = (long)(52.1775 * WEEK_IN_MILLIS); | ||||
| 
 | ||||
|   private static boolean isWithinWeek(final long millis) { | ||||
|     return System.currentTimeMillis() - millis <= (WEEK_IN_MILLIS - DAY_IN_MILLIS); | ||||
|   private static boolean isWithin(final long millis, final long span, final TimeUnit unit) { | ||||
|     return System.currentTimeMillis() - millis <= unit.toMillis(span); | ||||
|   } | ||||
| 
 | ||||
|   private static boolean isWithinYear(final long millis) { | ||||
|     return System.currentTimeMillis() - millis <= YEAR_IN_MILLIS; | ||||
|   private static int convertDelta(final long millis, TimeUnit to) { | ||||
|     return (int) to.convert(System.currentTimeMillis() - millis, TimeUnit.MILLISECONDS); | ||||
|   } | ||||
| 
 | ||||
|   public static String getBetterRelativeTimeSpanString(final Context c, final long millis) { | ||||
|     int formatFlags = DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_ABBREV_TIME; | ||||
|     if (!isToday(millis)) { | ||||
|       if (isWithinWeek(millis)) { | ||||
|   public static String getBriefRelativeTimeSpanString(final Context c, final long timestamp) { | ||||
|     if (isWithin(timestamp, 1, TimeUnit.MINUTES)) { | ||||
|       return c.getString(R.string.DateUtils_now); | ||||
|     } else if (isWithin(timestamp, 1, TimeUnit.HOURS)) { | ||||
|       int mins = convertDelta(timestamp, TimeUnit.MINUTES); | ||||
|       return c.getResources().getQuantityString(R.plurals.minutes_ago, mins, mins); | ||||
|     } else if (isWithin(timestamp, 1, TimeUnit.DAYS)) { | ||||
|       int hours = convertDelta(timestamp, TimeUnit.HOURS); | ||||
|       return c.getResources().getQuantityString(R.plurals.hours_ago, hours, hours); | ||||
|     } else if (isWithin(timestamp, 6, TimeUnit.DAYS)) { | ||||
|       return formatDateTime(c, timestamp, DateUtils.FORMAT_SHOW_WEEKDAY | DateUtils.FORMAT_ABBREV_WEEKDAY); | ||||
|     } else if (isWithin(timestamp, 365, TimeUnit.DAYS)) { | ||||
|       return formatDateTime(c, timestamp, DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_NO_YEAR | DateUtils.FORMAT_ABBREV_ALL); | ||||
|     } else { | ||||
|       return formatDateTime(c, timestamp, DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_ALL); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   public static String getExtendedRelativeTimeSpanString(final Context c, final long timestamp) { | ||||
|     if (isWithin(timestamp, 1, TimeUnit.MINUTES)) { | ||||
|       return c.getString(R.string.DateUtils_now); | ||||
|     } else if (isWithin(timestamp, 1, TimeUnit.HOURS)) { | ||||
|       int mins = (int)TimeUnit.MINUTES.convert(System.currentTimeMillis() - timestamp, TimeUnit.MILLISECONDS); | ||||
|       return c.getResources().getQuantityString(R.plurals.minutes_ago, mins, mins); | ||||
|     } else { | ||||
|       int formatFlags = DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_ABBREV_TIME; | ||||
|       if (isWithin(timestamp, 6, TimeUnit.DAYS)) { | ||||
|         formatFlags |= DateUtils.FORMAT_SHOW_WEEKDAY | DateUtils.FORMAT_ABBREV_WEEKDAY; | ||||
|       } else if (isWithinYear(millis)) { | ||||
|       } else if (isWithin(timestamp, 365, TimeUnit.DAYS)) { | ||||
|         formatFlags |= DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_NO_YEAR | DateUtils.FORMAT_ABBREV_ALL; | ||||
|       } else { | ||||
|         formatFlags |= DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_ALL; | ||||
|       } | ||||
|       return DateUtils.formatDateTime(c, timestamp, formatFlags); | ||||
|     } | ||||
|     return DateUtils.formatDateTime(c, millis, formatFlags); | ||||
|   } | ||||
| } | ||||
|  |  | |||
		Ładowanie…
	
		Reference in New Issue
	
	 Jake McGinty
						Jake McGinty