Show heat and other unread in title
This commit is contained in:
		
							parent
							
								
									c8a6564670
								
							
						
					
					
						commit
						65603d5138
					
				
							
								
								
									
										35
									
								
								ui.c
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								ui.c
									
									
									
									
									
								
							@ -359,38 +359,45 @@ static void statusAdd(const char *str) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void statusUpdate(void) {
 | 
			
		||||
	int otherUnread = 0;
 | 
			
		||||
	enum Heat otherHeat = Cold;
 | 
			
		||||
	wmove(status, 0, 0);
 | 
			
		||||
 | 
			
		||||
	int num;
 | 
			
		||||
	const struct Window *window;
 | 
			
		||||
	for (num = 0, window = windows.head; window; ++num, window = window->next) {
 | 
			
		||||
		if (!window->heat && window != windows.active) continue;
 | 
			
		||||
		int unread;
 | 
			
		||||
		if (window != windows.active) {
 | 
			
		||||
			otherUnread += window->unreadCount;
 | 
			
		||||
			if (window->heat > otherHeat) otherHeat = window->heat;
 | 
			
		||||
		}
 | 
			
		||||
		int trunc;
 | 
			
		||||
		char buf[256];
 | 
			
		||||
		snprintf(
 | 
			
		||||
			buf, sizeof(buf), "\3%d%s %d %s %n(\3%02d%d\3%d) ",
 | 
			
		||||
			idColors[window->id], (window == windows.active ? "\26" : ""),
 | 
			
		||||
			num, idNames[window->id],
 | 
			
		||||
			&unread, (window->heat > Warm ? White : idColors[window->id]),
 | 
			
		||||
			&trunc, (window->heat > Warm ? White : idColors[window->id]),
 | 
			
		||||
			window->unreadCount,
 | 
			
		||||
			idColors[window->id]
 | 
			
		||||
		);
 | 
			
		||||
		if (!window->mark || !window->unreadCount) buf[unread] = '\0';
 | 
			
		||||
		if (!window->mark || !window->unreadCount) buf[trunc] = '\0';
 | 
			
		||||
		statusAdd(buf);
 | 
			
		||||
	}
 | 
			
		||||
	wclrtoeol(status);
 | 
			
		||||
	if (!to_status_line) return;
 | 
			
		||||
 | 
			
		||||
	int unread;
 | 
			
		||||
	char buf[256];
 | 
			
		||||
	snprintf(
 | 
			
		||||
		buf, sizeof(buf), "%s %s%n (%d)",
 | 
			
		||||
		self.network, idNames[windows.active->id],
 | 
			
		||||
		&unread, windows.active->unreadCount
 | 
			
		||||
	);
 | 
			
		||||
	if (!windows.active->mark || !windows.active->unreadCount) {
 | 
			
		||||
		buf[unread] = '\0';
 | 
			
		||||
	}
 | 
			
		||||
	window = windows.active;
 | 
			
		||||
	putp(to_status_line);
 | 
			
		||||
	putp(buf);
 | 
			
		||||
	printf("%s %s", self.network, idNames[window->id]);
 | 
			
		||||
	if (window->mark && window->unreadCount) {
 | 
			
		||||
		printf(
 | 
			
		||||
			" (%d%s)", window->unreadCount, (window->heat > Warm ? "!" : "")
 | 
			
		||||
		);
 | 
			
		||||
	}
 | 
			
		||||
	if (otherUnread) {
 | 
			
		||||
		printf(" (+%d%s)", otherUnread, (otherHeat > Warm ? "!" : ""));
 | 
			
		||||
	}
 | 
			
		||||
	putp(from_status_line);
 | 
			
		||||
	fflush(stdout);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user