|
From: <arn...@us...> - 2008-04-29 19:10:11
|
Revision: 1229
http://dcplusplus.svn.sourceforge.net/dcplusplus/?rev=1229&view=rev
Author: arnetheduck
Date: 2008-04-29 12:10:02 -0700 (Tue, 29 Apr 2008)
Log Message:
-----------
Join multiple results with same tth
Modified Paths:
--------------
dcplusplus/trunk/win32/AspectUserCommand.h
dcplusplus/trunk/win32/SearchFrame.cpp
dcplusplus/trunk/win32/SearchFrame.h
dcplusplus/trunk/win32/UserInfoBase.h
Property Changed:
----------------
dcplusplus/trunk/
Property changes on: dcplusplus/trunk
___________________________________________________________________
Name: bzr:revision-info
- timestamp: 2008-04-26 16:00:33.614000082 +0200
committer: Jacek Sieka <arn...@gm...>
properties:
branch-nick: dcplusplus
+ timestamp: 2008-04-26 23:43:11.430000067 +0200
committer: Jacek Sieka <arn...@gm...>
properties:
branch-nick: dcplusplus
Name: bzr:file-ids
- dcpp/SearchResult.cpp searchresult.cpp-20080426140015-fr3xaldbtci8l80c-1
dcpp/SearchResult.h searchresult.h-20080426140015-fr3xaldbtci8l80c-2
+
Name: bzr:revision-id:v3-trunk1
- 1027 arn...@gm...-20080323183926-schknwnkgeo7ivdn
1028 zouzou123gen-20080323220411-r8usuc3qxwuh7zsn
1029 zouzou123gen-20080323221249-0su72zaj13e706mk
1030 arn...@gm...-20080324140623-muba1dl46m000o8c
1031 zouzou123gen-20080324141933-qbgr93ugpe0297m6
1032 arn...@gm...-20080324153706-siidja05n84i00b1
1033 arn...@gm...-20080324153823-lhn3awurnu77riln
1034 arn...@gm...-20080324165650-zapppziji67yf5a2
1035 zouzou123gen-20080324175936-4mqc2kh0lo5wtdu2
1036 zouzou123gen-20080325004602-6wdsoym95mjuhwd3
1037 arn...@gm...-20080325100659-8fqy6q65itmghlep
1038 zouzou123gen-20080325175216-s297sdiucukfvijh
1039 arn...@gm...-20080325210137-3dfqyoi8ykosy087
1040 arn...@gm...-20080325211747-nwwy1eb33r071sca
1041 arn...@gm...-20080326084110-qbselrjckku275xi
1042 zouzou123gen-20080326123631-35642mgbk2i4ty32
1043 zouzou123gen-20080326124345-f4xwn2d3ty8ubd6r
1044 arn...@gm...-20080326162031-il0nyms30w0mky43
1045 arn...@gm...-20080326164801-8dru8mjc06xgzjpv
1046 arn...@gm...-20080326170438-uzl2rx8fqnohak7g
1047 zouzou123gen-20080326172821-d6uqcbmfb0c6rwlv
1048 arn...@gm...-20080326213257-qlgdh7m2712p2l0q
1049 arn...@gm...-20080326214313-ktnoekgk3s0wmatz
1050 arn...@gm...-20080326215256-0j1iqrf286b9g7zf
1051 arn...@gm...-20080327082121-hoi22wh1gwjdfbyd
1052 arn...@gm...-20080327120639-um3tukdt374rwvgm
1053 zouzou123gen-20080327130703-6vtek6uxy3vua543
1054 arn...@gm...-20080327215831-dmg5mkufskabwkro
1055 arn...@gm...-20080327231459-cdztcv25alsuyqmf
1056 arn...@gm...-20080328085925-gceybsr53oml1p24
1057 arn...@gm...-20080328200512-1sjuu6bcnl2dyd2a
1058 arn...@gm...-20080328210347-bussqjrm5mfswh7o
1059 arn...@gm...-20080329055630-braiir1dskv7a4qm
1060 arn...@gm...-20080329061558-rck8dz60wpj3c5ja
1061 arn...@gm...-20080329081253-if6o5jn329mbzfpl
1062 arn...@gm...-20080329081619-cb4x930j8sp55cs0
1063 arn...@gm...-20080329103216-hgjzo7ra2zixbztd
1064 arn...@gm...-20080329124042-q3aw4iodmo5kafyp
1065 arn...@gm...-20080329124926-2je1z18p0272zpua
1066 arn...@gm...-20080329150901-ehj9t32en7eps2dp
1067 zouzou123gen-20080329153653-36xlvpik2ns9r84r
1068 zouzou123gen-20080329162703-51xr8hg073pg7wq5
1069 zouzou123gen-20080329234706-8ddipdqu0xeudkql
1070 arn...@gm...-20080330081232-ubqr1171ewalrd4q
1071 zouzou123gen-20080330131607-yppbs3mgyjef1cux
1072 zouzou123gen-20080330134835-yv1nogy77ib1uehd
1073 zouzou123gen-20080331124549-alyw7vugdn30piqy
1074 zouzou123gen-20080331135108-q8frtqsin5bosfzm
1075 zouzou123gen-20080331140757-u94q52yccl5lsifk
1076 zouzou123gen-20080331152513-ue1x5qhigcw51348
1077 arn...@gm...-20080331184436-a8g6chibmg8nswls
1078 arn...@gm...-20080331220648-81485k28qmwruwz6
1079 zouzou123gen-20080401081001-2yjn07cf8s5sxr3a
1080 zouzou123gen-20080401081247-f3p4hdjojnd460jw
1081 zouzou123gen-20080401084117-24a454g8o0x656kg
1082 zouzou123gen-20080401133146-jabb5i8870fg6f66
1083 zouzou123gen-20080401154610-mxdqoo5bksru93e6
1084 arn...@gm...-20080401185530-lqj4tflt5ldmx46f
1085 arn...@gm...-20080401212616-ffl7m0xm8gt15knk
1086 arn...@gm...-20080402084515-ofmnwihzv159jton
1087 arn...@gm...-20080402133105-y70soi38owzl76i9
1088 arn...@gm...-20080402142417-rn2dbkx19wfz3vae
1089 arn...@gm...-20080402144459-u3z3hqvl8aqjc4a0
1090 zouzou123gen-20080402145051-zi8tmvy8u3r2mzu8
1091 arn...@gm...-20080402152137-f397uz1yp9qjvfwh
1092 zouzou123gen-20080402170355-29wda40wk3cy7lu5
1093 arn...@gm...-20080402180628-ipos9li0c4bsmq1h
1094 arn...@gm...-20080402181235-s2a6f4ww4lzayl46
1095 arn...@gm...-20080402193851-6mu64vgep6tijith
1096 arn...@gm...-20080402203810-86zpxsx69q83zf3r
1097 arn...@gm...-20080402204331-so2e8n892o23pejr
1098 poy-20080402224153-225qylr2cfwhqrg7
1099 mrmikejj-20080403125112-o8polh8rkn62umyh
1100 arn...@gm...-20080403125139-8xub76j1xazhfxna
1101 po...@12...-20080403140544-13kockkjho883nb4
1102 po...@12...-20080403143012-bxghtoodiolugpbs
1103 arn...@gm...-20080403190809-bbi4bz5rfcvjnt20
1104 arn...@gm...-20080403205410-czxru1vcg1s4wcws
1105 arn...@gm...-20080403213124-54spdrwszgyimd90
1106 po...@12...-20080404002406-aj74x5tngi6mmmj1
1107 arn...@gm...-20080404122415-mjy07qzbaxyhagra
1108 po...@12...-20080404145445-84lyk5tyy3b3br14
1109 po...@12...-20080404231417-v4v8x7u3f0hm0ejc
1110 po...@12...-20080405001107-14d1ojjof8xhvcj8
1111 arn...@gm...-20080405071929-jmnrul21sxx04kky
1112 arn...@gm...-20080405080105-9qbda7be0pi7y1ai
1113 po...@12...-20080405154555-yuj2n5kyndfjlpsf
1114 po...@12...-20080405220250-8y09d0samsj8ja94
1115 po...@12...-20080406134101-4860ytb61sbu3yhg
1116 po...@12...-20080406155849-2wzxzuzs5m8zpk0g
1117 po...@12...-20080406164835-bv5dydhm3qqydsty
1118 arn...@gm...-20080406210237-c7tyfgiz2sjgv044
1119 po...@12...-20080407114423-4yajg1rffidq76bj
1120 arn...@gm...-20080407194826-c42t4bjzw4vflejn
1121 po...@12...-20080407214303-o7ul1bvcn6gvaoc9
1122 po...@12...-20080407220647-r7f3em92til5j67s
1123 po...@12...-20080408212439-54t3bqlhvw1nu4xc
1124 arn...@gm...-20080409193708-y6erfzwrcb1seet3
1125 arn...@gm...-20080409195827-ub6t2s3wdf28nfpz
1126 po...@12...-20080409215055-1zmqhhm2859878c1
1127 arn...@gm...-20080410102447-l4es4cbukkqwcnpc
1128 arn...@gm...-20080410214118-b70g50tl27cq9q29
1129 arn...@gm...-20080411074730-w1pu78qigtx87lx3
1130 arn...@gm...-20080411090724-kwdj9pg9hrv1xhwb
1131 po...@12...-20080411153057-tn7zhxqk0z7ceref
1132 arn...@gm...-20080411200946-ierqlg8v9vzj18n2
1133 arn...@gm...-20080411201718-ecshulwd7ic0wdci
1134 arn...@gm...-20080411204047-jc9vzcsf32j38dvc
1135 arn...@gm...-20080411205445-ojuz2a29yq8ww37j
1136 arn...@gm...-20080411214746-r420xmdgo35pkweb
1137 po...@12...-20080412010723-cibh8r0itlzqyt3f
1138 arn...@gm...-20080412200504-6qfeqnsghxgrk775
1139 arn...@gm...-20080413095435-2pkfb407hk8j54te
1140 arn...@gm...-20080413133927-zw2tpz8o8p3izyix
1141 arn...@gm...-20080413165025-ug342rxtq4blxck5
1142 arn...@gm...-20080413182618-6ihabn0tii6gb2m2
1143 arn...@gm...-20080413184517-9p08tedakta1h762
1144 arn...@gm...-20080413193655-kc98lx7kpzo42q43
1145 arn...@gm...-20080414132947-pguvkuzvyadukssc
1146 arn...@gm...-20080414133544-pxwxm9kcvw0k0vf3
1147 po...@12...-20080414174341-hw1im7ysymscpiq0
1148 arn...@gm...-20080414181459-5gu852lneflgf5d6
1149 po...@12...-20080414205719-d80e75fsl8zzi6je
1150 arn...@gm...-20080414211616-835ve71r1qdlbhb4
1151 arn...@gm...-20080415080409-4cid9q7opng8ijav
1152 arn...@gm...-20080415124540-roduj23x442jeefn
1153 arn...@gm...-20080415141450-cld2ym4s50uu31q7
1154 po...@12...-20080415143018-4emcs3u1fquzsu1f
1155 arn...@gm...-20080415174958-wfqu5kga5pe39xvc
1156 po...@12...-20080415182942-2ux0yn8immkrz7ch
1157 po...@12...-20080415185700-gdgpyn414bf4behz
1158 po...@12...-20080415202535-cvevdgrawpilji5b
1159 po...@12...-20080415214801-lgb1429qdm4ti6ub
1160 po...@12...-20080416123247-6dw18ea0lk4m5q8q
1161 po...@12...-20080416135834-6mtzcfy7pzxqfnq0
1162 po...@12...-20080416181626-0ex66f1lv1maf38l
1163 arn...@gm...-20080416183603-yxbj16t2nd8rdzzd
1164 arn...@gm...-20080416200700-wncbhytfixz9b15u
1165 po...@12...-20080416200941-5oigemky43sz6r87
1166 arn...@gm...-20080416204550-0dx3qhxasdkdohx1
1167 arn...@gm...-20080416211510-3ilsym0bom7u2cer
1168 tom@athlon-20080417125238-0hhhchg951y7p83w
1169 arn...@gm...-20080418203137-e6szrje3fje5dgh9
1170 arn...@gm...-20080419164722-vyjrwwvglxr4yxuu
1171 arn...@gm...-20080419164802-o2boulbfrea4e0dx
1172 arn...@gm...-20080419165129-zj3axn731fo84vd5
1173 po...@12...-20080419172806-2qspfwerslo10rd2
1174 arn...@gm...-20080419212304-3wjafor82amtvik3
1175 arn...@gm...-20080419212347-t5oze1b59dk7vkiv
1176 arn...@gm...-20080420133104-h16loa3kvzrpkxiv
1177 po...@12...-20080420141642-z9mgyje16kkfy11z
1178 arn...@gm...-20080420173012-we22yoyvldt8u1az
1179 arn...@gm...-20080420173645-l296bgbr60wj267s
1180 arn...@gm...-20080420181134-ypu4ik21vc9ma1u9
1181 arn...@gm...-20080420192935-g59ddftmp35o6wdq
1182 arn...@gm...-20080420194530-qbyih90fixp3jevq
1183 arn...@gm...-20080420200905-mc0wa2egjt6k0783
1184 po...@12...-20080421110151-tm3apquwg3p4otyv
1185 po...@12...-20080421111032-2mwe6we5llzbqfj1
1186 arn...@gm...-20080421112743-av3pdgtq20m91f8c
1187 arn...@gm...-20080421122035-2ygc85ppjs7rhswn
1188 arn...@gm...-20080421194323-clug9p9pkjkgc0cw
1189 arn...@gm...-20080422063343-blx6k6y2ydxtbkjy
1190 po...@12...-20080422102607-kb3rl7h4i6alv3oo
1191 po...@12...-20080422143053-gsqp7dlvq1vwkahf
1192 arn...@gm...-20080423181453-79vl70wtqix7zxhf
1193 arn...@gm...-20080423184105-mp2f385vndp22m8f
1194 arn...@gm...-20080423185140-vz1vp66h0xzrxv6m
1195 arn...@gm...-20080423191309-bxflhitmwd36vix3
1196 arn...@gm...-20080423191718-3sc2ek2axdtc0b6e
1197 po...@12...-20080423223740-naz9ch6wp525yonb
1198 administrator@user315-m-20080424114244-eu0vcezrvqz7sf8t
1199 administrator@user315-m-20080424121241-ta23vg7isv4346qw
1200 po...@12...-20080424210032-97omp80p01ag7tlr
1201 arn...@gm...-20080424212827-v52bn9nu74id6fjx
1202 emtee-20080425102810-x4gbuupquvl3vja0
1203 arn...@gm...-20080426140033-767pxugmoex9ptgd
+ 1027 arn...@gm...-20080323183926-schknwnkgeo7ivdn
1028 zouzou123gen-20080323220411-r8usuc3qxwuh7zsn
1029 zouzou123gen-20080323221249-0su72zaj13e706mk
1030 arn...@gm...-20080324140623-muba1dl46m000o8c
1031 zouzou123gen-20080324141933-qbgr93ugpe0297m6
1032 arn...@gm...-20080324153706-siidja05n84i00b1
1033 arn...@gm...-20080324153823-lhn3awurnu77riln
1034 arn...@gm...-20080324165650-zapppziji67yf5a2
1035 zouzou123gen-20080324175936-4mqc2kh0lo5wtdu2
1036 zouzou123gen-20080325004602-6wdsoym95mjuhwd3
1037 arn...@gm...-20080325100659-8fqy6q65itmghlep
1038 zouzou123gen-20080325175216-s297sdiucukfvijh
1039 arn...@gm...-20080325210137-3dfqyoi8ykosy087
1040 arn...@gm...-20080325211747-nwwy1eb33r071sca
1041 arn...@gm...-20080326084110-qbselrjckku275xi
1042 zouzou123gen-20080326123631-35642mgbk2i4ty32
1043 zouzou123gen-20080326124345-f4xwn2d3ty8ubd6r
1044 arn...@gm...-20080326162031-il0nyms30w0mky43
1045 arn...@gm...-20080326164801-8dru8mjc06xgzjpv
1046 arn...@gm...-20080326170438-uzl2rx8fqnohak7g
1047 zouzou123gen-20080326172821-d6uqcbmfb0c6rwlv
1048 arn...@gm...-20080326213257-qlgdh7m2712p2l0q
1049 arn...@gm...-20080326214313-ktnoekgk3s0wmatz
1050 arn...@gm...-20080326215256-0j1iqrf286b9g7zf
1051 arn...@gm...-20080327082121-hoi22wh1gwjdfbyd
1052 arn...@gm...-20080327120639-um3tukdt374rwvgm
1053 zouzou123gen-20080327130703-6vtek6uxy3vua543
1054 arn...@gm...-20080327215831-dmg5mkufskabwkro
1055 arn...@gm...-20080327231459-cdztcv25alsuyqmf
1056 arn...@gm...-20080328085925-gceybsr53oml1p24
1057 arn...@gm...-20080328200512-1sjuu6bcnl2dyd2a
1058 arn...@gm...-20080328210347-bussqjrm5mfswh7o
1059 arn...@gm...-20080329055630-braiir1dskv7a4qm
1060 arn...@gm...-20080329061558-rck8dz60wpj3c5ja
1061 arn...@gm...-20080329081253-if6o5jn329mbzfpl
1062 arn...@gm...-20080329081619-cb4x930j8sp55cs0
1063 arn...@gm...-20080329103216-hgjzo7ra2zixbztd
1064 arn...@gm...-20080329124042-q3aw4iodmo5kafyp
1065 arn...@gm...-20080329124926-2je1z18p0272zpua
1066 arn...@gm...-20080329150901-ehj9t32en7eps2dp
1067 zouzou123gen-20080329153653-36xlvpik2ns9r84r
1068 zouzou123gen-20080329162703-51xr8hg073pg7wq5
1069 zouzou123gen-20080329234706-8ddipdqu0xeudkql
1070 arn...@gm...-20080330081232-ubqr1171ewalrd4q
1071 zouzou123gen-20080330131607-yppbs3mgyjef1cux
1072 zouzou123gen-20080330134835-yv1nogy77ib1uehd
1073 zouzou123gen-20080331124549-alyw7vugdn30piqy
1074 zouzou123gen-20080331135108-q8frtqsin5bosfzm
1075 zouzou123gen-20080331140757-u94q52yccl5lsifk
1076 zouzou123gen-20080331152513-ue1x5qhigcw51348
1077 arn...@gm...-20080331184436-a8g6chibmg8nswls
1078 arn...@gm...-20080331220648-81485k28qmwruwz6
1079 zouzou123gen-20080401081001-2yjn07cf8s5sxr3a
1080 zouzou123gen-20080401081247-f3p4hdjojnd460jw
1081 zouzou123gen-20080401084117-24a454g8o0x656kg
1082 zouzou123gen-20080401133146-jabb5i8870fg6f66
1083 zouzou123gen-20080401154610-mxdqoo5bksru93e6
1084 arn...@gm...-20080401185530-lqj4tflt5ldmx46f
1085 arn...@gm...-20080401212616-ffl7m0xm8gt15knk
1086 arn...@gm...-20080402084515-ofmnwihzv159jton
1087 arn...@gm...-20080402133105-y70soi38owzl76i9
1088 arn...@gm...-20080402142417-rn2dbkx19wfz3vae
1089 arn...@gm...-20080402144459-u3z3hqvl8aqjc4a0
1090 zouzou123gen-20080402145051-zi8tmvy8u3r2mzu8
1091 arn...@gm...-20080402152137-f397uz1yp9qjvfwh
1092 zouzou123gen-20080402170355-29wda40wk3cy7lu5
1093 arn...@gm...-20080402180628-ipos9li0c4bsmq1h
1094 arn...@gm...-20080402181235-s2a6f4ww4lzayl46
1095 arn...@gm...-20080402193851-6mu64vgep6tijith
1096 arn...@gm...-20080402203810-86zpxsx69q83zf3r
1097 arn...@gm...-20080402204331-so2e8n892o23pejr
1098 poy-20080402224153-225qylr2cfwhqrg7
1099 mrmikejj-20080403125112-o8polh8rkn62umyh
1100 arn...@gm...-20080403125139-8xub76j1xazhfxna
1101 po...@12...-20080403140544-13kockkjho883nb4
1102 po...@12...-20080403143012-bxghtoodiolugpbs
1103 arn...@gm...-20080403190809-bbi4bz5rfcvjnt20
1104 arn...@gm...-20080403205410-czxru1vcg1s4wcws
1105 arn...@gm...-20080403213124-54spdrwszgyimd90
1106 po...@12...-20080404002406-aj74x5tngi6mmmj1
1107 arn...@gm...-20080404122415-mjy07qzbaxyhagra
1108 po...@12...-20080404145445-84lyk5tyy3b3br14
1109 po...@12...-20080404231417-v4v8x7u3f0hm0ejc
1110 po...@12...-20080405001107-14d1ojjof8xhvcj8
1111 arn...@gm...-20080405071929-jmnrul21sxx04kky
1112 arn...@gm...-20080405080105-9qbda7be0pi7y1ai
1113 po...@12...-20080405154555-yuj2n5kyndfjlpsf
1114 po...@12...-20080405220250-8y09d0samsj8ja94
1115 po...@12...-20080406134101-4860ytb61sbu3yhg
1116 po...@12...-20080406155849-2wzxzuzs5m8zpk0g
1117 po...@12...-20080406164835-bv5dydhm3qqydsty
1118 arn...@gm...-20080406210237-c7tyfgiz2sjgv044
1119 po...@12...-20080407114423-4yajg1rffidq76bj
1120 arn...@gm...-20080407194826-c42t4bjzw4vflejn
1121 po...@12...-20080407214303-o7ul1bvcn6gvaoc9
1122 po...@12...-20080407220647-r7f3em92til5j67s
1123 po...@12...-20080408212439-54t3bqlhvw1nu4xc
1124 arn...@gm...-20080409193708-y6erfzwrcb1seet3
1125 arn...@gm...-20080409195827-ub6t2s3wdf28nfpz
1126 po...@12...-20080409215055-1zmqhhm2859878c1
1127 arn...@gm...-20080410102447-l4es4cbukkqwcnpc
1128 arn...@gm...-20080410214118-b70g50tl27cq9q29
1129 arn...@gm...-20080411074730-w1pu78qigtx87lx3
1130 arn...@gm...-20080411090724-kwdj9pg9hrv1xhwb
1131 po...@12...-20080411153057-tn7zhxqk0z7ceref
1132 arn...@gm...-20080411200946-ierqlg8v9vzj18n2
1133 arn...@gm...-20080411201718-ecshulwd7ic0wdci
1134 arn...@gm...-20080411204047-jc9vzcsf32j38dvc
1135 arn...@gm...-20080411205445-ojuz2a29yq8ww37j
1136 arn...@gm...-20080411214746-r420xmdgo35pkweb
1137 po...@12...-20080412010723-cibh8r0itlzqyt3f
1138 arn...@gm...-20080412200504-6qfeqnsghxgrk775
1139 arn...@gm...-20080413095435-2pkfb407hk8j54te
1140 arn...@gm...-20080413133927-zw2tpz8o8p3izyix
1141 arn...@gm...-20080413165025-ug342rxtq4blxck5
1142 arn...@gm...-20080413182618-6ihabn0tii6gb2m2
1143 arn...@gm...-20080413184517-9p08tedakta1h762
1144 arn...@gm...-20080413193655-kc98lx7kpzo42q43
1145 arn...@gm...-20080414132947-pguvkuzvyadukssc
1146 arn...@gm...-20080414133544-pxwxm9kcvw0k0vf3
1147 po...@12...-20080414174341-hw1im7ysymscpiq0
1148 arn...@gm...-20080414181459-5gu852lneflgf5d6
1149 po...@12...-20080414205719-d80e75fsl8zzi6je
1150 arn...@gm...-20080414211616-835ve71r1qdlbhb4
1151 arn...@gm...-20080415080409-4cid9q7opng8ijav
1152 arn...@gm...-20080415124540-roduj23x442jeefn
1153 arn...@gm...-20080415141450-cld2ym4s50uu31q7
1154 po...@12...-20080415143018-4emcs3u1fquzsu1f
1155 arn...@gm...-20080415174958-wfqu5kga5pe39xvc
1156 po...@12...-20080415182942-2ux0yn8immkrz7ch
1157 po...@12...-20080415185700-gdgpyn414bf4behz
1158 po...@12...-20080415202535-cvevdgrawpilji5b
1159 po...@12...-20080415214801-lgb1429qdm4ti6ub
1160 po...@12...-20080416123247-6dw18ea0lk4m5q8q
1161 po...@12...-20080416135834-6mtzcfy7pzxqfnq0
1162 po...@12...-20080416181626-0ex66f1lv1maf38l
1163 arn...@gm...-20080416183603-yxbj16t2nd8rdzzd
1164 arn...@gm...-20080416200700-wncbhytfixz9b15u
1165 po...@12...-20080416200941-5oigemky43sz6r87
1166 arn...@gm...-20080416204550-0dx3qhxasdkdohx1
1167 arn...@gm...-20080416211510-3ilsym0bom7u2cer
1168 tom@athlon-20080417125238-0hhhchg951y7p83w
1169 arn...@gm...-20080418203137-e6szrje3fje5dgh9
1170 arn...@gm...-20080419164722-vyjrwwvglxr4yxuu
1171 arn...@gm...-20080419164802-o2boulbfrea4e0dx
1172 arn...@gm...-20080419165129-zj3axn731fo84vd5
1173 po...@12...-20080419172806-2qspfwerslo10rd2
1174 arn...@gm...-20080419212304-3wjafor82amtvik3
1175 arn...@gm...-20080419212347-t5oze1b59dk7vkiv
1176 arn...@gm...-20080420133104-h16loa3kvzrpkxiv
1177 po...@12...-20080420141642-z9mgyje16kkfy11z
1178 arn...@gm...-20080420173012-we22yoyvldt8u1az
1179 arn...@gm...-20080420173645-l296bgbr60wj267s
1180 arn...@gm...-20080420181134-ypu4ik21vc9ma1u9
1181 arn...@gm...-20080420192935-g59ddftmp35o6wdq
1182 arn...@gm...-20080420194530-qbyih90fixp3jevq
1183 arn...@gm...-20080420200905-mc0wa2egjt6k0783
1184 po...@12...-20080421110151-tm3apquwg3p4otyv
1185 po...@12...-20080421111032-2mwe6we5llzbqfj1
1186 arn...@gm...-20080421112743-av3pdgtq20m91f8c
1187 arn...@gm...-20080421122035-2ygc85ppjs7rhswn
1188 arn...@gm...-20080421194323-clug9p9pkjkgc0cw
1189 arn...@gm...-20080422063343-blx6k6y2ydxtbkjy
1190 po...@12...-20080422102607-kb3rl7h4i6alv3oo
1191 po...@12...-20080422143053-gsqp7dlvq1vwkahf
1192 arn...@gm...-20080423181453-79vl70wtqix7zxhf
1193 arn...@gm...-20080423184105-mp2f385vndp22m8f
1194 arn...@gm...-20080423185140-vz1vp66h0xzrxv6m
1195 arn...@gm...-20080423191309-bxflhitmwd36vix3
1196 arn...@gm...-20080423191718-3sc2ek2axdtc0b6e
1197 po...@12...-20080423223740-naz9ch6wp525yonb
1198 administrator@user315-m-20080424114244-eu0vcezrvqz7sf8t
1199 administrator@user315-m-20080424121241-ta23vg7isv4346qw
1200 po...@12...-20080424210032-97omp80p01ag7tlr
1201 arn...@gm...-20080424212827-v52bn9nu74id6fjx
1202 emtee-20080425102810-x4gbuupquvl3vja0
1203 arn...@gm...-20080426140033-767pxugmoex9ptgd
1204 arn...@gm...-20080426214311-qzauudh2fifjcir1
Modified: dcplusplus/trunk/win32/AspectUserCommand.h
===================================================================
--- dcplusplus/trunk/win32/AspectUserCommand.h 2008-04-29 19:09:02 UTC (rev 1228)
+++ dcplusplus/trunk/win32/AspectUserCommand.h 2008-04-29 19:10:02 UTC (rev 1229)
@@ -31,18 +31,16 @@
typedef AspectUserCommand<T> ThisType;
- template<typename MenuTypePtr>
- void prepareMenu(MenuTypePtr menu, int ctx, const string& hubUrl) {
+ void prepareMenu(dwt::MenuPtr menu, int ctx, const string& hubUrl) {
prepareMenu(menu, ctx, StringList(1, hubUrl));
}
- template<typename MenuTypePtr>
- void prepareMenu(MenuTypePtr menu, int ctx, const StringList& hubs) {
+ void prepareMenu(dwt::MenuPtr menu, int ctx, const StringList& hubs) {
userCommands = FavoriteManager::getInstance()->getUserCommands(ctx, hubs);
if(!userCommands.empty()) {
menu->appendSeparatorItem();
- MenuTypePtr cur = menu;
+ dwt::MenuPtr cur = menu;
for(size_t n = 0; n < userCommands.size(); ++n) {
UserCommand* uc = &userCommands[n];
Modified: dcplusplus/trunk/win32/SearchFrame.cpp
===================================================================
--- dcplusplus/trunk/win32/SearchFrame.cpp 2008-04-29 19:09:02 UTC (rev 1228)
+++ dcplusplus/trunk/win32/SearchFrame.cpp 2008-04-29 19:10:02 UTC (rev 1229)
@@ -49,25 +49,28 @@
SearchFrame::FrameSet SearchFrame::frames;
int SearchFrame::SearchInfo::getImage() {
+ const SearchResultPtr& sr = srs[0];
return sr->getType() == SearchResult::TYPE_FILE ? WinUtil::getIconIndex(Text::toT(sr->getFile())) : WinUtil::getDirIconIndex();
}
int SearchFrame::SearchInfo::compareItems(SearchInfo* a, SearchInfo* b, int col) {
switch(col) {
- case COLUMN_TYPE:
- if(a->sr->getType() == b->sr->getType())
- return lstrcmpi(a->columns[COLUMN_TYPE].c_str(), b->columns[COLUMN_TYPE].c_str());
- else
- return(a->sr->getType() == SearchResult::TYPE_DIRECTORY) ? -1 : 1;
- case COLUMN_SLOTS:
- if(a->sr->getFreeSlots() == b->sr->getFreeSlots())
- return compare(a->sr->getSlots(), b->sr->getSlots());
- else
- return compare(a->sr->getFreeSlots(), b->sr->getFreeSlots());
- case COLUMN_SIZE:
- case COLUMN_EXACT_SIZE: return compare(a->sr->getSize(), b->sr->getSize());
- default: return lstrcmpi(a->getText(col).c_str(), b->getText(col).c_str());
+ case COLUMN_NICK:
+ return compare(a->srs.size(), b->srs.size());
+ case COLUMN_TYPE:
+ if(a->srs[0]->getType() == b->srs[0]->getType())
+ return lstrcmpi(a->columns[COLUMN_TYPE].c_str(), b->columns[COLUMN_TYPE].c_str());
+ else
+ return(a->srs[0]->getType() == SearchResult::TYPE_DIRECTORY) ? -1 : 1;
+ case COLUMN_SLOTS:
+ if(a->srs[0]->getFreeSlots() == b->srs[0]->getFreeSlots())
+ return compare(a->srs[0]->getSlots(), b->srs[0]->getSlots());
+ else
+ return compare(a->srs[0]->getFreeSlots(), b->srs[0]->getFreeSlots());
+ case COLUMN_SIZE:
+ case COLUMN_EXACT_SIZE: return compare(a->srs[0]->getSize(), b->srs[0]->getSize());
+ default: return lstrcmpi(a->getText(col).c_str(), b->getText(col).c_str());
}
}
@@ -418,9 +421,9 @@
void SearchFrame::SearchInfo::view() {
try {
- if(sr->getType() == SearchResult::TYPE_FILE) {
- QueueManager::getInstance()->add(Util::getTempPath() + sr->getFileName(),
- sr->getSize(), sr->getTTH(), sr->getUser(),
+ if(srs[0]->getType() == SearchResult::TYPE_FILE) {
+ QueueManager::getInstance()->add(Util::getTempPath() + srs[0]->getFileName(),
+ srs[0]->getSize(), srs[0]->getTTH(), srs[0]->getUser(),
QueueItem::FLAG_CLIENT_VIEW | QueueItem::FLAG_TEXT);
}
} catch(const Exception&) {
@@ -429,15 +432,18 @@
void SearchFrame::SearchInfo::Download::operator()(SearchInfo* si) {
try {
- if(si->sr->getType() == SearchResult::TYPE_FILE) {
+ if(si->srs[0]->getType() == SearchResult::TYPE_FILE) {
string target = Text::fromT(tgt + si->columns[COLUMN_FILENAME]);
- QueueManager::getInstance()->add(target, si->sr->getSize(),
- si->sr->getTTH(), si->sr->getUser());
+ for(SearchResultList::const_iterator i = si->srs.begin(); i != si->srs.end(); ++i) {
+ const SearchResultPtr& sr = *i;
+ QueueManager::getInstance()->add(target, sr->getSize(),
+ sr->getTTH(), sr->getUser());
+ }
if(WinUtil::isShift())
QueueManager::getInstance()->setPriority(target, QueueItem::HIGHEST);
} else {
- QueueManager::getInstance()->addDirectory(si->sr->getFile(), si->sr->getUser(), Text::fromT(tgt),
+ QueueManager::getInstance()->addDirectory(si->srs[0]->getFile(), si->srs[0]->getUser(), Text::fromT(tgt),
WinUtil::isShift() ? QueueItem::HIGHEST : QueueItem::DEFAULT);
}
} catch(const Exception&) {
@@ -446,12 +452,13 @@
void SearchFrame::SearchInfo::DownloadWhole::operator()(SearchInfo* si) {
try {
+ // TODO Add all users...
QueueItem::Priority prio = WinUtil::isShift() ? QueueItem::HIGHEST : QueueItem::DEFAULT;
- if(si->sr->getType() == SearchResult::TYPE_FILE) {
+ if(si->srs[0]->getType() == SearchResult::TYPE_FILE) {
QueueManager::getInstance()->addDirectory(Text::fromT(si->columns[COLUMN_PATH]),
- si->sr->getUser(), Text::fromT(tgt), prio);
+ si->srs[0]->getUser(), Text::fromT(tgt), prio);
} else {
- QueueManager::getInstance()->addDirectory(si->sr->getFile(), si->sr->getUser(),
+ QueueManager::getInstance()->addDirectory(si->srs[0]->getFile(), si->srs[0]->getUser(),
Text::fromT(tgt), prio);
}
} catch(const Exception&) {
@@ -460,15 +467,18 @@
void SearchFrame::SearchInfo::DownloadTarget::operator()(SearchInfo* si) {
try {
- if(si->sr->getType() == SearchResult::TYPE_FILE) {
+ if(si->srs[0]->getType() == SearchResult::TYPE_FILE) {
string target = Text::fromT(tgt);
- QueueManager::getInstance()->add(target, si->sr->getSize(),
- si->sr->getTTH(), si->sr->getUser());
+ for(SearchResultList::const_iterator i = si->srs.begin(); i != si->srs.end(); ++i) {
+ const SearchResultPtr& sr = *i;
+ QueueManager::getInstance()->add(target, sr->getSize(),
+ sr->getTTH(), sr->getUser());
+ }
if(WinUtil::isShift())
QueueManager::getInstance()->setPriority(target, QueueItem::HIGHEST);
} else {
- QueueManager::getInstance()->addDirectory(si->sr->getFile(), si->sr->getUser(), Text::fromT(tgt),
+ QueueManager::getInstance()->addDirectory(si->srs[0]->getFile(), si->srs[0]->getUser(), Text::fromT(tgt),
WinUtil::isShift() ? QueueItem::HIGHEST : QueueItem::DEFAULT);
}
} catch(const Exception&) {
@@ -477,7 +487,7 @@
void SearchFrame::SearchInfo::getList() {
try {
- QueueManager::getInstance()->addList(sr->getUser(), QueueItem::FLAG_CLIENT_VIEW, Text::fromT(columns[COLUMN_PATH]));
+ QueueManager::getInstance()->addList(srs[0]->getUser(), QueueItem::FLAG_CLIENT_VIEW, Text::fromT(columns[COLUMN_PATH]));
} catch(const Exception&) {
// Ignore for now...
}
@@ -485,7 +495,7 @@
void SearchFrame::SearchInfo::browseList() {
try {
- QueueManager::getInstance()->addPfs(sr->getUser(), Text::fromT(columns[COLUMN_PATH]));
+ QueueManager::getInstance()->addPfs(srs[0]->getUser(), Text::fromT(columns[COLUMN_PATH]));
} catch(const Exception&) {
// Ignore for now...
}
@@ -503,14 +513,21 @@
}
if(firstHubs && hubs.empty()) {
- hubs = ClientManager::getInstance()->getHubs(si->sr->getUser()->getCID());
+ hubs = ClientManager::getInstance()->getHubs(si->srs[0]->getUser()->getCID());
firstHubs = false;
} else if(!hubs.empty()) {
- Util::intersect(hubs, ClientManager::getInstance()->getHubs(si->sr->getUser()->getCID()));
+ Util::intersect(hubs, ClientManager::getInstance()->getHubs(si->srs[0]->getUser()->getCID()));
}
}
+SearchFrame::SearchInfo::SearchInfo(const SearchResultPtr& aSR) {
+ srs.push_back(aSR);
+ update();
+}
+
void SearchFrame::SearchInfo::update() {
+ // TODO Use most common value, not the first one...
+ const SearchResultPtr& sr = srs[0];
if(sr->getType() == SearchResult::TYPE_FILE) {
if(sr->getFile().rfind(_T('\\')) == tstring::npos) {
columns[COLUMN_FILENAME] = Text::toT(sr->getFile());
@@ -533,8 +550,13 @@
columns[COLUMN_EXACT_SIZE] = Text::toT(Util::formatExactSize(sr->getSize()));
}
}
- columns[COLUMN_NICK] = WinUtil::getNicks(sr->getUser());
+ if(srs.size() > 1) {
+ columns[COLUMN_NICK] = str(TFN_("%1% user", "%1% users", srs.size()) % srs.size());
+ } else {
+ columns[COLUMN_NICK] = WinUtil::getNicks(sr->getUser());
+ }
columns[COLUMN_CONNECTION] = Text::toT(ClientManager::getInstance()->getConnection(sr->getUser()->getCID()));
+ // TODO Join hubs of all users
columns[COLUMN_HUB] = Text::toT(sr->getHubName());
columns[COLUMN_SLOTS] = Text::toT(sr->getSlotString());
columns[COLUMN_IP] = Text::toT(sr->getIP());
@@ -548,26 +570,43 @@
columns[COLUMN_TTH] = Text::toT(sr->getTTH().toBase32());
}
columns[COLUMN_CID] = Text::toT(sr->getUser()->getCID().toBase32());
-
}
LRESULT SearchFrame::handleSpeaker(WPARAM wParam, LPARAM lParam) {
switch(wParam) {
case SPEAK_ADD_RESULT:
{
+ bool added = false;
SearchInfo* si = reinterpret_cast<SearchInfo*>(lParam);
- const SearchResultPtr& sr = si->sr;
+ // Newly added ones always have just one result - we combine here
+ dcassert(si->srs.size() == 1);
+ const SearchResultPtr& sr = si->srs[0];
// Check previous search results for dupes
- for(int i = 0, j = results->size(); i < j; ++i) {
+ for(int i = 0, iend = results->size(); !added && i < iend; ++i) {
SearchInfo* si2 = results->getData(i);
- const SearchResultPtr& sr2 = si2->sr;
- if((sr->getUser()->getCID() == sr2->getUser()->getCID()) && (sr->getFile() == sr2->getFile())) {
- delete si;
- return 0;
+ for(SearchResultList::iterator j = si2->srs.begin(), jend = si2->srs.end(); j != jend; ++j) {
+ SearchResultPtr& sr2 = *j;
+ if((sr->getUser()->getCID() == sr2->getUser()->getCID()) && (sr->getFile() == sr2->getFile())) {
+ delete si;
+ return 0;
+ } else if(sr->getType() == SearchResult::TYPE_FILE && sr2->getType() == SearchResult::TYPE_FILE && sr->getTTH() == sr2->getTTH()) {
+ if(sr->getSize() != sr2->getSize()) {
+ delete si;
+ return 0;
+ }
+ si2->srs.push_back(sr);
+ si2->update();
+ delete si;
+ added = true;
+ results->update(i);
+ break;
+ }
}
}
- results->insert(si);
+ if(!added) {
+ results->insert(si);
+ }
setStatus(STATUS_COUNT, str(TFN_("%1% item", "%1% items", results->size()) % results->size()));
setDirty(SettingsManager::BOLD_SEARCH);
}
@@ -683,7 +722,7 @@
int i = results->getNext(-1, LVNI_SELECTED);
dcassert(i != -1);
SearchInfo* si = results->getData(i);
- const SearchResultPtr& sr = si->sr;
+ const SearchResultPtr& sr = si->srs[0];
if(sr->getType() == SearchResult::TYPE_FILE) {
tstring target = Text::toT(SETTING(DOWNLOAD_DIRECTORY)) + si->columns[COLUMN_FILENAME];
@@ -770,7 +809,7 @@
WinUtil::addHashItems(menu, TTHValue(Text::fromT(checkTTH.tth)), si->getText(COLUMN_FILENAME));
}
menu->appendSeparatorItem();
- appendUserItems(getParent(), menu);
+// appendUserItems(getParent(), menu);
menu->appendSeparatorItem();
menu->appendItem(IDC_REMOVE, T_("&Remove"), std::tr1::bind(&SearchFrame::handleRemove, this));
prepareMenu(menu, UserCommand::CONTEXT_SEARCH, checkTTH.hubs);
@@ -853,8 +892,8 @@
} else {
// match all here
for(TStringIter j = currentSearch.begin(); j != currentSearch.end(); ++j) {
- if((*j->begin() != _T('-') && Util::findSubString(aResult->getFile(), Text::fromT(*j)) == -1) ||
- (*j->begin() == _T('-') && j->size() != 1 && Util::findSubString(aResult->getFile(), Text::fromT(j->substr(1))) != -1)
+ if((*j->begin() != _T('-') && Util::findSubString(aResult->getFile(), Text::fromT(*j)) == tstring::npos) ||
+ (*j->begin() == _T('-') && j->size() != 1 && Util::findSubString(aResult->getFile(), Text::fromT(j->substr(1))) != tstring::npos)
)
{
droppedResults++;
@@ -1069,7 +1108,7 @@
int sel = -1;
while((sel = results->getNext(sel, LVNI_SELECTED)) != -1) {
- const SearchResultPtr& sr = results->getData(sel)->sr;
+ const SearchResultPtr& sr = results->getData(sel)->srs[0];
if(!sr->getUser()->isOnline())
continue;
Modified: dcplusplus/trunk/win32/SearchFrame.h
===================================================================
--- dcplusplus/trunk/win32/SearchFrame.h 2008-04-29 19:09:02 UTC (rev 1228)
+++ dcplusplus/trunk/win32/SearchFrame.h 2008-04-29 19:10:02 UTC (rev 1229)
@@ -82,14 +82,10 @@
static int columnIndexes[COLUMN_LAST];
static int columnSizes[COLUMN_LAST];
- class SearchInfo : public UserInfoBase {
+ class SearchInfo {
public:
- SearchInfo(const SearchResultPtr& aSR) : UserInfoBase(aSR->getUser()), sr(aSR) {
- update();
- }
- ~SearchInfo() {
-
- }
+ SearchInfo(const SearchResultPtr& aSR);
+ ~SearchInfo() { }
void getList();
void browseList();
@@ -128,7 +124,7 @@
void update();
- SearchResultPtr sr;
+ SearchResultList srs;
tstring columns[COLUMN_LAST];
};
Modified: dcplusplus/trunk/win32/UserInfoBase.h
===================================================================
--- dcplusplus/trunk/win32/UserInfoBase.h 2008-04-29 19:09:02 UTC (rev 1228)
+++ dcplusplus/trunk/win32/UserInfoBase.h 2008-04-29 19:10:02 UTC (rev 1229)
@@ -30,11 +30,11 @@
void getList();
void browseList();
void matchQueue();
- void pm(dwt::TabView*);
+ void pm(dwt::TabViewPtr);
void grant();
void addFav();
void removeAll();
- void connectFav(dwt::TabView*);
+ void connectFav(dwt::TabViewPtr);
UserPtr& getUser() { return user; }
UserPtr user;
@@ -70,13 +70,13 @@
// std::tr1::bind(&UserInfoBase::connectFav, _1, parent) doesn't seem to work with g++ svn 2007-07-30...
// wonder if it's me or the implementation as boost::bind/function swallows it...
struct Caller {
- Caller(dwt::TabView* parent_, void (UserInfoBase::*f_)(dwt::TabView*)) : parent(parent_), f(f_) { }
+ Caller(dwt::TabViewPtr parent_, void (UserInfoBase::*f_)(dwt::TabViewPtr)) : parent(parent_), f(f_) { }
void operator()(UserInfoBase* uib) { (uib->*f)(parent); }
- dwt::TabView* parent;
- void (UserInfoBase::*f)(dwt::TabView*);
+ dwt::TabViewPtr parent;
+ void (UserInfoBase::*f)(dwt::TabViewPtr);
};
- void handlePrivateMessage(dwt::TabView* parent) {
+ void handlePrivateMessage(dwt::TabViewPtr parent) {
static_cast<T*>(this)->getUserList()->forEachSelectedT(Caller(parent, &UserInfoBase::pm));
}
void handleGrantSlot() {
@@ -85,12 +85,11 @@
void handleRemoveAll() {
static_cast<T*>(this)->getUserList()->forEachSelected(&UserInfoBase::removeAll);
}
- void handleConnectFav(dwt::TabView* parent) {
+ void handleConnectFav(dwt::TabViewPtr parent) {
static_cast<T*>(this)->getUserList()->forEachSelectedT(Caller(parent, &UserInfoBase::connectFav));
}
- template<typename MenuType>
- void appendUserItems(dwt::TabView* parent, MenuType menu) {
+ void appendUserItems(dwt::TabViewPtr parent, dwt::MenuPtr menu) {
T* This = static_cast<T*>(this);
UserInfoBase::UserTraits traits = This->getUserList()->forEachSelectedT(UserInfoBase::UserTraits());
menu->appendItem(IDC_GETLIST, T_("&Get file list"), std::tr1::bind(&T::handleGetList, This));
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|