From 7fdec8a9807efe1621ec171540c882aa494ddc80 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Sun, 8 Apr 2012 14:31:23 +0800 Subject: [PATCH] fix: handle screen resolution correctly in filesearcher --- filechooser.lua | 2 +- filesearcher.lua | 38 ++++++++++++++++++-------------------- 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/filechooser.lua b/filechooser.lua index cb5a5aaf5..301cd052b 100644 --- a/filechooser.lua +++ b/filechooser.lua @@ -197,7 +197,7 @@ function FileChooser:choose(ypos, height) --]] return nil, function() FileSearcher:init( self.path ) - FileSearcher:choose(ypos, height, keywords) + FileSearcher:choose(keywords) end end pagedirty = true diff --git a/filesearcher.lua b/filesearcher.lua index 54fa5ee54..0a86af39a 100644 --- a/filesearcher.lua +++ b/filesearcher.lua @@ -147,7 +147,7 @@ function FileSearcher:addAllCommands() end end ) - self.commands:add(KEY_PGFWD, nil, "<", + self.commands:add(KEY_PGBCK, nil, "<", "previous page", function(self) if self.page > 1 then @@ -199,12 +199,10 @@ function FileSearcher:addAllCommands() openFile(file_full_path) --reset height and item index if screen has been rotated - local old_perpage = self.perpage - height = math.floor(fb.bb:getHeight()*height_percent) + local item_no = self.perpage * (self.page - 1) + self.current self.perpage = math.floor(height / self.spacing) - 2 - self.current = (old_perpage * (self.page - 1) + - self.current) % self.perpage - self.page = math.floor(self.items / self.perpage) + 1 + self.current = item_no % self.perpage + self.page = math.floor(item_no / self.perpage) + 1 self.pagedirty = true end @@ -217,7 +215,7 @@ function FileSearcher:addAllCommands() ) end -function FileSearcher:choose(ypos, height, keywords) +function FileSearcher:choose(keywords) self.perpage = math.floor(height / self.spacing) - 2 self.pagedirty = true self.markerdirty = false @@ -236,16 +234,16 @@ function FileSearcher:choose(ypos, height, keywords) if self.pagedirty then self.markerdirty = true - fb.bb:paintRect(0, ypos, fb.bb:getWidth(), height, 0) + fb.bb:paintRect(0, 0, width, height, 0) -- draw menu title - renderUtf8Text(fb.bb, 30, ypos + self.title_H, tface, tfhash, + renderUtf8Text(fb.bb, 30, 0 + self.title_H, tface, tfhash, "Search Result for: "..keywords, true) -- draw results local c if self.items == 0 then -- nothing found - y = ypos + self.title_H + self.spacing * 2 + y = self.title_H + self.spacing * 2 renderUtf8Text(fb.bb, 20, y, cface, cfhash, "Sorry, no match found.", true) renderUtf8Text(fb.bb, 20, y + self.spacing, cface, cfhash, @@ -255,7 +253,7 @@ function FileSearcher:choose(ypos, height, keywords) for c = 1, self.perpage do local i = (self.page - 1) * self.perpage + c if i <= self.items then - y = ypos + self.title_H + (self.spacing * c) + y = self.title_H + (self.spacing * c) renderUtf8Text(fb.bb, 50, y, cface, cfhash, self.result[i].name, true) end @@ -263,8 +261,8 @@ function FileSearcher:choose(ypos, height, keywords) end -- draw footer - y = ypos + self.title_H + (self.spacing * self.perpage) + self.foot_H - x = (fb.bb:getWidth() / 2) - 50 + y = self.title_H + (self.spacing * self.perpage) + self.foot_H + x = (width / 2) - 50 all_page = (math.floor(self.items / self.perpage)+1) renderUtf8Text(fb.bb, x, y, fface, ffhash, "Page "..self.page.." of "..all_page, true) @@ -273,23 +271,23 @@ function FileSearcher:choose(ypos, height, keywords) if self.markerdirty then if not self.pagedirty then if self.oldcurrent > 0 then - y = ypos + self.title_H + (self.spacing * self.oldcurrent) + 10 - fb.bb:paintRect(30, y, fb.bb:getWidth() - 60, 3, 0) - fb:refresh(1, 30, y, fb.bb:getWidth() - 60, 3) + y = self.title_H + (self.spacing * self.oldcurrent) + 10 + fb.bb:paintRect(30, y, width - 60, 3, 0) + fb:refresh(1, 30, y, width - 60, 3) end end -- draw new marker line - y = ypos + self.title_H + (self.spacing * self.current) + 10 - fb.bb:paintRect(30, y, fb.bb:getWidth() - 60, 3, 15) + y = self.title_H + (self.spacing * self.current) + 10 + fb.bb:paintRect(30, y, width - 60, 3, 15) if not self.pagedirty then - fb:refresh(1, 30, y, fb.bb:getWidth() - 60, 3) + fb:refresh(1, 30, y, width - 60, 3) end self.oldcurrent = self.current self.markerdirty = false end if self.pagedirty then - fb:refresh(0, 0, ypos, fb.bb:getWidth(), height) + fb:refresh(0, 0, 0, width, height) self.pagedirty = false end