From: <arn...@us...> - 2008-04-24 13:28:41
|
Revision: 1196 http://dcplusplus.svn.sourceforge.net/dcplusplus/?rev=1196&view=rev Author: arnetheduck Date: 2008-04-24 06:28:24 -0700 (Thu, 24 Apr 2008) Log Message: ----------- initial progress bars, at some point they should probably be moved to dwt Modified Paths: -------------- dcplusplus/trunk/win32/TransferView.cpp dcplusplus/trunk/win32/TransferView.h dcplusplus/trunk/win32/WinUtil.cpp dcplusplus/trunk/win32/WinUtil.h Property Changed: ---------------- dcplusplus/trunk/ Property changes on: dcplusplus/trunk ___________________________________________________________________ Name: bzr:revision-info - timestamp: 2008-04-19 18:47:22.151999950 +0200 committer: Jacek Sieka <arn...@gm...> properties: branch-nick: dcplusplus + timestamp: 2008-04-19 18:48:02.542000055 +0200 committer: Jacek Sieka <arn...@gm...> properties: branch-nick: dcplusplus 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 + 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 Modified: dcplusplus/trunk/win32/TransferView.cpp =================================================================== --- dcplusplus/trunk/win32/TransferView.cpp 2008-04-24 13:27:20 UTC (rev 1195) +++ dcplusplus/trunk/win32/TransferView.cpp 2008-04-24 13:28:24 UTC (rev 1196) @@ -127,6 +127,7 @@ downloads->setSmallImageList(WinUtil::fileImages); downloads->onContextMenu(std::tr1::bind(&TransferView::handleDownloadsMenu, this, _1)); + downloads->onRaw(std::tr1::bind(&TransferView::handleCustomDraw, this, _1, _2), dwt::Message(WM_NOTIFY, NM_CUSTOMDRAW)); } connectionsWindow->onSized(std::tr1::bind(&fills, connectionsWindow, connections)); @@ -282,113 +283,126 @@ } } -#ifdef PORT_ME -LRESULT TransferView::onCustomDraw(int /*idCtrl*/, LPNMHDR pnmh, BOOL& bHandled) { - if(!BOOLSETTING(SHOW_PROGRESS_BARS)) { - bHandled = FALSE; - return 0; - } +static inline void drawProgress(HDC hdc, const dwt::Rectangle& rcItem, int item, int column, const tstring& text, double pos, COLORREF fgColor) { + // draw something nice... + COLORREF barBase = fgColor; + COLORREF bgBase = WinUtil::bgColor; + int mod = (HLS_L(RGB2HLS(bgBase)) >= 128) ? -30 : 30; + + // Dark, medium and light shades + COLORREF barPal[3] = { HLS_TRANSFORM(barBase, -40, 50), barBase, HLS_TRANSFORM(barBase, 40, -30) }; + + // Two shades of the background color + COLORREF bgPal[2] = { HLS_TRANSFORM(bgBase, mod, 0), HLS_TRANSFORM(bgBase, mod/2, 0) }; - CRect rc; - LPNMLVCUSTOMDRAW cd = (LPNMLVCUSTOMDRAW)pnmh; + dwt::Rectangle rc = rcItem; - switch(cd->nmcd.dwDrawStage) { - case CDDS_PREPAINT: - return CDRF_NOTIFYITEMDRAW; + // draw background + HGDIOBJ oldbr = ::SelectObject(hdc, ::CreateSolidBrush(bgPal[1])); + HGDIOBJ oldpen = ::SelectObject(hdc, ::CreatePen(PS_SOLID, 0, bgPal[0])); + + // TODO Don't draw where the finished part will be drawn + ::Rectangle(hdc, rc.left(), rc.top() - 1, rc.right(), rc.bottom()); + + rc.pos.x += 1; + rc.size.x -= 2; + rc.size.y -= 1; + + long w = rc.width(); + + ::DeleteObject(::SelectObject(hdc, ::CreateSolidBrush(barPal[1]))); + ::DeleteObject(::SelectObject(hdc, ::CreatePen(PS_SOLID, 0, barPal[0]))); + + // "Finished" part + rc.size.x = (int) (w * pos); - case CDDS_ITEMPREPAINT: - return CDRF_NOTIFYSUBITEMDRAW; + ::Rectangle(hdc, rc.left(), rc.top(), rc.right(), rc.bottom()); - case CDDS_SUBITEM | CDDS_ITEMPREPAINT: - // Let's draw a box if needed... - if(cd->iSubItem == COLUMN_STATUS) { - ConnectionInfo* ii = (ConnectionInfo*)cd->nmcd.lItemlParam; - if(ii->status == ConnectionInfo::STATUS_RUNNING) { - // draw something nice... - TCHAR buf[256]; - COLORREF barBase = ii->download ? SETTING(DOWNLOAD_BAR_COLOR) : SETTING(UPLOAD_BAR_COLOR); - COLORREF bgBase = WinUtil::bgColor; - int mod = (HLS_L(RGB2HLS(bgBase)) >= 128) ? -30 : 30; - COLORREF barPal[3] = { HLS_TRANSFORM(barBase, -40, 50), barBase, HLS_TRANSFORM(barBase, 40, -30) }; - COLORREF bgPal[2] = { HLS_TRANSFORM(bgBase, mod, 0), HLS_TRANSFORM(bgBase, mod/2, 0) }; + RECT clipRect = rc; - connections->GetItemText((int)cd->nmcd.dwItemSpec, COLUMN_STATUS, buf, 255); - buf[255] = 0; + // draw progressbar highlight + if(rc.width()>2) { + ::DeleteObject(::SelectObject(hdc, ::CreatePen(PS_SOLID, 1, barPal[2]))); - connections->GetSubItemRect((int)cd->nmcd.dwItemSpec, COLUMN_STATUS, LVIR_BOUNDS, rc); - CRect rc2 = rc; - rc2.left += 6; + rc.pos.y += 2; + ::MoveToEx(hdc, rc.left()+1, rc.top(), (LPPOINT)NULL); + ::LineTo(hdc, rc.right()-2, rc.top()); + } - // draw background - HGDIOBJ oldpen = ::SelectObject(cd->nmcd.hdc, CreatePen(PS_SOLID,0,bgPal[0])); - HGDIOBJ oldbr = ::SelectObject(cd->nmcd.hdc, CreateSolidBrush(bgPal[1])); - ::Rectangle(cd->nmcd.hdc, rc.left, rc.top - 1, rc.right, rc.bottom); - rc.DeflateRect(1, 0, 1, 1); + // draw status text + ::DeleteObject(::SelectObject(hdc, oldpen)); + ::DeleteObject(::SelectObject(hdc, oldbr)); - LONG left = rc.left; - int64_t w = rc.Width(); - // draw start part - if(ii->size == 0) - ii->size = 1; - rc.right = left + (int) (w * ii->start / ii->size); - DeleteObject(SelectObject(cd->nmcd.hdc, CreateSolidBrush(barPal[0]))); - DeleteObject(SelectObject(cd->nmcd.hdc, CreatePen(PS_SOLID,0,barPal[0]))); + dwt::Rectangle rcText = rcItem; + rcText.pos.x += 6; + rcText.size.x -= 6; - ::Rectangle(cd->nmcd.hdc, rc.left, rc.top, rc.right, rc.bottom); + HRGN clipRgn = ::CreateRectRgnIndirect(&clipRect); + + ::SelectClipRgn(hdc, clipRgn); + ::SetTextColor(hdc, RGB(255, 255, 255)); + RECT textRect = rcText; + + int oldMode = ::SetBkMode(hdc, TRANSPARENT); + + ::DrawText(hdc, text.c_str(), text.size(), &textRect, DT_LEFT | DT_VCENTER | DT_SINGLELINE); + + clipRect.left = clipRect.right; + clipRect.right = rcItem.right(); + + ::DeleteObject(clipRgn); + clipRgn = ::CreateRectRgnIndirect(&clipRect); + ::SetTextColor(hdc, WinUtil::textColor); + + ::SelectClipRgn(hdc, clipRgn); + ::DrawText(hdc, text.c_str(), text.size(), &textRect, DT_LEFT | DT_VCENTER | DT_SINGLELINE); - // Draw actual part - rc.left = rc.right; - rc.right = left + (int) (w * ii->actual / ii->size); - DeleteObject(SelectObject(cd->nmcd.hdc, CreateSolidBrush(barPal[1]))); + ::SetBkMode(hdc, oldMode); + ::DeleteObject(clipRgn); + + ::SelectClipRgn(hdc, NULL); - ::Rectangle(cd->nmcd.hdc, rc.left, rc.top, rc.right, rc.bottom); +} - // And the effective part... - if(ii->pos > ii->actual) { - rc.left = rc.right - 1; - rc.right = left + (int) (w * ii->pos / ii->size); - DeleteObject(SelectObject(cd->nmcd.hdc, CreateSolidBrush(barPal[2]))); +LRESULT TransferView::handleCustomDraw(WPARAM wParam, LPARAM lParam) { + if(!BOOLSETTING(SHOW_PROGRESS_BARS)) { + return 0; + } + + LPNMLVCUSTOMDRAW cd = (LPNMLVCUSTOMDRAW)lParam; + int item = (int)cd->nmcd.dwItemSpec; + int column = cd->iSubItem; + + switch(cd->nmcd.dwDrawStage) { + case CDDS_PREPAINT: + return CDRF_NOTIFYITEMDRAW; - ::Rectangle(cd->nmcd.hdc, rc.left, rc.top, rc.right, rc.bottom); + case CDDS_ITEMPREPAINT: + return CDRF_NOTIFYSUBITEMDRAW; - } - rc.left = left; - // draw progressbar highlight - if(rc.Width()>2) { - DeleteObject(SelectObject(cd->nmcd.hdc, CreatePen(PS_SOLID,1,barPal[2]))); + case CDDS_SUBITEM | CDDS_ITEMPREPAINT: + // Let's draw a box if needed... + if(column == DOWNLOAD_COLUMN_STATUS) { + + HDC hdc = cd->nmcd.hdc; + DownloadInfo* di = reinterpret_cast<DownloadInfo*>(cd->nmcd.lItemlParam); + const tstring& text = di->columns[column]; - rc.top += 2; - ::MoveToEx(cd->nmcd.hdc,rc.left+1,rc.top,(LPPOINT)NULL); - ::LineTo(cd->nmcd.hdc,rc.right-2,rc.top); - } + RECT r; + ListView_GetSubItemRect( downloads->handle(), item, column, LVIR_BOUNDS, &r ); - // draw status text - DeleteObject(::SelectObject(cd->nmcd.hdc, oldpen)); - DeleteObject(::SelectObject(cd->nmcd.hdc, oldbr)); - - LONG right = rc2.right; - left = rc2.left; - rc2.right = rc.right; - LONG top = rc2.top + (rc2.Height() - WinUtil::getTextHeight(cd->nmcd.hdc) - 1)/2; - SetTextColor(cd->nmcd.hdc, RGB(255, 255, 255)); - ::ExtTextOut(cd->nmcd.hdc, left, top, ETO_CLIPPED, rc2, buf, _tcslen(buf), NULL); - //::DrawText(cd->nmcd.hdc, buf, strlen(buf), rc2, DT_LEFT | DT_NOPREFIX | DT_SINGLELINE | DT_VCENTER); - - rc2.left = rc2.right; - rc2.right = right; - - SetTextColor(cd->nmcd.hdc, WinUtil::textColor); - ::ExtTextOut(cd->nmcd.hdc, left, top, ETO_CLIPPED, rc2, buf, _tcslen(buf), NULL); - - return CDRF_SKIPDEFAULT; - } + int64_t size = di->size == 0 ? 1 : di->size; + double pos = static_cast<double>(di->done) / size; + + drawProgress(hdc, r, item, column, text, pos, SETTING(DOWNLOAD_BAR_COLOR)); + + return CDRF_SKIPDEFAULT; } // Fall through default: return CDRF_DODEFAULT; } } -#endif void TransferView::handleDblClicked() { ConnectionInfo* ii = connections->getSelectedData(); Modified: dcplusplus/trunk/win32/TransferView.h =================================================================== --- dcplusplus/trunk/win32/TransferView.h 2008-04-24 13:27:20 UTC (rev 1195) +++ dcplusplus/trunk/win32/TransferView.h 2008-04-24 13:28:24 UTC (rev 1196) @@ -296,9 +296,7 @@ void onTransferComplete(Transfer* aTransfer, bool isDownload); void starting(UpdateInfo* ui, Transfer* t); -#ifdef PORT_ME - LRESULT onCustomDraw(int /*idCtrl*/, LPNMHDR pnmh, BOOL& bHandled); -#endif + LRESULT handleCustomDraw(WPARAM wParam, LPARAM lParam); }; #endif // !defined(TRANSFER_VIEW_H) Modified: dcplusplus/trunk/win32/WinUtil.cpp =================================================================== --- dcplusplus/trunk/win32/WinUtil.cpp 2008-04-24 13:27:20 UTC (rev 1195) +++ dcplusplus/trunk/win32/WinUtil.cpp 2008-04-24 13:28:24 UTC (rev 1196) @@ -596,6 +596,19 @@ #define COMPILE_MULTIMON_STUBS 1 #include <MultiMon.h> +void WinUtil::splitTokens(int* array, const string& tokens, int maxItems /* = -1 */) throw() { + StringTokenizer<string> t(tokens, _T(',')); + StringList& l = t.getTokens(); + if(maxItems == -1) + maxItems = l.size(); + + int k = 0; + for(StringList::const_iterator i = l.begin(); i != l.end() && k < maxItems; ++i, ++k) { + array[k] = Util::toInt(*i); + } +} +#endif + HLSCOLOR RGB2HLS (COLORREF rgb) { unsigned char minval = min(GetRValue(rgb), min(GetGValue(rgb), GetBValue(rgb))); unsigned char maxval = max(GetRValue(rgb), max(GetGValue(rgb), GetBValue(rgb))); @@ -621,7 +634,7 @@ return HLS ((hue*255)/360, luminance*255, saturation*255); } -static BYTE _ToRGB (float rm1, float rm2, float rh) { +static inline BYTE _ToRGB (float rm1, float rm2, float rh) { if (rh > 360.0f) rh -= 360.0f; else if (rh < 0.0f) rh += 360.0f; @@ -671,19 +684,6 @@ return HLS2RGB (HLS(h, l, s)); } -void WinUtil::splitTokens(int* array, const string& tokens, int maxItems /* = -1 */) throw() { - StringTokenizer<string> t(tokens, _T(',')); - StringList& l = t.getTokens(); - if(maxItems == -1) - maxItems = l.size(); - - int k = 0; - for(StringList::const_iterator i = l.begin(); i != l.end() && k < maxItems; ++i, ++k) { - array[k] = Util::toInt(*i); - } -} -#endif - void WinUtil::registerDchubHandler() { HKEY hk; TCHAR Buf[512]; Modified: dcplusplus/trunk/win32/WinUtil.h =================================================================== --- dcplusplus/trunk/win32/WinUtil.h 2008-04-24 13:27:20 UTC (rev 1195) +++ dcplusplus/trunk/win32/WinUtil.h 2008-04-24 13:28:24 UTC (rev 1196) @@ -25,7 +25,6 @@ #include <dcpp/MerkleTree.h> #include "WidgetFactory.h" -#ifdef PORT_ME // Some utilities for handling HLS colors, taken from Jean-Michel LE FOL's codeproject // article on WTL OfficeXP Menus typedef DWORD HLSCOLOR; @@ -39,8 +38,6 @@ COLORREF HLS_TRANSFORM (COLORREF rgb, int percent_L, int percent_S); -#endif - class MainWindow; class WinUtil { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |