1package de.gultsch.chat.utils;
2
3import java.text.SimpleDateFormat;
4import java.util.Date;
5
6import de.gultsch.chat.R;
7import de.gultsch.chat.entities.Conversation;
8import de.gultsch.chat.ui.ConversationActivity;
9
10import android.app.Notification;
11import android.app.PendingIntent;
12import android.content.Context;
13import android.content.Intent;
14import android.content.SharedPreferences;
15import android.content.res.Resources;
16import android.graphics.Bitmap;
17import android.graphics.Canvas;
18import android.graphics.Paint;
19import android.graphics.Rect;
20import android.net.Uri;
21import android.preference.PreferenceManager;
22import android.support.v4.app.NotificationCompat;
23import android.support.v4.app.TaskStackBuilder;
24import android.util.DisplayMetrics;
25import android.util.Log;
26
27public class UIHelper {
28 public static String readableTimeDifference(long time) {
29 if (time == 0) {
30 return "just now";
31 }
32 Date date = new Date(time);
33 long difference = (System.currentTimeMillis() - time) / 1000;
34 if (difference < 60) {
35 return "just now";
36 } else if (difference < 60 * 10) {
37 return difference / 60 + " min ago";
38 } else if (difference < 60 * 60 * 24) {
39 SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
40 return sdf.format(date);
41 } else {
42 SimpleDateFormat sdf = new SimpleDateFormat("M/D");
43 return sdf.format(date);
44 }
45 }
46
47 public static Bitmap getUnknownContactPicture(String name, int size) {
48 String firstLetter = name.substring(0, 1).toUpperCase();
49 String centerLetter = name.substring(name.length() / 2,
50 (name.length() / 2) + 1);
51
52 int holoColors[] = { 0xFF1da9da, 0xFFb368d9, 0xFF83b600, 0xFFffa713,
53 0xFFe92727 };
54
55 int color = holoColors[centerLetter.charAt(0) % holoColors.length];
56
57 Bitmap bitmap = Bitmap
58 .createBitmap(size, size, Bitmap.Config.ARGB_8888);
59 Canvas canvas = new Canvas(bitmap);
60
61 bitmap.eraseColor(color);
62
63 Paint paint = new Paint();
64 paint.setColor(0xffe5e5e5);
65 paint.setTextSize((float) (size * 0.9));
66 paint.setAntiAlias(true);
67 Rect rect = new Rect();
68 paint.getTextBounds(firstLetter, 0, 1, rect);
69 float width = paint.measureText(firstLetter);
70 canvas.drawText(firstLetter, (size / 2) - (width / 2), (size / 2)
71 + (rect.height() / 2), paint);
72
73 return bitmap;
74 }
75
76 public static Notification getUnreadMessageNotification(Context context, Conversation conversation) {
77
78 SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
79 String ringtone = sharedPref.getString("notification_ringtone",null);
80
81 Resources res = context.getResources();
82 NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context);
83 mBuilder.setLargeIcon(UIHelper.getUnknownContactPicture(conversation.getName(),(int) res.getDimension(android.R.dimen.notification_large_icon_width)));
84 mBuilder.setContentTitle(conversation.getName());
85 mBuilder.setContentText(conversation.getLatestMessage());
86 mBuilder.setSmallIcon(R.drawable.notification);
87 if (ringtone!=null) {
88 mBuilder.setSound(Uri.parse(ringtone));
89 }
90
91 TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
92 stackBuilder.addParentStack(ConversationActivity.class);
93
94 Intent viewConversationIntent = new Intent(context,ConversationActivity.class);
95 viewConversationIntent.setAction(Intent.ACTION_VIEW);
96 viewConversationIntent.putExtra(
97 ConversationActivity.CONVERSATION,
98 conversation.getUuid());
99 viewConversationIntent
100 .setType(ConversationActivity.VIEW_CONVERSATION);
101
102 stackBuilder.addNextIntent(viewConversationIntent);
103
104 PendingIntent resultPendingIntent =
105 stackBuilder.getPendingIntent(
106 0,
107 PendingIntent.FLAG_UPDATE_CURRENT
108 );
109
110
111 mBuilder.setContentIntent(resultPendingIntent);
112 return mBuilder.build();
113 }
114}