Changeset 3324 for trunk/jons-gtk2-gui

Show
Ignore:
Timestamp:
03/02/03 04:12:08 (6 years ago)
Author:
bostjanlah
Message:

Localized definitions and move them out licq_gtk.h

Location:
trunk/jons-gtk2-gui/src
Files:
29 modified

Legend:

Unmodified
Added
Removed
  • trunk/jons-gtk2-gui/src/add_user_window.cpp

    r3164 r3324  
    2020 
    2121 
     22#include "licq_gtk.h" 
     23#include "utilities.h" 
     24 
    2225#include <stdlib.h> 
    2326#include <gtk/gtk.h> 
    2427 
    25 #include "licq_icqd.h" 
    26 #include "licq_gtk.h" 
     28struct add_user { 
     29      GtkWidget *window; 
     30      GtkWidget *entry; 
     31      GtkWidget *check_box; 
     32}; 
    2733 
    28 void menu_system_add_user(GtkWidget *window, gpointer data) 
     34void 
     35window_close(GtkWidget *widget, GtkWidget *destroy) 
    2936{ 
    30     GtkWidget *ok; 
    31     GtkWidget *cancel; 
    32     GtkWidget *label; 
    33     GtkWidget *h_box; 
    34     GtkWidget *v_box; 
    35     struct add_user *a = g_new0(struct add_user, 1); 
     37    gtk_widget_destroy(destroy); 
     38} 
     39 
     40void 
     41destroy_cb(GtkWidget *widget, gpointer **p) 
     42{ 
     43  if (p != NULL && *p != NULL) { 
     44        g_free(*p); 
     45        *p = NULL; 
     46    } 
     47} 
     48 
     49static void 
     50add_user_callback(GtkWidget *widget, struct add_user *au) 
     51{ 
     52    unsigned long uin = strtoul(entry_get_chars(au->entry).c_str(), NULL, 10); 
     53 
     54    if (uin != 0) { 
     55        icq_daemon->AddUserToList(uin); 
     56 
     57        if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(au->check_box))) 
     58            icq_daemon->icqAlertUser(uin); 
     59    } 
     60     
     61    window_close(NULL, au->window); 
     62} 
     63 
     64void 
     65menu_system_add_user(GtkWidget *window, gpointer data) 
     66{ 
     67    static struct add_user *au = NULL; 
     68     
     69    if (au == NULL) 
     70        au = g_new0(struct add_user, 1); 
     71    else { 
     72        gtk_widget_show(au->window); 
     73        return; 
     74    } 
    3675 
    3776    /* Make up the window for adding users */ 
    38     a->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 
     77    au->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 
    3978   
    40     gtk_window_set_title(GTK_WINDOW(a->window), "Licq - Add User"); 
    41     gtk_window_set_position(GTK_WINDOW(a->window), GTK_WIN_POS_CENTER); 
     79    gtk_window_set_title(GTK_WINDOW(au->window), "Licq - Add User"); 
     80    gtk_window_set_position(GTK_WINDOW(au->window), GTK_WIN_POS_CENTER); 
    4281 
    4382    /* The main box */ 
    44     v_box = gtk_vbox_new(FALSE, 5); 
     83    GtkWidget *v_box = gtk_vbox_new(FALSE, 5); 
    4584 
    4685    /* Work on the first hbox */ 
    47     h_box = gtk_hbox_new(FALSE, 5); 
    48     label = gtk_label_new("Add Uin: "); 
    49     a->entry = gtk_entry_new(); 
    50   gtk_entry_set_max_length(GTK_ENTRY(a->entry), MAX_LENGTH_UIN); 
    51     gtk_box_pack_start(GTK_BOX(h_box), label, TRUE, TRUE, 0); 
    52     gtk_box_pack_start(GTK_BOX(h_box), a->entry, TRUE, TRUE, 0); 
     86    GtkWidget *h_box = gtk_hbox_new(FALSE, 5); 
     87    au->entry = gtk_entry_new(); 
     88  gtk_entry_set_max_length(GTK_ENTRY(au->entry), MAX_LENGTH_UIN); 
     89    gtk_box_pack_start(GTK_BOX(h_box), gtk_label_new("Add Uin: "), TRUE, TRUE, 0); 
     90    gtk_box_pack_start(GTK_BOX(h_box), au->entry, TRUE, TRUE, 0); 
    5391 
    54     /* Accept only numbers in the a->entry */ 
    55     g_signal_connect(G_OBJECT(a->entry), "insert-text", 
    56                G_CALLBACK(verify_numbers), 0); 
     92    /* Accept only numbers in the au->entry */ 
     93    g_signal_connect(G_OBJECT(au->entry), "insert-text", 
     94        G_CALLBACK(verify_numbers), 0); 
    5795     
    5896    /* Add the first hbox to the top of the vbox */ 
     
    6199    /* Work on the send hbox */ 
    62100    h_box = gtk_hbox_new(FALSE, 0); 
    63     a->check_box = gtk_check_button_new_with_label("Alert User"); 
    64     gtk_box_pack_start(GTK_BOX(h_box), a->check_box, TRUE, TRUE, 0); 
     101    au->check_box = gtk_check_button_new_with_label("Alert User"); 
     102    gtk_box_pack_start(GTK_BOX(h_box), au->check_box, TRUE, TRUE, 0); 
    65103 
    66104    /* Add the second hbox to the vbox */ 
     
    69107    /* Work on the third hbox, with the buttons */ 
    70108    h_box = gtk_hbox_new(FALSE, 5); 
    71     ok = gtk_button_new_with_mnemonic("_Add"); 
     109    GtkWidget *ok = gtk_button_new_with_mnemonic("_Add"); 
    72110    gtk_box_pack_start(GTK_BOX(h_box), ok, TRUE, TRUE, 10); 
    73     cancel = gtk_button_new_from_stock(GTK_STOCK_CANCEL); 
     111    GtkWidget *cancel = gtk_button_new_from_stock(GTK_STOCK_CANCEL); 
    74112    gtk_box_pack_start(GTK_BOX(h_box), cancel, TRUE, TRUE, 10); 
    75113 
     
    79117    /* Connect all the signals to functions */ 
    80118  g_signal_connect(G_OBJECT(cancel), "clicked", 
    81                G_CALLBACK(dialog_close), a->window); 
    82     g_signal_connect(G_OBJECT(a->window), "destroy", 
    83                G_CALLBACK(dialog_close), a->window); 
     119               G_CALLBACK(window_close), NULL); 
     120    g_signal_connect(G_OBJECT(au->window), "destroy", 
     121               G_CALLBACK(destroy_cb), &au); 
    84122    g_signal_connect(G_OBJECT(ok), "clicked", 
    85                G_CALLBACK(add_user_callback), a); 
     123               G_CALLBACK(add_user_callback), au); 
    86124 
    87125    /* Show the widgets and grab the focus */ 
    88     gtk_container_add(GTK_CONTAINER(a->window), v_box); 
    89     gtk_widget_show_all(a->window); 
    90     gtk_window_set_focus(GTK_WINDOW(a->window), a->entry); 
     126    gtk_container_add(GTK_CONTAINER(au->window), v_box); 
     127    gtk_widget_show_all(au->window); 
     128    gtk_window_set_focus(GTK_WINDOW(au->window), au->entry); 
    91129} 
    92  
    93 void add_user_callback(GtkWidget *widget, struct add_user *a) 
    94 { 
    95     unsigned long uin = 
    96         atol((const char *)gtk_entry_get_text(GTK_ENTRY(a->entry))); 
    97  
    98     icq_daemon->AddUserToList(uin); 
    99  
    100     if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(a->check_box))) 
    101         icq_daemon->icqAlertUser(uin); 
    102  
    103     gtk_widget_destroy(a->window); 
    104 } 
    105  
    106 void dialog_close(GtkWidget *widget, GtkWidget *destroy) 
    107 { 
    108     gtk_widget_destroy(destroy); 
    109 } 
  • trunk/jons-gtk2-gui/src/auth_user_window.cpp

    r3164 r3324  
    2323#include "licq_icqd.h" 
    2424#include "licq_gtk.h" 
     25#include "utilities.h" 
     26 
     27struct auth_user 
     28{ 
     29    GtkWidget *window; 
     30    GtkWidget *entry; 
     31    GtkWidget *text; 
     32    GtkWidget *grant; 
     33    GtkWidget *refuse; 
     34}; 
     35 
     36static void  
     37auth_user_cb(GtkWidget *widget, struct auth_user *au) 
     38{ 
     39    gulong uin = strtoul(entry_get_chars(au->entry).c_str(),  
     40                                             NULL,  
     41                                             10); 
     42    std::string reason = entry_get_chars(au->text); 
     43 
     44    if (widget == au->grant) 
     45        icq_daemon->icqAuthorizeGrant(uin, reason.c_str()); 
     46    else 
     47        icq_daemon->icqAuthorizeRefuse(uin, reason.c_str()); 
     48 
     49    window_close(NULL, au->window); 
     50} 
    2551 
    2652void menu_system_auth_user(GtkWidget *widget, const unsigned long uin) 
    2753{ 
     54    static struct auth_user *au = NULL; 
     55     
     56    if (au == NULL) 
     57        au = g_new0(struct auth_user, 1); 
     58    else { 
     59        gtk_widget_show(au->window); 
     60        return; 
     61    } 
     62 
    2863    GtkWidget *label; 
    2964    GtkWidget *scroll; 
    30     GtkWidget *ok; 
    3165    GtkWidget *cancel; 
    32     GtkWidget *refuse; 
    3366    GtkWidget *h_box; 
    3467    GtkWidget *v_box; 
    35     struct auth_user *au = g_new0(struct auth_user, 1); 
    36  
     68     
    3769    /* Create the window */ 
    3870    au->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 
     
    68100    /* Make the buttons and pack them */ 
    69101    h_box = gtk_hbox_new(FALSE, 5); 
    70     ok = gtk_button_new_from_stock(GTK_STOCK_OK); 
    71     refuse = gtk_button_new_with_mnemonic("_Refuse"); 
     102    au->grant = gtk_button_new_from_stock(GTK_STOCK_OK); 
     103    au->refuse = gtk_button_new_with_mnemonic("_Refuse"); 
    72104    cancel = gtk_button_new_from_stock(GTK_STOCK_CANCEL); 
    73     gtk_box_pack_start(GTK_BOX(h_box), ok, TRUE, TRUE, 15); 
    74     gtk_box_pack_start(GTK_BOX(h_box), refuse, TRUE, TRUE, 15); 
     105    gtk_box_pack_start(GTK_BOX(h_box), au->grant, TRUE, TRUE, 15); 
     106    gtk_box_pack_start(GTK_BOX(h_box), au->refuse, TRUE, TRUE, 15); 
    75107    gtk_box_pack_start(GTK_BOX(h_box), cancel, TRUE, TRUE, 15); 
    76108    gtk_box_pack_start(GTK_BOX(v_box), h_box, FALSE, FALSE, 5); 
     
    78110    /* Connect the signals */ 
    79111    g_signal_connect(G_OBJECT(cancel), "clicked", 
    80                G_CALLBACK(dialog_close), au->window); 
     112               G_CALLBACK(window_close), au->window); 
    81113    g_signal_connect(G_OBJECT(au->window), "destroy", 
    82                G_CALLBACK(dialog_close), au->window); 
    83     g_signal_connect(G_OBJECT(ok), "clicked", 
    84                G_CALLBACK(auth_user_grant), au); 
    85     g_signal_connect(G_OBJECT(refuse), "clicked", 
    86                G_CALLBACK(auth_user_refuse), au); 
     114               G_CALLBACK(destroy_cb), &au); 
     115    g_signal_connect(G_OBJECT(au->grant), "clicked", 
     116               G_CALLBACK(auth_user_cb), au); 
     117    g_signal_connect(G_OBJECT(au->refuse), "clicked", 
     118               G_CALLBACK(auth_user_cb), au); 
    87119 
    88120    /* Show the window */ 
     
    91123    gtk_window_set_focus(GTK_WINDOW(au->window), au->entry); 
    92124 
    93     if(uin != 0) 
    94     { 
     125    if (uin != 0)   { 
    95126        const gchar *s_uin = g_strdup_printf("%ld", uin); 
    96127        gtk_entry_set_text(GTK_ENTRY(au->entry), s_uin); 
    97128    } 
    98129} 
    99  
    100 void auth_user_grant(GtkWidget *widget, struct auth_user *au) 
    101 { 
    102     gulong uin = atol((const char *)gtk_editable_get_chars(GTK_EDITABLE( 
    103                     au->entry), 0, -1)); 
    104     gchar *reason = gtk_editable_get_chars(GTK_EDITABLE(au->text), 0, -1); 
    105  
    106     icq_daemon->icqAuthorizeGrant(uin, reason); 
    107  
    108     dialog_close(au->window, au->window); 
    109 } 
    110  
    111 void auth_user_refuse(GtkWidget *widget, struct auth_user *au) 
    112 { 
    113     gulong uin = atol((const char *)gtk_editable_get_chars(GTK_EDITABLE( 
    114                     au->entry), 0, -1)); 
    115     gchar *reason = gtk_editable_get_chars(GTK_EDITABLE(au->text), 0, -1); 
    116  
    117     /* Refuse it */ 
    118     icq_daemon->icqAuthorizeRefuse(uin, reason); 
    119  
    120     dialog_close(au->window, au->window); 
    121 } 
  • trunk/jons-gtk2-gui/src/away_window.cpp

    r3164 r3324  
    2626GSList *uaw_list; 
    2727 
    28 void away_msg_window(gushort status) 
    29 { 
    30     struct away_dialog *away_d = g_new0(struct away_dialog, 1); 
    31  
    32     GtkWidget *ok; 
    33     GtkWidget *cancel; 
    34     GtkWidget *h_box; 
    35     GtkWidget *v_box; 
    36     const gchar *title = 
    37         g_strdup_printf("Set %s Response", 
    38         ICQUser::StatusToStatusStr(status, FALSE)); 
    39  
    40     /* Make the main window */ 
    41     away_d->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 
    42     gtk_window_set_title(GTK_WINDOW(away_d->window), title); 
    43     gtk_window_set_position(GTK_WINDOW(away_d->window), GTK_WIN_POS_CENTER); 
    44  
    45     /* The text box */ 
    46     away_d->text = gtk_text_view_new(); 
    47     gtk_text_view_set_editable(GTK_TEXT_VIEW(away_d->text), TRUE); 
    48     gtk_widget_set_size_request(GTK_WIDGET(away_d->text), 300, 100); 
    49  
    50     /* The boxes */ 
    51     h_box = gtk_hbox_new(TRUE, 5); 
    52     v_box = gtk_vbox_new(FALSE, 5); 
    53  
    54     /* Pack the text box into the v_box */ 
    55     gtk_box_pack_start(GTK_BOX(v_box), away_d->text, TRUE, TRUE, 0); 
    56  
    57     /* Make the buttons now */ 
    58     ok = gtk_button_new_from_stock(GTK_STOCK_OK); 
    59     cancel = gtk_button_new_from_stock(GTK_STOCK_CANCEL); 
    60  
    61     /* Pack the buttons */ 
    62     gtk_box_pack_start(GTK_BOX(h_box), ok, TRUE, TRUE, 5); 
    63     gtk_box_pack_start(GTK_BOX(h_box), cancel, TRUE, TRUE, 5); 
    64     gtk_box_pack_start(GTK_BOX(v_box), h_box, FALSE, FALSE, 0); 
    65  
    66     /* Connect the signals now */ 
    67     g_signal_connect(G_OBJECT(cancel), "clicked", 
    68                G_CALLBACK(away_close), away_d->window); 
    69     g_signal_connect(G_OBJECT(away_d->window), "destroy", 
    70                G_CALLBACK(away_close), away_d->window); 
    71     g_signal_connect(G_OBJECT(ok), "clicked", 
    72                G_CALLBACK(set_away_msg), away_d); 
    73      
    74     /* Get the window ready to be shown, show it, and set is_shown */ 
    75     gtk_container_add(GTK_CONTAINER(away_d->window), v_box); 
    76     gtk_widget_show_all(away_d->window); 
    77     gtk_window_set_focus(GTK_WINDOW(away_d->window), away_d->text); 
    78     gtk_grab_add(away_d->window); 
    79 } 
     28struct away_dialog 
     29{ 
     30    GtkWidget *window; 
     31    GtkWidget *text; 
     32}; 
     33 
     34struct user_away_window 
     35{ 
     36    GtkWidget *window; 
     37    GtkWidget *show_again; 
     38    GtkWidget *text_box; 
     39    ICQUser *user; 
     40    GtkWidget *progress; 
     41    gchar buffer[30]; 
     42    struct e_tag_data *etag; 
     43}; 
    8044 
    8145void set_away_msg(GtkWidget *widget, struct away_dialog *away_d) 
    8246{ 
    83     ICQOwner *owner = gUserManager.FetchOwner(LOCK_W); 
    8447    GtkTextIter s, e; 
    8548    GtkTextBuffer *tb = gtk_text_view_get_buffer(GTK_TEXT_VIEW(away_d->text)); 
     
    8750    gtk_text_buffer_get_end_iter(tb, &e); 
    8851  gchar *txt = gtk_text_buffer_get_text(tb, &s, &e, FALSE); 
     52    ICQOwner *owner = gUserManager.FetchOwner(LOCK_W); 
    8953    owner->SetAutoResponse(txt); 
     54    gUserManager.DropOwner(); 
    9055  g_free(txt); 
     56 
     57    window_close(NULL, away_d->window); 
     58} 
     59 
     60void away_msg_window(gushort status) 
     61{ 
     62     
     63  static struct away_dialog *away_d = NULL; 
     64   
     65  if (away_d == NULL) 
     66    away_d = g_new0(struct away_dialog, 1); 
     67  else { 
     68    gtk_widget_show(away_d->window); 
     69    return; 
     70  } 
     71 
     72    gchar *title = g_strdup_printf("Set %s Response", 
     73                                 ICQUser::StatusToStatusStr(status, FALSE)); 
     74 
     75    /* Make the main window */ 
     76    away_d->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 
     77    gtk_window_set_title(GTK_WINDOW(away_d->window), title); 
     78    gtk_window_set_position(GTK_WINDOW(away_d->window), GTK_WIN_POS_CENTER); 
     79    g_free(title); 
     80 
     81    /* The text box */ 
     82    away_d->text = gtk_text_view_new(); 
     83    gtk_text_view_set_editable(GTK_TEXT_VIEW(away_d->text), TRUE); 
     84    gtk_widget_set_size_request(GTK_WIDGET(away_d->text), 300, 100); 
     85 
     86    // Insert the current away message 
     87  ICQOwner *owner = gUserManager.FetchOwner(LOCK_R); 
     88  GtkTextBuffer *tb = gtk_text_view_get_buffer(GTK_TEXT_VIEW(away_d->text)); 
     89  gtk_text_buffer_set_text(tb, owner->AutoResponse(), -1); 
    9190    gUserManager.DropOwner(); 
    9291 
    93     gtk_grab_remove(away_d->window); 
    94     gtk_widget_destroy(away_d->window); 
    95 } 
    96  
    97 void away_close(GtkWidget *widget, GtkWidget *window) 
    98 { 
    99     gtk_grab_remove(window); 
    100     gtk_widget_destroy(window); 
     92    /* The boxes */ 
     93    GtkWidget *h_box = gtk_hbox_new(TRUE, 5); 
     94    GtkWidget *v_box = gtk_vbox_new(FALSE, 5); 
     95 
     96    /* Pack the text box into the v_box */ 
     97    gtk_box_pack_start(GTK_BOX(v_box), away_d->text, TRUE, TRUE, 0); 
     98 
     99    /* Make the buttons now */ 
     100    GtkWidget *ok = gtk_button_new_from_stock(GTK_STOCK_OK); 
     101    GtkWidget *cancel = gtk_button_new_from_stock(GTK_STOCK_CANCEL); 
     102 
     103    /* Pack the buttons */ 
     104    gtk_box_pack_start(GTK_BOX(h_box), ok, TRUE, TRUE, 5); 
     105    gtk_box_pack_start(GTK_BOX(h_box), cancel, TRUE, TRUE, 5); 
     106    gtk_box_pack_start(GTK_BOX(v_box), h_box, FALSE, FALSE, 0); 
     107 
     108    /* Connect the signals now */ 
     109    g_signal_connect(G_OBJECT(cancel), "clicked", 
     110               G_CALLBACK(window_close), away_d->window); 
     111    g_signal_connect(G_OBJECT(away_d->window), "destroy", 
     112               G_CALLBACK(destroy_cb), &away_d); 
     113    g_signal_connect(G_OBJECT(ok), "clicked", 
     114               G_CALLBACK(set_away_msg), away_d); 
     115     
     116    /* Get the window ready to be shown, show it, and set is_shown */ 
     117    gtk_container_add(GTK_CONTAINER(away_d->window), v_box); 
     118    gtk_widget_show_all(away_d->window); 
     119    gtk_window_set_focus(GTK_WINDOW(away_d->window), away_d->text); 
     120    gtk_window_set_modal(GTK_WINDOW(away_d->window), TRUE); 
     121} 
     122 
     123/* The following will ensure only one window is open and that when the * 
     124** Auto Response is received, it pops up in the box there.  Now the    * 
     125** status of the connection will be brought back to this window        */  
     126 
     127void  
     128destroy_away_window(GtkWidget *widget, struct user_away_window *uaw) 
     129{ 
     130    uaw->user->SetShowAwayMsg(gtk_toggle_button_get_active( 
     131                    GTK_TOGGLE_BUTTON(uaw->show_again))); 
     132    uaw_list = g_slist_remove(uaw_list, uaw); 
     133    catcher = g_slist_remove(catcher, uaw->etag); 
     134    g_free(uaw->etag); 
     135  g_free(uaw); 
     136} 
     137 
     138struct user_away_window *uaw_find(unsigned long uin) 
     139{ 
     140    struct user_away_window *uaw; 
     141    GSList *temp_uaw_list = uaw_list; 
     142 
     143    while (temp_uaw_list) { 
     144        uaw = (struct user_away_window *)temp_uaw_list->data; 
     145        if (uaw->user->Uin() == uin) 
     146            return uaw; 
     147        temp_uaw_list = temp_uaw_list->next; 
     148    } 
     149 
     150    /* It wasn't found, return null */ 
     151    return 0; 
     152} 
     153 
     154struct user_away_window *uaw_new(ICQUser *u) 
     155{ 
     156    /* Does it exist already? */ 
     157    struct user_away_window *uaw = uaw_find(u->Uin()); 
     158 
     159    /* If it does, return it, if not, make one */ 
     160    if (uaw != 0)  
     161        return uaw; 
     162 
     163    uaw = g_new0(struct user_away_window, 1); 
     164 
     165    uaw->user = u; 
     166 
     167    uaw_list = g_slist_append(uaw_list, uaw); 
     168 
     169//  list_read_message(0, uaw->user); 
     170 
     171    return uaw; 
    101172} 
    102173 
     
    105176    struct user_away_window *uaw = uaw_find(user->Uin()); 
    106177     
    107     if(uaw != 0) 
     178    // we're in the process of retrieving the message (or it's displayed already) 
     179  if (uaw != NULL) 
    108180        return; 
    109181 
    110182    uaw = uaw_new(user); 
    111  
    112     GtkWidget *h_box; 
    113     GtkWidget *v_box; 
    114     GtkWidget *scroll; 
    115     GtkWidget *close; 
    116     const gchar *title = g_strdup_printf("Auto Response for %s", user->GetAlias()); 
    117  
    118     struct e_tag_data *etd = g_new0(struct e_tag_data, 1); 
    119      
     183    uaw->etag = g_new0(struct e_tag_data, 1); 
    120184    uaw->user = user; 
    121     uaw->etag = etd; 
    122      
     185 
     186    gchar *title = g_strdup_printf("Auto Response for %s", user->GetAlias()); 
    123187 
    124188    /* Make the window */ 
     
    126190    gtk_window_set_title(GTK_WINDOW(uaw->window), title); 
    127191    gtk_window_set_position(GTK_WINDOW(uaw->window), GTK_WIN_POS_CENTER); 
     192    g_free(title); 
    128193 
    129194    g_signal_connect(G_OBJECT(uaw->window), "destroy", 
    130                G_CALLBACK(close_away_window), uaw); 
     195               G_CALLBACK(destroy_away_window), uaw); 
    131196 
    132197    /* Make the boxes */ 
    133     h_box = gtk_hbox_new(FALSE, 5); 
    134     v_box = gtk_vbox_new(FALSE, 5); 
     198    GtkWidget *h_box = gtk_hbox_new(FALSE, 5); 
     199    GtkWidget *v_box = gtk_vbox_new(FALSE, 5); 
    135200 
    136201    /* The scrolling window */ 
    137     scroll = gtk_scrolled_window_new(0, 0); 
     202    GtkWidget *scroll = gtk_scrolled_window_new(0, 0); 
    138203    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll), 
    139204                       GTK_POLICY_NEVER, 
     
    158223 
    159224    /* The close button */ 
    160     close = gtk_button_new_from_stock(GTK_STOCK_CLOSE); 
     225    GtkWidget *close = gtk_button_new_from_stock(GTK_STOCK_CLOSE); 
    161226    g_signal_connect(G_OBJECT(close), "clicked", 
    162                G_CALLBACK(close_away_window), uaw); 
     227               G_CALLBACK(window_close), uaw->window); 
    163228 
    164229    /* Pack everything */ 
     
    190255    /* Append it to gslist */ 
    191256    catcher = g_slist_append(catcher, uaw->etag);  
    192  
    193     g_free(const_cast<char *>(title)); 
    194 } 
    195  
    196 void close_away_window(GtkWidget *widget, struct user_away_window *uaw) 
    197 { 
    198     uaw->user->SetShowAwayMsg(gtk_toggle_button_get_active( 
    199                     GTK_TOGGLE_BUTTON(uaw->show_again))); 
    200     uaw_list = g_slist_remove(uaw_list, uaw); 
    201     catcher = g_slist_remove(catcher, uaw->etag); 
    202     dialog_close(0, uaw->window); 
    203 } 
    204  
    205 /* The following will ensure only one window is open and that when the * 
    206 ** Auto Response is received, it pops up in the box there.  Now the    * 
    207 ** status of the connection will be brought back to this window        */  
    208  
    209 struct user_away_window *uaw_new(ICQUser *u) 
    210 { 
    211     struct user_away_window *uaw; 
    212  
    213     /* Does it exist already? */ 
    214     uaw = uaw_find(u->Uin()); 
    215  
    216     /* If it does, return it, if not, make one */ 
    217     if(uaw != 0)  
    218         return uaw; 
    219  
    220     uaw = g_new0(struct user_away_window, 1); 
    221  
    222     uaw->user = u; 
    223  
    224     uaw_list = g_slist_append(uaw_list, uaw); 
    225  
    226 //  list_read_message(0, uaw->user); 
    227  
    228     return uaw; 
    229 } 
    230  
    231 struct user_away_window *uaw_find(unsigned long uin) 
    232 { 
    233     struct user_away_window *uaw; 
    234     GSList *temp_uaw_list = uaw_list; 
    235  
    236     while(temp_uaw_list) 
    237     { 
    238         uaw = (struct user_away_window *)temp_uaw_list->data; 
    239         if(uaw->user->Uin() == uin) 
    240             return uaw; 
    241  
    242         temp_uaw_list = temp_uaw_list->next; 
    243     } 
    244  
    245     /* It wasn't found, return null */ 
    246     return 0; 
    247 } 
     257} 
     258 
     259void finish_away(ICQEvent *event) 
     260{ 
     261    struct user_away_window *uaw = uaw_find(event->Uin()); 
     262 
     263    /* If the window isn't open, don't bother */ 
     264    if (uaw == 0) 
     265        return; 
     266 
     267    GtkTextBuffer *tb = gtk_text_view_get_buffer(GTK_TEXT_VIEW(uaw->text_box)); 
     268    GtkTextIter iter; 
     269    gtk_text_buffer_get_end_iter(tb, &iter); 
     270    gtk_text_buffer_insert(tb, &iter, uaw->user->AutoResponse(), -1); 
     271} 
     272 
  • trunk/jons-gtk2-gui/src/chat_window.cpp

    r3207 r3324  
    2323#include <list> 
    2424 
    25 #include "licq_icq.h" 
    2625#include "licq_gtk.h" 
     26#include "licq_chat.h" 
     27#include "licq_log.h" 
     28 
     29struct request_chat 
     30{ 
     31    GtkWidget *window; 
     32    GtkWidget *text_box; 
     33    GtkWidget *send_norm; 
     34    GtkWidget *send_urg; 
     35    GtkWidget *send_list; 
     36    GtkWidget *chat_list; 
     37    ICQUser *user; 
     38    struct e_tag_data *etd; 
     39}; 
     40 
     41struct remote_chat_request 
     42{ 
     43    GtkWidget *dialog; 
     44    gulong uin; 
     45    CEventChat *c_event; 
     46}; 
     47 
     48struct kick_window 
     49{ 
     50    GtkWidget *winKick; 
     51    GtkWid