mcabber/mcabber/screen.c
changeset 2007 6c02ccb14c1c
parent 1997 555e342556e7
child 2008 0d5ece2324c6
equal deleted inserted replaced
2004:aa7e03c35488 2007:6c02ccb14c1c
   125 
   125 
   126 static int roster_hidden;
   126 static int roster_hidden;
   127 static int chatmode;
   127 static int chatmode;
   128 static int multimode;
   128 static int multimode;
   129 static char *multiline, *multimode_subj;
   129 static char *multiline, *multimode_subj;
       
   130 static int no_space_before_items;
   130 
   131 
   131 static bool Curses;
   132 static bool Curses;
   132 static bool log_win_on_top;
   133 static bool log_win_on_top;
   133 static bool roster_win_on_right;
   134 static bool roster_win_on_right;
   134 static guint autoaway_source = 0;
   135 static guint autoaway_source = 0;
  1542   int requested_size;
  1543   int requested_size;
  1543   gchar *ver, *message;
  1544   gchar *ver, *message;
  1544   int chat_y_pos, chatstatus_y_pos, log_y_pos;
  1545   int chat_y_pos, chatstatus_y_pos, log_y_pos;
  1545   int roster_x_pos, chat_x_pos;
  1546   int roster_x_pos, chat_x_pos;
  1546 
  1547 
       
  1548   no_space_before_items = settings_opt_get_int("no_space_before_items");
       
  1549 
  1547   Log_Win_Height = DEFAULT_LOG_WIN_HEIGHT;
  1550   Log_Win_Height = DEFAULT_LOG_WIN_HEIGHT;
  1548   requested_size = settings_opt_get_int("log_win_height");
  1551   requested_size = settings_opt_get_int("log_win_height");
  1549   if (requested_size > 0) {
  1552   if (requested_size > 0) {
  1550     if (maxY > requested_size + 3)
  1553     if (maxY > requested_size + 3)
  1551       Log_Win_Height = requested_size + 2;
  1554       Log_Win_Height = requested_size + 2;
  1941   int rOffset;
  1944   int rOffset;
  1942   int cursor_backup;
  1945   int cursor_backup;
  1943   char status, pending;
  1946   char status, pending;
  1944   enum imstatus currentstatus = xmpp_getstatus();
  1947   enum imstatus currentstatus = xmpp_getstatus();
  1945   int x_pos;
  1948   int x_pos;
       
  1949   char *space;
       
  1950   int prefix_length;
  1946 
  1951 
  1947   // We can reset update_roster
  1952   // We can reset update_roster
  1948   update_roster = FALSE;
  1953   update_roster = FALSE;
  1949 
  1954 
  1950   getmaxyx(rosterWnd, maxy, maxx);
  1955   getmaxyx(rosterWnd, maxy, maxx);
  1996 
  2001 
  1997   if (roster_win_on_right)
  2002   if (roster_win_on_right)
  1998     x_pos = 1; // 1 char offset (vertical line)
  2003     x_pos = 1; // 1 char offset (vertical line)
  1999   else
  2004   else
  2000     x_pos = 0;
  2005     x_pos = 0;
       
  2006 
       
  2007   space = g_new0(char, 2);
       
  2008   if (no_space_before_items) {
       
  2009     space[0] = '\0';
       
  2010     prefix_length = 6;
       
  2011   } else {
       
  2012     prefix_length = 7;
       
  2013   }
  2001 
  2014 
  2002   name = g_new0(char, 4*Roster_Width);
  2015   name = g_new0(char, 4*Roster_Width);
  2003   rline = g_new0(char, 4*Roster_Width+1);
  2016   rline = g_new0(char, 4*Roster_Width+1);
  2004 
  2017 
  2005   buddy = buddylist;
  2018   buddy = buddylist;
  2087         }
  2100         }
  2088         wattrset(rosterWnd, color);
  2101         wattrset(rosterWnd, color);
  2089       }
  2102       }
  2090     }
  2103     }
  2091 
  2104 
  2092     if (Roster_Width > 7)
  2105     if (Roster_Width > prefix_length)
  2093       g_utf8_strncpy(name, buddy_getname(BUDDATA(buddy)), Roster_Width-7);
  2106       g_utf8_strncpy(name, buddy_getname(BUDDATA(buddy)), Roster_Width-prefix_length);
  2094     else
  2107     else
  2095       name[0] = 0;
  2108       name[0] = 0;
  2096 
  2109 
  2097     if (pending == '#') {
  2110     if (pending == '#') {
  2098       // Attention sign?
  2111       // Attention sign?
  2104     if (isgrp) {
  2117     if (isgrp) {
  2105       if (ishid) {
  2118       if (ishid) {
  2106         int group_count = 0;
  2119         int group_count = 0;
  2107         foreach_group_member(BUDDATA(buddy), increment_if_buddy_not_filtered,
  2120         foreach_group_member(BUDDATA(buddy), increment_if_buddy_not_filtered,
  2108                              &group_count);
  2121                              &group_count);
  2109         snprintf(rline, 4*Roster_Width, " %c+++ %s (%i)", pending, name,
  2122         snprintf(rline, 4*Roster_Width, "%s%c+++ %s (%i)", space, pending, name,
  2110                  group_count);
  2123                  group_count);
  2111         /* Do not display the item count if there isn't enough space */
  2124         /* Do not display the item count if there isn't enough space */
  2112         if (g_utf8_strlen(rline, 4*Roster_Width) >= Roster_Width)
  2125         if (g_utf8_strlen(rline, 4*Roster_Width) >= Roster_Width)
  2113           snprintf(rline, 4*Roster_Width, " %c+++ %s", pending, name);
  2126           snprintf(rline, 4*Roster_Width, "%s%c+++ %s", space, pending, name);
  2114       }
  2127       }
  2115       else
  2128       else
  2116         snprintf(rline, 4*Roster_Width, " %c--- %s", pending, name);
  2129         snprintf(rline, 4*Roster_Width, "%s%c--- %s", space, pending, name);
  2117     } else if (isspe) {
  2130     } else if (isspe) {
  2118       snprintf(rline, 4*Roster_Width, " %c%s", pending, name);
  2131       snprintf(rline, 4*Roster_Width, "%s%c%s", space, pending, name);
  2119     } else {
  2132     } else {
  2120       char sepleft  = '[';
  2133       char sepleft  = '[';
  2121       char sepright = ']';
  2134       char sepright = ']';
  2122       if (btype & ROSTER_TYPE_USER) {
  2135       if (btype & ROSTER_TYPE_USER) {
  2123         guint subtype = buddy_getsubscription(BUDDATA(buddy));
  2136         guint subtype = buddy_getsubscription(BUDDATA(buddy));
  2126         if (!(subtype & sub_from)) {
  2139         if (!(subtype & sub_from)) {
  2127           sepleft  = '{';
  2140           sepleft  = '{';
  2128           sepright = '}';
  2141           sepright = '}';
  2129         }
  2142         }
  2130       }
  2143       }
  2131 
       
  2132       snprintf(rline, 4*Roster_Width,
  2144       snprintf(rline, 4*Roster_Width,
  2133                " %c%c%c%c %s", pending, sepleft, status, sepright, name);
  2145                "%s%c%c%c%c %s", space, pending, sepleft, status, sepright, name);
  2134     }
  2146     }
  2135 
  2147 
  2136     rline_locale = from_utf8(rline);
  2148     rline_locale = from_utf8(rline);
  2137     mvwprintw(rosterWnd, i, x_pos, "%s", rline_locale);
  2149     mvwprintw(rosterWnd, i, x_pos, "%s", rline_locale);
  2138     g_free(rline_locale);
  2150     g_free(rline_locale);
  2139     i++;
  2151     i++;
  2140   }
  2152   }
  2141 
  2153 
       
  2154   g_free(space);
  2142   g_free(rline);
  2155   g_free(rline);
  2143   g_free(name);
  2156   g_free(name);
  2144   top_panel(inputPanel);
  2157   top_panel(inputPanel);
  2145   update_panels();
  2158   update_panels();
  2146   curs_set(cursor_backup);
  2159   curs_set(cursor_backup);