diff --git a/kernel/branches/net/applications/ircc/gui.inc b/kernel/branches/net/applications/ircc/gui.inc index c479a25f1b..bcc5b0c3e4 100644 --- a/kernel/branches/net/applications/ircc/gui.inc +++ b/kernel/branches/net/applications/ircc/gui.inc @@ -133,6 +133,8 @@ redraw_channel_list: .noscroll: mov [scroll1.position], 0 + + print_channel_list: pusha @@ -156,7 +158,10 @@ print_channel_list: mul ecx mov edx, eax mov eax, [window_open] - add edx, [eax + window.data_ptr] + mov eax, [eax + window.data_ptr] + add edx, eax + mov ebp, [eax + window_data.selected] + sub ebp, [scroll1.position] add edx, window_data.names pop ebx @@ -168,8 +173,19 @@ print_channel_list: mov edi, [ysize] ; Calculate how many names will fit on screen sub edi, TEXT_Y + 15 ;+ 10 ;;;;; .loop: - ; TODO: check if name is selected and highlight background color if so - cmp byte[edx], ' ' ; end of list? + dec ebp ; is this name selected? + jnz @f + ; yes, highlight it + pusha + mov cx, bx + mov bx, USERLIST_X + shl ecx, 16 + mov cx, 10 - 1 + mov edx, 0x00000055 ; blue! + mcall 13 + popa + @@: + cmp byte[edx], 0 ; end of list? je .done mcall diff --git a/kernel/branches/net/applications/ircc/ircc.asm b/kernel/branches/net/applications/ircc/ircc.asm index a0d2f17c93..7eb374426e 100644 --- a/kernel/branches/net/applications/ircc/ircc.asm +++ b/kernel/branches/net/applications/ircc/ircc.asm @@ -42,12 +42,12 @@ UTF8 = 2 USERCMD_MAX_SIZE = 400 WIN_MIN_X = 600 -WIN_MIN_Y = 180 +WIN_MIN_Y = 165 TEXT_X = 5 -TEXT_Y = 45 +TEXT_Y = 30 -TOP_Y = 40 +TOP_Y = 25 MAX_WINDOWS = 20 MAX_USERS = 4096 @@ -107,6 +107,7 @@ struct window_data text rb 120*60 title rb 256 names rb MAX_NICK_LEN * MAX_USERS + selected dd ? ; selected user, 0 if none selected usertext rb 256 usertextlen dd ? ends @@ -169,7 +170,6 @@ START: mcall 48, 3, colors, 40 ; set edit box and scrollbar colors - mov eax, [colors.work] mov [scroll1.bg_color], eax @@ -374,10 +374,6 @@ sockaddr1: status dd STATUS_DISCONNECTED -channel_line_sun dd 0x9999ff -channel_line_shadow dd 0x666699 -index_list_2 dd 0x0000ff - text_start dd ? ; pointer to current textbox data irc_data dd 0x0 ; encoder textbox_width dd 80 ; in characters, not pixels ;) @@ -422,7 +418,7 @@ I_END: edit1 edit_box 0, 0, 0, 0xffffff, 0x6f9480, 0, 0, 0, USERCMD_MAX_SIZE, usercommand, mouse_dd, ed_focus, 25, 25 ; xsize, xpos, ysize, ypos, max, cur, pos, bgcol, frcol, linecol scroll1 scrollbar SCROLLBAR_WIDTH, 300, 150, TOP_Y, 10, 100, 0, 0, 0, 0, 0, 1 - +scroll2 scrollbar SCROLLBAR_WIDTH, 300, 150, TOP_Y, 10, 100, 0, 0, 0, 0, 0, 1 main_PID dd ? ; identifier of main thread utf8_bytes_rest dd ? ; bytes rest in current UTF8 sequence diff --git a/kernel/branches/net/applications/ircc/serverparser.inc b/kernel/branches/net/applications/ircc/serverparser.inc index 6d2681ddef..1a67d27396 100644 --- a/kernel/branches/net/applications/ircc/serverparser.inc +++ b/kernel/branches/net/applications/ircc/serverparser.inc @@ -46,6 +46,8 @@ server_parser: server_commands: + dd '322 ', cmd_322 ; RPL_LIST + dd '323 ', cmd_323 ; RPL_LISTEND dd '328 ', cmd_328 dd '332 ', cmd_topic dd '333 ', cmd_333 ; nickname and time of topic @@ -870,3 +872,18 @@ cmd_333: .fail: ret +cmd_322: + add esi, 4 + + call skip_nick + + call print_text2 + + mov esi, str_newline + call print_text2 + + ret + +cmd_323: + + ret \ No newline at end of file diff --git a/kernel/branches/net/applications/ircc/userparser.inc b/kernel/branches/net/applications/ircc/userparser.inc index 49e47c77a4..bddfdb34a0 100644 --- a/kernel/branches/net/applications/ircc/userparser.inc +++ b/kernel/branches/net/applications/ircc/userparser.inc @@ -144,8 +144,7 @@ cmd_usr_quit: mov ecx, MAX_WINDOWS mov edi, windows .loop: - mov [edi+window.flags], FLAG_CLOSE -; call notify_channel_thread + mov [edi + window.flags], FLAG_CLOSE add edi, sizeof.window dec ecx jnz .loop