diff --git a/frontend/ui/widget/imageviewer.lua b/frontend/ui/widget/imageviewer.lua index 7ee9012c1..389535ee7 100644 --- a/frontend/ui/widget/imageviewer.lua +++ b/frontend/ui/widget/imageviewer.lua @@ -80,11 +80,21 @@ local ImageViewer = InputContainer:new{ function ImageViewer:init() if Device:hasKeys() then - self.key_events = { - Close = { {Device.input.group.Back}, doc = "close viewer" }, - ZoomIn = { {Device.input.group.PgBack}, doc = "Zoom In" }, - ZoomOut = { {Device.input.group.PgFwd}, doc = "Zoom out" }, - } + if type(self.image) == "table" then + -- if self.image is a table, then use hardware keys to change image + self.key_events = { + Close = { {Device.input.group.Back}, doc = "close viewer" }, + ShowPrevImage = { {Device.input.group.PgBack}, doc = "Previous image" }, + ShowNextImage = { {Device.input.group.PgFwd}, doc = "Next image" }, + } + else + -- otherwise, use hardware keys to zoom in/out + self.key_events = { + Close = { {Device.input.group.Back}, doc = "close viewer" }, + ZoomIn = { {Device.input.group.PgBack}, doc = "Zoom In" }, + ZoomOut = { {Device.input.group.PgFwd}, doc = "Zoom out" }, + } + end end if Device:isTouchDevice() then local range = Geom:new{ @@ -449,6 +459,19 @@ function ImageViewer:switchToImageNum(image_num) self:update() end +-- Image switching events +function ImageViewer:onShowNextImage() + if self._images_list_cur < self._images_list_nb then + self:switchToImageNum(self._images_list_cur + 1) + end +end + +function ImageViewer:onShowPrevImage() + if self._images_list_cur > 1 then + self:switchToImageNum(self._images_list_cur - 1) + end +end + function ImageViewer:onTap(_, ges) if ges.pos:notIntersectWith(self.main_frame.dimen) then self:onClose() @@ -479,13 +502,9 @@ function ImageViewer:onTap(_, ges) show_next_image = not BD.mirroredUILayout() end if show_prev_image then - if self._images_list_cur > 1 then - self:switchToImageNum(self._images_list_cur - 1) - end + self:onShowPrevImage() elseif show_next_image then - if self._images_list_cur < self._images_list_nb then - self:switchToImageNum(self._images_list_cur + 1) - end + self:onShowNextImage() else -- toggle buttons when tap on middle 1/3 of screen width self.buttons_visible = not self.buttons_visible self:update()