alias draw.playlist { drawrect -rfn @PlayList $hget(player, col.bg) 1 0 0 $window(@PlayList).w $window(@PlayList).h drawrect -rn @PlayList $rgb(180,180,180) 1 0 0 $window(@PlayList).w $window(@PlayList).h drawline -rn @PlayList $hget(player, col.hl) 1 1 $calc($window(@PlayList).h -2) 1 1 $calc($window(@PlayList).w - 2) 1 drawline -rn @PlayList $hget(player, col.sh) 1 1 $calc($window(@PlayList).h - 2) $calc($window(@PlayList).w - 2) $calc($window(@PlayList).h - 2) $calc($window(@PlayList).w - 2) 1 draw.detail @PlayList 10 10 $calc($window(@PlayList).w - 20) $calc($window(@PlayList).h - 22) draw.detail @PlayList 12 12 $calc($window(@PlayList).w - 24) 15 1 draw.text @PlayList tahoma -7 18 13 Playlist drawdot -rn @PlayList $hget(player, col.hl) 4 $calc($window(@PlayList).w - 5) $calc($window(@PlayList).h - 5) var %l = $int($calc(($window(@PlayList).h - 45) / 13)) hadd -m playlist disp.lines %l hadd -m scrollbar 1 $calc($window(@PlayList).w - 24) 28 13 $calc($window(@PlayList).h - 40) $iif($hget(playlist, FILE0), $ifmatch, 0) %l draw.scroll $hget(playlist, inlist) draw.buffer $calc($hget(playlist, line.start) - 1) drawdot @PlayList } alias draw.scroll { var %p = $iif($1, $ifmatch, 0) tokenize 32 $hget(scrollbar, 1) var %s = $iif($5 <= $6, 1, $iif($calc($6 / $5) < 0.07, 0.07, $v1))), %x = $1, %y = $int($calc(((%p / 100 * $4) * (1 - %s)) + $2)), %w = $calc($3 - 1), %h = $ceil($calc($4 * %s - 1)) drawrect -rnf @PlayList $hget(player, col.bg) 1 $1 $2 $3 $4 draw.detail @PlayList %x %y %w %h 1 drawdot @playlist } alias draw.buffer { var %x = 12, %y = 28, %w = $calc($window(@PlayList).w - 36), %h = $calc($window(@PlayList).h - 41), %a = 1, %b = $hget(playlist, disp.lines), %c = $hget(playlist, FILE0), %l, %z if ($1 isnum) { if ($1 isnum) { %l = $ifmatch else { %l = 0 } } } elseif ($active == @PlayList) { %l = $int($calc((($mouse.y - 27) / %h) * (%c - %b))) if (%l !isnum 0- $+ %c) { return } } else { %l = $hget(playlist, line.start) } if ($calc(%b + 13) > %h) { dec %b 13 } hadd -m playlist line.start $calc(%l + 1) hadd -m playlist line.end $calc(%l + %b) drawrect -rfn @PlayList $hget(player, col.mg) 1 %x %y %w %h while (%a <= %b) { %z = $calc(%a + %l) if ($hget(playlist, FILE $+ %z)) { draw.text -c @PlayList "verdana" -7 18 $calc((13 * %a) + 17) $calc(%w - 10) 14 $gettok($ifmatch, 1, 9) } else { break } inc %a } draw.select | check.buffer %l %b } alias check.buffer { var %a = 1, %b = $2, %c = $1, %d, %f, %l if ($mouse.key) { .timercheck_buffer 1 0 check.buffer $1- return } while (%a <= %b) && ($whilefix) { %d = $calc(%a + %c) if ($hget(playlist, FILE $+ %d)) { %f = $ifmatch } else { break } if ("*" iswm %f) { %l = $duration($calc($sound(%f).length / 1000), 3) if ($gettok(%l, 1, 58) == 00) { %l = $gettok(%l, 2-, 58) } tokenize 32 $+($iif($sound(%f).artist, $ifmatch $+(-, $chr(32))), $iif($sound(%f).title, $ifmatch, $nopath(%f)) [, %l, $iif($sound(%f).bitrate, $+($chr(32), -, $chr(32), $ifmatch kbps)), ]) hadd playlist FILE $+ %d $+($1-, $chr(9), %f) drawrect -rfn @PlayList $hget(player, col.mg) 1 12 $calc((13 * %a) + 18) $calc($window(@PlayList).w - 36) 13 draw.text -c @PlayList "verdana" -7 18 $calc((13 * %a) + 18) $calc($window(@PlayList).w - 45) 14 $1- drawdot @PlayList } inc %a } draw.select } alias draw.select { var %w = $calc($window(@PlayList).w - 41), %x, %y = $hget(playlist, line.start), %z = $hget(playlist, line.end) if ($1) { if ($hget(playlist, select)) { %x = $ifmatch if (%x isnum $+(%y, -, %z)) { var %a = $calc(((%x - %y) * 13) + 31) drawreplace -nr @PlayList $hget(player, col.bg) $hget(player, col.mg) 14 %a %w 14 drawrect -rn @PlayList $hget(player, col.mg) 1 14 %a %w 14 } } hadd playlist select $calc((%y + $1) - 1) } %x = $hget(playlist, select) if (%x isnum $+(%y, -, %z)) { var %a = $calc(((%x - %y) * 13) + 31) drawreplace -nr @PlayList $hget(player, col.mg) $hget(player, col.bg) 14 %a %w 14 drawrect -nr @PlayList $rgb(157,167,177) 1 14 %a %w 14 } drawdot @PlayList }