update status update with a window title
This commit is contained in:
		
							parent
							
								
									72d29f15ef
								
							
						
					
					
						commit
						623649dd86
					
				| @ -14,6 +14,9 @@ void ncdc_textview_set_account(ncdc_textview_t v, dc_account_t a); | ||||
| dc_channel_t ncdc_textview_channel(ncdc_textview_t v); | ||||
| void ncdc_textview_set_channel(ncdc_textview_t v, dc_channel_t a); | ||||
| 
 | ||||
| wchar_t const *ncdc_textview_title(ncdc_textview_t v); | ||||
| void ncdc_textview_set_title(ncdc_textview_t v, wchar_t const *w); | ||||
| 
 | ||||
| void ncdc_textview_append(ncdc_textview_t v, wchar_t const *w); | ||||
| wchar_t const *ncdc_textview_nthline(ncdc_textview_t v, size_t i); | ||||
| void ncdc_textview_render(ncdc_textview_t v, WINDOW *win, int lines, int cols); | ||||
|  | ||||
| @ -85,6 +85,7 @@ ncdc_mainwindow_t ncdc_mainwindow_new(void) | ||||
|         (GDestroyNotify)dc_unref | ||||
|         ); | ||||
|     ptr->log = ncdc_textview_new(); | ||||
|     ncdc_textview_set_title(ptr->log, L"status"); | ||||
|     g_ptr_array_add(ptr->views, ptr->log); | ||||
| 
 | ||||
|     ptr->guilds = newwin(5, 5, 1, 1); | ||||
| @ -190,6 +191,8 @@ static void ncdc_mainwindow_render_status(ncdc_mainwindow_t n) | ||||
|     time_t tm = time(NULL); | ||||
|     struct tm *t = localtime(&tm); | ||||
|     FILE *f = open_wmemstream(&status, &statuslen); | ||||
|     wchar_t const *wintitle = NULL; | ||||
|     ncdc_textview_t view = NULL; | ||||
| 
 | ||||
|     werase(n->sep1); | ||||
|     return_if_true(f == NULL,); | ||||
| @ -203,7 +206,11 @@ static void ncdc_mainwindow_render_status(ncdc_mainwindow_t n) | ||||
|         fwprintf(f, L" [%s]", dc_account_fullname(current_account)); | ||||
|     } | ||||
| 
 | ||||
|     fwprintf(f, L" [%d]", n->curview); | ||||
|     view = g_ptr_array_index(n->views, n->curview); | ||||
|     wintitle = ncdc_textview_title(view); | ||||
|     fwprintf(f, L" [%d: %ls]", n->curview, | ||||
|              (wintitle != NULL ? wintitle : L"n/a") | ||||
|         ); | ||||
|     fclose(f); | ||||
| 
 | ||||
|     mvwaddwstr(n->sep1, 0, 0, status); | ||||
|  | ||||
| @ -6,6 +6,7 @@ struct ncdc_textview_ | ||||
|     dc_refable_t ref; | ||||
| 
 | ||||
|     GPtrArray *par; | ||||
|     wchar_t *title; | ||||
| 
 | ||||
|     dc_account_t account; | ||||
|     dc_channel_t channel; | ||||
| @ -15,6 +16,9 @@ static void ncdc_textview_free(ncdc_textview_t v) | ||||
| { | ||||
|     return_if_true(v == NULL,); | ||||
| 
 | ||||
|     free(v->title); | ||||
|     v->title = NULL; | ||||
| 
 | ||||
|     dc_unref(v->account); | ||||
|     dc_unref(v->channel); | ||||
| 
 | ||||
| @ -38,7 +42,44 @@ ncdc_textview_t ncdc_textview_new(void) | ||||
|         return NULL; | ||||
|     } | ||||
| 
 | ||||
|     return p; | ||||
|     return dc_ref(p); | ||||
| } | ||||
| 
 | ||||
| static void ncdc_textview_maketitle(ncdc_textview_t v) | ||||
| { | ||||
|     size_t i = 0; | ||||
|     wchar_t *buf = NULL; | ||||
|     size_t buflen = 0; | ||||
|     FILE *f = open_wmemstream(&buf, &buflen); | ||||
|     size_t rlen = dc_channel_recipients(v->channel); | ||||
| 
 | ||||
|     for (i = 0; i < rlen; i++) { | ||||
|         dc_account_t r = dc_channel_nthrecipient(v->channel, i); | ||||
|         fwprintf(f, L"%s", dc_account_fullname(r)); | ||||
|         if (i < (rlen-1)) { | ||||
|             fwprintf(f, L","); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     fclose(f); | ||||
| 
 | ||||
|     free(v->title); | ||||
|     v->title = buf; | ||||
| } | ||||
| 
 | ||||
| wchar_t const *ncdc_textview_title(ncdc_textview_t v) | ||||
| { | ||||
|     if (v->title == NULL && v->channel != NULL) { | ||||
|         ncdc_textview_maketitle(v); | ||||
|     } | ||||
| 
 | ||||
|     return v->title; | ||||
| } | ||||
| 
 | ||||
| void ncdc_textview_set_title(ncdc_textview_t v, wchar_t const *w) | ||||
| { | ||||
|     free(v->title); | ||||
|     v->title = wcsdup(w); | ||||
| } | ||||
| 
 | ||||
| dc_account_t ncdc_textview_account(ncdc_textview_t v) | ||||
| @ -98,7 +139,7 @@ void ncdc_textview_render(ncdc_textview_t v, WINDOW *win, int lines, int cols) | ||||
| 
 | ||||
|     werase(win); | ||||
| 
 | ||||
|     if (v->par->len == 0) { | ||||
|     if (v->par == NULL || v->par->len == 0) { | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user