[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Mldonkey-commits] mldonkey distrib/ChangeLog src/gtk2/gui/guiQuer...
From: |
mldonkey-commits |
Subject: |
[Mldonkey-commits] mldonkey distrib/ChangeLog src/gtk2/gui/guiQuer... |
Date: |
Sat, 15 Jul 2006 11:46:57 +0000 |
CVSROOT: /sources/mldonkey
Module name: mldonkey
Changes by: spiralvoice <spiralvoice> 06/07/15 11:46:57
Modified files:
distrib : ChangeLog
src/gtk2/gui : guiQueries.ml guiResults.ml guiTypes2.ml
Log message:
patch #5239
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/mldonkey/distrib/ChangeLog?cvsroot=mldonkey&r1=1.914&r2=1.915
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/gtk2/gui/guiQueries.ml?cvsroot=mldonkey&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/gtk2/gui/guiResults.ml?cvsroot=mldonkey&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/gtk2/gui/guiTypes2.ml?cvsroot=mldonkey&r1=1.10&r2=1.11
Patches:
Index: distrib/ChangeLog
===================================================================
RCS file: /sources/mldonkey/mldonkey/distrib/ChangeLog,v
retrieving revision 1.914
retrieving revision 1.915
diff -u -b -r1.914 -r1.915
--- distrib/ChangeLog 14 Jul 2006 14:23:37 -0000 1.914
+++ distrib/ChangeLog 15 Jul 2006 11:46:57 -0000 1.915
@@ -14,6 +14,10 @@
ChangeLog
=========
+2006/07/15
+5239: GTK2 GUI: Fix result sorting,
+ update search results instead of double display (su_blanc)
+
2006/07/14
5222: Improve log output when HDD is full
5214: Gettext: Improve translations
Index: src/gtk2/gui/guiQueries.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/gtk2/gui/guiQueries.ml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- src/gtk2/gui/guiQueries.ml 12 Nov 2005 11:16:36 -0000 1.3
+++ src/gtk2/gui/guiQueries.ml 15 Jul 2006 11:46:57 -0000 1.4
@@ -341,10 +341,12 @@
qr.g_query_label <- Some label;
qr.g_query_waiting_label <- Some query_status;
let on_closure () =
- let results = GuiResults.keys_to_results (qr.g_query_result#all_items ())
in
- List.iter (fun r ->
- Hashtbl.remove G.results r.res_num;
- ) results;
+ Hashtbl.iter (fun _ r ->
+ r.res_has_query <- List.filter (fun query_num -> query_num <>
qr.g_query_num) r.res_has_query;
+ match r.res_has_query with
+ [] -> Hashtbl.remove G.results r.res_num
+ | _ -> ()
+ ) G.results;
close_query qr.g_query_num true;
qr.g_query_result#clear ();
main_evbox#destroy ();
@@ -896,13 +898,8 @@
(* *)
(*************************************************************************)
-let h_search_result query_num result_num =
- try
- let qr = Hashtbl.find qresults query_num in
- try
- let r = Hashtbl.find G.results result_num in
- if qr.g_query_nresults < qr.g_query_max_hits
- then if r.res_availability >= qr.g_query_min_availability
+let add_result_to_query qr r =
+ if not (List.mem qr.g_query_num r.res_has_query)
then begin
qr.g_query_nresults <- qr.g_query_nresults + 1;
let f () =
@@ -911,21 +908,46 @@
None -> ()
| Some label -> label#set_text text
in
+ r.res_has_query <- qr.g_query_num :: r.res_has_query;
qr.g_query_result#add r ~f ();
- end else begin
- Hashtbl.remove G.results result_num; (* remove the result if
the query does'nt exist *)
end
+
+let remove_result_from_query qr r =
+ if not (List.mem qr.g_query_num r.res_has_query)
+ then r.res_has_query <- qr.g_query_num :: r.res_has_query
+
+let h_search_result query_num result_num =
+ try
+ let r = Hashtbl.find G.results result_num in
+ try
+ let qr = Hashtbl.find qresults query_num in
+ let k = GuiResults.result_key r.res_num in
+ try
+ (* update the result if it already exists *)
+ let row = qr.g_query_result#find_row k in
+ Gaux.may ~f:(fun rw -> qr.g_query_result#update_item rw r r) row
+ with _ ->
+ begin
+ if qr.g_query_nresults < qr.g_query_max_hits
+ then if r.res_availability >= qr.g_query_min_availability
+ then add_result_to_query qr r
+ (* don't add the result if availability is under the criterium *)
+ else remove_result_from_query qr r
+ (* stop the query if we exceeded the number of results *)
else begin
- Hashtbl.remove G.results result_num; (* remove the result if we
exceeded the number of results *)
- close_query query_num false; (* stop the query if we
exceeded the number of results *)
+ remove_result_from_query qr r;
+ close_query query_num false;
+ end
end
- with Not_found -> (if !!verbose then lprintf' "result doesn't exist for
query %d %s\n" query_num qr.g_query_desc)
with Not_found ->
begin
- Hashtbl.remove G.results result_num; (* remove the result if the query
does'nt exist *)
- close_query query_num true; (* close the query if it does'nt
exist *)
+ (* close the query if it does'nt exist *)
+ close_query query_num true;
+ match r.res_has_query with [] -> Hashtbl.remove G.results result_num |
_ -> ();
if !!verbose then lprintf' "query %d doesn't exist\n" query_num
end
+ with Not_found ->
+ (if !!verbose then lprintf' "result [%d] doesn't exist\n" result_num)
let h_search_waiting query_num waiting =
try
Index: src/gtk2/gui/guiResults.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/gtk2/gui/guiResults.ml,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- src/gtk2/gui/guiResults.ml 12 Nov 2005 11:16:36 -0000 1.4
+++ src/gtk2/gui/guiResults.ml 15 Jul 2006 11:46:57 -0000 1.5
@@ -40,19 +40,14 @@
let (=:=) = Options.(=:=)
let (<:>) = GuiTools.(<:>)
+
(*************************************************************************)
(* *)
-(* compute_result_info *)
+(* message from the core *)
(* *)
(*************************************************************************)
-let compute_result_info r =
- try
- let res = Hashtbl.find G.results r.result_num in
- let name = Mi.result_first_name r.result_names in
- res.res_name <- name;
- res.res_uid <- Mi.uid_list_to_string r.result_uids;
- res.res_size <- r.result_size;
+let hashtbl_update_result r res =
res.res_format <- U.simple_utf8_of r.result_format;
res.res_type <- U.simple_utf8_of r.result_type;
res.res_duration <- Mi.duration_of_tags r.result_tags;
@@ -62,68 +57,39 @@
res.res_completesources <- Mi.completesources_of_tags r.result_tags;
res.res_tags <- Mi.tags_to_string r.result_tags;
res.res_comment <- U.utf8_of r.result_comment;
- res.res_color <- Mi.color_of_result (Mi.availability_of_tags
r.result_tags) r.result_done;
- res.res_network_pixb <- Mi.network_pixb res.res_network ~size:A.SMALL ();
- res.res_name_pixb <- Mi.file_type_of_name name ~size:A.SMALL;
- res.res_computed <- true
- with _ -> ()
-
-(*************************************************************************)
-(* *)
-(* compute_result_info_while_idle *)
-(* *)
-(*************************************************************************)
-
-let (result_queue : result_info Queue.t) = Queue.create ()
-
-let compute_result_info_while_idle () =
- ignore (Glib.Idle.add (fun _ ->
- try
- let r = Queue.take result_queue in
- compute_result_info r;
- true
- with Queue.Empty -> false
- ))
-
-(*************************************************************************)
-(* *)
-(* message from the core *)
-(* *)
-(*************************************************************************)
+ res.res_color <- Mi.color_of_result (Mi.availability_of_tags r.result_tags)
r.result_done
let result_info (r : result_info) =
try
let res = Hashtbl.find G.results r.result_num in
- ()
+ hashtbl_update_result r res
with _ ->
begin
let net_num = Mi.neworknum_from_uids r.result_uids in
- let is_empty = Queue.is_empty result_queue in
+ let name = Mi.result_first_name r.result_names in
let res =
{
res_num = r.result_num;
res_network = net_num;
- res_computed = false;
- res_name = "";
- res_uid = "";
- res_size = Int64.zero;
- res_format = "";
- res_type = "";
- res_duration = "";
- res_codec = "";
- res_bitrate = 0;
- res_availability = 0;
- res_completesources = 0;
- res_tags = "";
- res_comment = "";
- res_color = "";
- res_network_pixb = None;
- res_name_pixb = None;
+ res_name = name;
+ res_uid = Mi.uid_list_to_string r.result_uids;
+ res_size = r.result_size;
+ res_format = U.simple_utf8_of r.result_format;
+ res_type = U.simple_utf8_of r.result_type;
+ res_duration = Mi.duration_of_tags r.result_tags;
+ res_codec = Mi.codec_of_tags r.result_tags;
+ res_bitrate = Mi.bitrate_of_tags r.result_tags;
+ res_availability = Mi.availability_of_tags r.result_tags;
+ res_completesources = Mi.completesources_of_tags r.result_tags;
+ res_tags = Mi.tags_to_string r.result_tags;
+ res_comment = U.utf8_of r.result_comment;
+ res_color = Mi.color_of_result (Mi.availability_of_tags
r.result_tags) r.result_done;
+ res_has_query = [];
+ res_network_pixb = Mi.network_pixb net_num ~size:A.SMALL ();
+ res_name_pixb = Mi.file_type_of_name name ~size:A.SMALL;
}
in
Hashtbl.add G.results res.res_num res;
- Queue.add r result_queue;
- if is_empty then compute_result_info_while_idle ()
end
(*************************************************************************)
@@ -289,25 +255,15 @@
method add_result_while_idle () =
ignore (Glib.Idle.add (fun _ ->
try
- let (r, _) = Queue.peek res_queue in
- if r.res_computed
- then begin
let (res, f) = Queue.take res_queue in
self#add_item res ?f ();
true
- end else true
with Queue.Empty -> false))
-
-
method add (r : res_info) ?f () =
- if r.res_computed
- then self#add_item r ?f ()
- else begin
let is_empty = Queue.is_empty res_queue in
Queue.add (r, f) res_queue;
if is_empty then self#add_result_while_idle ()
- end
(*************************************************************************)
(* *)
Index: src/gtk2/gui/guiTypes2.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/gtk2/gui/guiTypes2.ml,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- src/gtk2/gui/guiTypes2.ml 27 Jun 2006 10:38:36 -0000 1.10
+++ src/gtk2/gui/guiTypes2.ml 15 Jul 2006 11:46:57 -0000 1.11
@@ -150,10 +150,11 @@
{
res_num : int;
res_network : int;
- mutable res_computed : bool;
- mutable res_name : string;
- mutable res_uid : string;
- mutable res_size : int64;
+ res_name : string;
+ res_uid : string;
+ res_size : int64;
+ mutable res_network_pixb : GdkPixbuf.pixbuf option;
+ mutable res_name_pixb : GdkPixbuf.pixbuf option;
mutable res_format : string;
mutable res_type : string;
mutable res_duration : string;
@@ -164,8 +165,7 @@
mutable res_tags : string;
mutable res_comment : string;
mutable res_color : string;
- mutable res_network_pixb : GdkPixbuf.pixbuf option;
- mutable res_name_pixb : GdkPixbuf.pixbuf option;
+ mutable res_has_query : int list;
}
type g_file_tree =
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/gtk2/gui/guiQuer...,
mldonkey-commits <=