diff --git a/frontend/apps/cloudstorage/cloudstorage.lua b/frontend/apps/cloudstorage/cloudstorage.lua index addf0bb2f..b13ddf7c6 100644 --- a/frontend/apps/cloudstorage/cloudstorage.lua +++ b/frontend/apps/cloudstorage/cloudstorage.lua @@ -19,6 +19,7 @@ local logger = require("logger") local _ = require("gettext") local N_ = _.ngettext local T = require("ffi/util").template +local util = require("util") local CloudStorage = Menu:extend{ no_title = false, @@ -227,15 +228,18 @@ function CloudStorage:downloadFile(item) }) end - local function createTitle(filename_orig, filename, path) -- title for ButtonDialog - return T(_("Filename:\n%1\n\nDownload filename:\n%2\n\nDownload folder:\n%3"), - filename_orig, filename, BD.dirpath(path)) + local function createTitle(filename_orig, filesize, filename, path) -- title for ButtonDialog + local filesize_str = filesize and util.getFriendlySize(filesize) or _("N/A") + + return T(_("Filename:\n%1\n\nFile size:\n%2\n\nDownload filename:\n%3\n\nDownload folder:\n%4"), + filename_orig, filesize_str, filename, BD.dirpath(path)) end local cs_settings = self:readSettings() local download_dir = cs_settings:readSetting("download_dir") or G_reader_settings:readSetting("lastdir") local filename_orig = item.text local filename = filename_orig + local filesize = item.filesize local buttons = { { @@ -247,7 +251,7 @@ function CloudStorage:downloadFile(item) self.cs_settings:saveSetting("download_dir", path) self.cs_settings:flush() download_dir = path - self.download_dialog:setTitle(createTitle(filename_orig, filename, download_dir)) + self.download_dialog:setTitle(createTitle(filename_orig, filesize, filename, download_dir)) end, }:chooseDir(download_dir) end, @@ -278,7 +282,7 @@ function CloudStorage:downloadFile(item) filename = filename_orig end UIManager:close(input_dialog) - self.download_dialog:setTitle(createTitle(filename_orig, filename, download_dir)) + self.download_dialog:setTitle(createTitle(filename_orig, filesize, filename, download_dir)) end, }, } @@ -318,7 +322,7 @@ function CloudStorage:downloadFile(item) } self.download_dialog = ButtonDialog:new{ - title = createTitle(filename_orig, filename, download_dir), + title = createTitle(filename_orig, filesize, filename, download_dir), buttons = buttons, } UIManager:show(self.download_dialog) @@ -388,7 +392,6 @@ function CloudStorage:onMenuHold(item) callback = function() UIManager:close(cs_server_dialog) self:editCloudServer(item) - end }, { diff --git a/frontend/apps/cloudstorage/webdavapi.lua b/frontend/apps/cloudstorage/webdavapi.lua index dcb3c08de..3865d6163 100644 --- a/frontend/apps/cloudstorage/webdavapi.lua +++ b/frontend/apps/cloudstorage/webdavapi.lua @@ -67,7 +67,7 @@ function WebDavApi:listFolder(address, user, pass, folder_path, folder_mode) end local sink = {} - local data = [[]] + local data = [[]] socketutil:set_timeout() local request = { url = webdav_url, @@ -109,6 +109,9 @@ function WebDavApi:listFolder(address, user, pass, folder_path, folder_mode) item:find("<[^:]*:resourcetype>") local item_path = path .. "/" .. item_name + -- only available for files, not directories/collections + local item_filesize = item:match("<[^:]*:getcontentlength[^>]*>(%d+)") + if item:find("<[^:]*:collection[^<]*/>") then item_name = item_name .. "/" if not is_current_dir then @@ -124,6 +127,7 @@ function WebDavApi:listFolder(address, user, pass, folder_path, folder_mode) text = item_name, url = item_path, type = "file", + filesize = tonumber(item_filesize) }) end end @@ -143,6 +147,8 @@ function WebDavApi:listFolder(address, user, pass, folder_path, folder_mode) text = files.text, url = files.url, type = files.type, + filesize = files.filesize or nil, + mandatory = util.getFriendlySize(files.filesize) or nil }) end if folder_mode then