--- a/Preferences/__init__.py Thu Jan 18 11:10:57 2018 +0100 +++ b/Preferences/__init__.py Thu Jan 18 18:57:40 2018 +0100 @@ -1240,6 +1240,27 @@ }) except AttributeError: pass + try: + # Qt 5.9+ + cls.webBrowserDefaults.update({ + "AllowGeolocationOnInsecureOrigins": + webEngineSettings.testAttribute( + QWebEngineSettings.AllowGeolocationOnInsecureOrigins), + }) + except AttributeError: + pass + try: + # Qt 5.10+ + cls.webBrowserDefaults.update({ + "AllowWindowActivationFromJavaScript": + webEngineSettings.testAttribute( + QWebEngineSettings.AllowWindowActivationFromJavaScript + ), + "ShowScrollBars": webEngineSettings.testAttribute( + QWebEngineSettings.ShowScrollBars), + }) + except AttributeError: + pass cls.webEngineSettingsIntitialized = True @@ -2707,8 +2728,9 @@ keywords.append((keyword, engineName)) prefClass.settings.endArray() return keywords - elif key in ["DownloadManagerDownloads"]: - # return a list of tuples of (URL, save location, done flag, page url) + elif key == "DownloadManagerDownloads": + # return a list of tuples of (URL, save location, done flag, page url, + # date/time downloaded) downloads = [] length = prefClass.settings.beginReadArray("Help/" + key) for index in range(length): @@ -2722,6 +2744,9 @@ downloaded = prefClass.settings.value("Downloaded") if downloaded is None: downloaded = QDateTime() + else: + downloaded = QDateTime.fromString( + downloaded, "yyyy-MM-dd hh:mm:ss") downloads.append((url, location, done, pageUrl, downloaded)) prefClass.settings.endArray() return downloads @@ -2818,7 +2843,8 @@ index += 1 prefClass.settings.endArray() elif key == "DownloadManagerDownloads": - # value is list of tuples of (URL, save location, done flag, page url) + # value is list of tuples of (URL, save location, done flag, page url, + # date/time downloaded) prefClass.settings.remove("Help/" + key) prefClass.settings.beginWriteArray("Help/" + key, len(value)) index = 0 @@ -2828,6 +2854,8 @@ prefClass.settings.setValue("Location", v[1]) prefClass.settings.setValue("Done", v[2]) prefClass.settings.setValue("PageURL", v[3]) + prefClass.settings.setValue( + "Downloaded", v[4].toString("yyyy-MM-dd hh:mm:ss")) index += 1 prefClass.settings.endArray() elif key == "RssFeeds": @@ -2898,22 +2926,27 @@ keywords.append((keyword, engineName)) prefClass.settings.endArray() return keywords - elif key in ["DownloadManagerDownloads"]: - # return a list of tuples of (URL, save location, done flag, page url) + elif key == "DownloadManagerDownloads": + # return a list of dicts containing the URL, save location, done flag, + # page URL, date/time downloaded downloads = [] length = prefClass.settings.beginReadArray("WebBrowser/" + key) for index in range(length): + download = {} prefClass.settings.setArrayIndex(index) - url = prefClass.settings.value("URL") - location = prefClass.settings.value("Location") - done = toBool(prefClass.settings.value("Done")) - pageUrl = prefClass.settings.value("PageURL") - if pageUrl is None: - pageUrl = QUrl() - downloaded = prefClass.settings.value("Downloaded") - if downloaded is None: - downloaded = QDateTime() - downloads.append((url, location, done, pageUrl, downloaded)) + download["URL"] = prefClass.settings.value("URL") + download["Location"] = prefClass.settings.value("Location") + download["Done"] = toBool(prefClass.settings.value("Done")) + download["PageURL"] = prefClass.settings.value("PageURL") + if download["PageURL"] is None: + download["PageURL"] = QUrl() + download["Downloaded"] = prefClass.settings.value("Downloaded") + if download["Downloaded"] is None: + download["Downloaded"] = QDateTime() + else: + download["Downloaded"] = QDateTime.fromString( + download["Downloaded"], "yyyy-MM-dd hh:mm:ss") + downloads.append(download) prefClass.settings.endArray() return downloads elif key == "RssFeeds": @@ -2974,7 +3007,8 @@ "BookmarksToolBarVisible", "StatusBarVisible", "SessionAutoSave", "LoadTabOnActivation", "SafeBrowsingEnabled", "SafeBrowsingFilterPlatform", - "SafeBrowsingAutoUpdate", + "SafeBrowsingAutoUpdate", "AllowGeolocationOnInsecureOrigins", + "AllowWindowActivationFromJavaScript", "ShowScrollBars", ]: return toBool(prefClass.settings.value( "WebBrowser/" + key, prefClass.webBrowserDefaults[key])) @@ -3027,17 +3061,19 @@ index += 1 prefClass.settings.endArray() elif key == "DownloadManagerDownloads": - # value is list of tuples of (URL, save location, done flag, page url) + # value is list of dicts containing the URL, save location, done flag, + # page URL, date/time downloaded prefClass.settings.remove("Help/" + key) prefClass.settings.beginWriteArray("WebBrowser/" + key, len(value)) index = 0 for v in value: prefClass.settings.setArrayIndex(index) - prefClass.settings.setValue("URL", v[0]) - prefClass.settings.setValue("Location", v[1]) - prefClass.settings.setValue("Done", v[2]) - prefClass.settings.setValue("PageURL", v[3]) - prefClass.settings.setValue("Downloaded", v[4]) + prefClass.settings.setValue("URL", v["URL"]) + prefClass.settings.setValue("Location", v["Location"]) + prefClass.settings.setValue("Done", v["Done"]) + prefClass.settings.setValue("PageURL", v["PageURL"]) + prefClass.settings.setValue( + "Downloaded", v["Downloaded"].toString("yyyy-MM-dd hh:mm:ss")) index += 1 prefClass.settings.endArray() elif key == "RssFeeds":