mldonkey-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Mldonkey-commits] Changes to mldonkey/src/gtk2/gui/guiUsers.ml


From: mldonkey-commits
Subject: [Mldonkey-commits] Changes to mldonkey/src/gtk2/gui/guiUsers.ml
Date: Mon, 31 Oct 2005 13:34:35 -0500

Index: mldonkey/src/gtk2/gui/guiUsers.ml
diff -u mldonkey/src/gtk2/gui/guiUsers.ml:1.1 
mldonkey/src/gtk2/gui/guiUsers.ml:1.2
--- mldonkey/src/gtk2/gui/guiUsers.ml:1.1       Wed Mar  2 19:45:12 2005
+++ mldonkey/src/gtk2/gui/guiUsers.ml   Mon Oct 31 18:34:02 2005
@@ -42,19 +42,66 @@
 
 (*************************************************************************)
 (*                                                                       *)
+(*                         user_num                                      *)
+(*                                                                       *)
+(*************************************************************************)
+
+let user_num key =
+  try int_of_string key with _ -> raise Not_found
+
+(*************************************************************************)
+(*                                                                       *)
+(*                         user_of_key                                   *)
+(*                                                                       *)
+(*************************************************************************)
+
+let user_of_key key =
+  try
+    let num = user_num key in
+    Hashtbl.find G.users num
+  with _ -> raise Not_found
+
+(*************************************************************************)
+(*                                                                       *)
+(*                         keys_to_users                                 *)
+(*                                                                       *)
+(*************************************************************************)
+
+let keys_to_users keys =
+  let l = ref [] in
+  List.iter (fun k ->
+    try
+      let s = user_of_key k in
+      l := s :: !l
+    with _ -> ()) keys;
+  !l
+
+(*************************************************************************)
+(*                                                                       *)
+(*                         user_key                                      *)
+(*                                                                       *)
+(*************************************************************************)
+
+let user_key user_num =
+  Printf.sprintf "%d" user_num
+
+(*************************************************************************)
+(*                                                                       *)
 (*                         message to the core                           *)
 (*                                                                       *)
 (*************************************************************************)
-    
+
 let add_to_friends sel ()  =
+  let l = keys_to_users sel in
   List.iter (fun u ->
     GuiCom.send (AddUserFriend u.user_num)
-  ) sel
+  ) l
 
 let browse_files sel () =
+  let l = keys_to_users sel in
   List.iter (fun u ->
     GuiCom.send (BrowseUser u.user_num)
-  ) sel
+  ) l
 
 
 (*************************************************************************)
@@ -63,7 +110,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-let user_menu (sel : user_info list) =
+let user_menu sel =
   match sel with
       [] -> []
     | _ ->
@@ -72,6 +119,16 @@
            `I (!M.rT_me_browse_files, browse_files sel) ;
           ]
 
+(*************************************************************************)
+(*                                                                       *)
+(*                         hashtbl_users_update                          *)
+(*                                                                       *)
+(*************************************************************************)
+
+let hashtbl_users_update u u_new =
+  u.user_tags <- u_new.user_tags
+
+
 module UserList(R:
 
 (*************************************************************************)
@@ -104,16 +161,14 @@
       module Column = GuiColumns.User
 
       type item = user_info
-      type key = int
 
       let columns = R.columns
-      let get_key = (fun u -> u.user_num)
+      let get_key = (fun u -> user_key u.user_num)
       let module_name = R.module_name
     end)
 
     class g_user () =
       let user_cols     = new GTree.column_list in
-      let user_num      = user_cols#add Gobject.Data.int in
       let user_name     = user_cols#add Gobject.Data.string in
       let user_md4      = user_cols#add Gobject.Data.string in
       let user_ip_port  = user_cols#add Gobject.Data.string in
@@ -129,7 +184,6 @@
 (*************************************************************************)
 
         method from_item row (u : user_info) =
-          store#set ~row ~column:user_num u.user_num;
           store#set ~row ~column:user_name (U.utf8_of u.user_name);
           store#set ~row ~column:user_ip_port (Mi.ip_to_string u.user_ip 
u.user_port);
           store#set ~row ~column:user_md4 (Md4.to_string u.user_md4);
@@ -200,12 +254,16 @@
 (*                                                                       *)
 (*************************************************************************)
 
-        method sort_items c u1 u2 =
-          match c with
+        method sort_items c k1 k2 =
+          try
+            let u1 = user_of_key k1 in
+            let u2 = user_of_key k2 in
+            match c with
               Col_user_name -> compare (String.lowercase u1.user_name) 
(String.lowercase u2.user_name)
             | Col_user_addr -> compare u1.user_ip u2.user_ip
             | Col_user_tags -> compare u1.user_tags u2.user_tags
             | Col_user_md4 -> compare u1.user_md4 u2.user_md4
+          with _ -> 0
 
       end
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]