Also save the QUrl in a HistoryEntry.

We also use QUrl::toDisplayString for the completion so things like spaces or
umlauts are decoded properly.
This commit is contained in:
Florian Bruhin 2015-03-16 07:03:01 +01:00
parent 46c31911a6
commit 553d8cf986
2 changed files with 11 additions and 9 deletions

View File

@ -22,7 +22,7 @@
import time import time
import collections import collections
from PyQt5.QtCore import pyqtSignal from PyQt5.QtCore import pyqtSignal, QUrl
from PyQt5.QtWebKit import QWebHistoryInterface from PyQt5.QtWebKit import QWebHistoryInterface
from qutebrowser.utils import utils, objreg, standarddir from qutebrowser.utils import utils, objreg, standarddir
@ -36,19 +36,21 @@ class HistoryEntry:
Attributes: Attributes:
atime: The time the page was accessed. atime: The time the page was accessed.
url: The URL which was accessed as string url: The URL which was accessed as QUrl.
url_string: The URL which was accessed as string.
""" """
def __init__(self, atime, url): def __init__(self, atime, url):
self.atime = float(atime) self.atime = float(atime)
self.url = url self.url = QUrl(url)
self.url_string = url
def __repr__(self): def __repr__(self):
return utils.get_repr(self, constructor=True, atime=self.atime, return utils.get_repr(self, constructor=True, atime=self.atime,
url=self.url) url=self.url.toDisplayString())
def __str__(self): def __str__(self):
return '{} {}'.format(int(self.atime), self.url) return '{} {}'.format(int(self.atime), self.url_string)
@classmethod @classmethod
def from_str(cls, s): def from_str(cls, s):

View File

@ -52,7 +52,7 @@ class UrlCompletionModel(base.BaseCompletionModel):
history = utils.newest_slice(self._history, max_history) history = utils.newest_slice(self._history, max_history)
for entry in history: for entry in history:
self.new_item(self._history_cat, entry.url, "", self.new_item(self._history_cat, entry.url.toDisplayString(), "",
self._fmt_atime(entry.atime), sort=int(entry.atime)) self._fmt_atime(entry.atime), sort=int(entry.atime))
self._history.item_about_to_be_added.connect( self._history.item_about_to_be_added.connect(
@ -79,7 +79,7 @@ class UrlCompletionModel(base.BaseCompletionModel):
def on_history_item_added(self, item): def on_history_item_added(self, item):
"""Slot called when a new history item was added.""" """Slot called when a new history item was added."""
if item.url: if item.url:
if self._history.historyContains(item.url): if self._history.historyContains(item.url_string):
for i in range(self._history_cat.rowCount()): for i in range(self._history_cat.rowCount()):
name_item = self._history_cat.child(i, 0) name_item = self._history_cat.child(i, 0)
atime_item = self._history_cat.child(i, 2) atime_item = self._history_cat.child(i, 2)
@ -90,6 +90,6 @@ class UrlCompletionModel(base.BaseCompletionModel):
name_item.setData(int(item.atime), base.Role.sort) name_item.setData(int(item.atime), base.Role.sort)
break break
else: else:
self.new_item(self._history_cat, item.url, "", self.new_item(self._history_cat, item.url.toDisplayString(),
self._fmt_atime(item.atime), "", self._fmt_atime(item.atime),
sort=int(item.atime)) sort=int(item.atime))