aboutsummaryrefslogtreecommitdiff
path: root/src/ui/messages.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/messages.c')
-rw-r--r--src/ui/messages.c47
1 files changed, 31 insertions, 16 deletions
diff --git a/src/ui/messages.c b/src/ui/messages.c
index 9b0a692..26df838 100644
--- a/src/ui/messages.c
+++ b/src/ui/messages.c
@@ -158,7 +158,7 @@ messages_event(UI_MESSAGES_Handle *messages,
158 if (!(messages->window)) 158 if (!(messages->window))
159 return; 159 return;
160 160
161 const int height = getmaxy(messages->window) - getbegy(messages->window); 161 const int height = getmaxy(messages->window);
162 const int y = messages->line_selected - messages->line_offset; 162 const int y = messages->line_selected - messages->line_offset;
163 163
164 const int line_height = height - 2; 164 const int line_height = height - 2;
@@ -188,7 +188,7 @@ _messages_iterate_print(UI_MESSAGES_Handle *messages,
188 if (y < 0) 188 if (y < 0)
189 return; 189 return;
190 190
191 const int height = getmaxy(messages->window) - getbegy(messages->window); 191 const int height = getmaxy(messages->window);
192 const int line_height = height - 2; 192 const int line_height = height - 2;
193 193
194 if (y >= line_height) 194 if (y >= line_height)
@@ -199,38 +199,49 @@ _messages_iterate_print(UI_MESSAGES_Handle *messages,
199 const char *name = sender? GNUNET_CHAT_contact_get_name(sender) : NULL; 199 const char *name = sender? GNUNET_CHAT_contact_get_name(sender) : NULL;
200 const char *text = GNUNET_CHAT_message_get_text(message); 200 const char *text = GNUNET_CHAT_message_get_text(message);
201 201
202 struct GNUNET_TIME_Absolute timestamp = GNUNET_CHAT_message_get_timestamp( 202 struct GNUNET_TIME_Absolute abs_time = GNUNET_CHAT_message_get_timestamp(
203 message 203 message
204 ); 204 );
205 205
206 struct GNUNET_TIME_Timestamp timestamp = GNUNET_TIME_absolute_to_timestamp(
207 abs_time
208 );
209
210 const time_t s_after_epoch = (
211 GNUNET_TIME_timestamp_to_s(timestamp)
212 );
213
214 struct tm* ts = localtime(&s_after_epoch);
215 char time_buf [255];
216
217 strftime(time_buf, sizeof(time_buf), "%H:%M", ts);
218
206 const int attrs_select = A_BOLD; 219 const int attrs_select = A_BOLD;
207 220
208 if (selected) wattron(messages->window, attrs_select); 221 if (selected) wattron(messages->window, attrs_select);
209 222
210 wmove(messages->window, y, 0); 223 wmove(messages->window, y, 0);
224 wprintw(messages->window, "%s | ", time_buf);
211 225
212 switch (kind) { 226 switch (kind) {
213 case GNUNET_CHAT_KIND_JOIN: 227 case GNUNET_CHAT_KIND_JOIN:
214 wprintw( 228 wprintw(
215 messages->window, 229 messages->window,
216 "%s | %s joins the room.", 230 "%s joins the room.",
217 GNUNET_TIME_absolute2s(timestamp),
218 name 231 name
219 ); 232 );
220 break; 233 break;
221 case GNUNET_CHAT_KIND_LEAVE: 234 case GNUNET_CHAT_KIND_LEAVE:
222 wprintw( 235 wprintw(
223 messages->window, 236 messages->window,
224 "%s | %s leaves the room.", 237 "%s leaves the room.",
225 GNUNET_TIME_absolute2s(timestamp),
226 name 238 name
227 ); 239 );
228 break; 240 break;
229 case GNUNET_CHAT_KIND_INVITATION: 241 case GNUNET_CHAT_KIND_INVITATION:
230 wprintw( 242 wprintw(
231 messages->window, 243 messages->window,
232 "%s | %s invites you to a room.", 244 "%s invites you to a room.",
233 GNUNET_TIME_absolute2s(timestamp),
234 name 245 name
235 ); 246 );
236 break; 247 break;
@@ -238,8 +249,7 @@ _messages_iterate_print(UI_MESSAGES_Handle *messages,
238 case GNUNET_CHAT_KIND_FILE: 249 case GNUNET_CHAT_KIND_FILE:
239 wprintw( 250 wprintw(
240 messages->window, 251 messages->window,
241 "%s | %s: %s", 252 "%s: %s",
242 GNUNET_TIME_absolute2s(timestamp),
243 name, 253 name,
244 text 254 text
245 ); 255 );
@@ -247,8 +257,7 @@ _messages_iterate_print(UI_MESSAGES_Handle *messages,
247 default: 257 default:
248 wprintw( 258 wprintw(
249 messages->window, 259 messages->window,
250 "%s | [%d] %s: %s", 260 "[%d] %s: %s",
251 GNUNET_TIME_absolute2s(timestamp),
252 (int) kind, 261 (int) kind,
253 name, 262 name,
254 text 263 text
@@ -282,8 +291,8 @@ messages_print(UI_MESSAGES_Handle *messages)
282 291
283 const bool selected = (count == messages->line_selected); 292 const bool selected = (count == messages->line_selected);
284 293
285 const int width = getmaxx(messages->window) - getbegx(messages->window); 294 const int width = getmaxx(messages->window);
286 const int height = getmaxy(messages->window) - getbegy(messages->window); 295 const int height = getmaxy(messages->window);
287 const int line_height = height - 2; 296 const int line_height = height - 2;
288 297
289 wmove(messages->window, line_height, 0); 298 wmove(messages->window, line_height, 0);
@@ -299,6 +308,12 @@ messages_print(UI_MESSAGES_Handle *messages)
299 if (selected) wattroff(messages->window, attrs_select); 308 if (selected) wattroff(messages->window, attrs_select);
300 309
301 wmove(messages->window, height - 1, messages->text_pos); 310 wmove(messages->window, height - 1, messages->text_pos);
311
312 if (selected)
313 {
314 wcursyncup(messages->window);
315 curs_set(1);
316 }
302} 317}
303 318
304void 319void
@@ -355,7 +370,7 @@ messages_add(UI_MESSAGES_Handle *messages,
355 break; 370 break;
356 } 371 }
357 372
358 const int height = getmaxy(messages->window) - getbegy(messages->window); 373 const int height = getmaxy(messages->window);
359 const int line_height = height - 2; 374 const int line_height = height - 2;
360 375
361 int count = 0; 376 int count = 0;