Added code to record the timestamp a bookmark was added and visited.

Sat, 24 Mar 2012 17:57:55 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 24 Mar 2012 17:57:55 +0100
changeset 1730
5d7ce61b64aa
parent 1729
66b9dc45f2bd
child 1731
56cf9c150dbf

Added code to record the timestamp a bookmark was added and visited.

APIs/Python3/eric5.api file | annotate | diff | comparison | revisions
Documentation/Help/source.qch file | annotate | diff | comparison | revisions
Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Helpviewer.Bookmarks.BookmarkNode.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Helpviewer.Bookmarks.BookmarksManager.html file | annotate | diff | comparison | revisions
Helpviewer/Bookmarks/BookmarkNode.py file | annotate | diff | comparison | revisions
Helpviewer/Bookmarks/BookmarksManager.py file | annotate | diff | comparison | revisions
Helpviewer/Bookmarks/XbelReader.py file | annotate | diff | comparison | revisions
Helpviewer/Bookmarks/XbelWriter.py file | annotate | diff | comparison | revisions
Helpviewer/UrlBar/UrlBar.py file | annotate | diff | comparison | revisions
--- a/APIs/Python3/eric5.api	Sat Mar 24 16:10:48 2012 +0100
+++ b/APIs/Python3/eric5.api	Sat Mar 24 17:57:55 2012 +0100
@@ -1768,6 +1768,9 @@
 eric5.Helpviewer.Bookmarks.BookmarkNode.BookmarkNode.Folder?7
 eric5.Helpviewer.Bookmarks.BookmarkNode.BookmarkNode.Root?7
 eric5.Helpviewer.Bookmarks.BookmarkNode.BookmarkNode.Separator?7
+eric5.Helpviewer.Bookmarks.BookmarkNode.BookmarkNode.TsAdded?7
+eric5.Helpviewer.Bookmarks.BookmarkNode.BookmarkNode.TsModified?7
+eric5.Helpviewer.Bookmarks.BookmarkNode.BookmarkNode.TsVisited?7
 eric5.Helpviewer.Bookmarks.BookmarkNode.BookmarkNode.add?4(child, offset=-1)
 eric5.Helpviewer.Bookmarks.BookmarkNode.BookmarkNode.children?4()
 eric5.Helpviewer.Bookmarks.BookmarkNode.BookmarkNode.parent?4()
@@ -1856,6 +1859,7 @@
 eric5.Helpviewer.Bookmarks.BookmarksManager.BookmarksManager.reload?4()
 eric5.Helpviewer.Bookmarks.BookmarksManager.BookmarksManager.removeBookmark?4(node)
 eric5.Helpviewer.Bookmarks.BookmarksManager.BookmarksManager.save?4()
+eric5.Helpviewer.Bookmarks.BookmarksManager.BookmarksManager.setTimestamp?4(node, timestampType, timestamp)
 eric5.Helpviewer.Bookmarks.BookmarksManager.BookmarksManager.setTitle?4(node, newTitle)
 eric5.Helpviewer.Bookmarks.BookmarksManager.BookmarksManager.setUrl?4(node, newUrl)
 eric5.Helpviewer.Bookmarks.BookmarksManager.BookmarksManager.toolbar?4()
Binary file Documentation/Help/source.qch has changed
--- a/Documentation/Help/source.qhp	Sat Mar 24 16:10:48 2012 +0100
+++ b/Documentation/Help/source.qhp	Sat Mar 24 17:57:55 2012 +0100
@@ -1418,6 +1418,7 @@
       <keyword name="BookmarksManager.reload" id="BookmarksManager.reload" ref="eric5.Helpviewer.Bookmarks.BookmarksManager.html#BookmarksManager.reload" />
       <keyword name="BookmarksManager.removeBookmark" id="BookmarksManager.removeBookmark" ref="eric5.Helpviewer.Bookmarks.BookmarksManager.html#BookmarksManager.removeBookmark" />
       <keyword name="BookmarksManager.save" id="BookmarksManager.save" ref="eric5.Helpviewer.Bookmarks.BookmarksManager.html#BookmarksManager.save" />
+      <keyword name="BookmarksManager.setTimestamp" id="BookmarksManager.setTimestamp" ref="eric5.Helpviewer.Bookmarks.BookmarksManager.html#BookmarksManager.setTimestamp" />
       <keyword name="BookmarksManager.setTitle" id="BookmarksManager.setTitle" ref="eric5.Helpviewer.Bookmarks.BookmarksManager.html#BookmarksManager.setTitle" />
       <keyword name="BookmarksManager.setUrl" id="BookmarksManager.setUrl" ref="eric5.Helpviewer.Bookmarks.BookmarksManager.html#BookmarksManager.setUrl" />
       <keyword name="BookmarksManager.toolbar" id="BookmarksManager.toolbar" ref="eric5.Helpviewer.Bookmarks.BookmarksManager.html#BookmarksManager.toolbar" />
--- a/Documentation/Source/eric5.Helpviewer.Bookmarks.BookmarkNode.html	Sat Mar 24 16:10:48 2012 +0100
+++ b/Documentation/Source/eric5.Helpviewer.Bookmarks.BookmarkNode.html	Sat Mar 24 17:57:55 2012 +0100
@@ -49,7 +49,7 @@
 object
 <h3>Class Attributes</h3>
 <table>
-<tr><td>Bookmark</td></tr><tr><td>Folder</td></tr><tr><td>Root</td></tr><tr><td>Separator</td></tr>
+<tr><td>Bookmark</td></tr><tr><td>Folder</td></tr><tr><td>Root</td></tr><tr><td>Separator</td></tr><tr><td>TsAdded</td></tr><tr><td>TsModified</td></tr><tr><td>TsVisited</td></tr>
 </table>
 <h3>Class Methods</h3>
 <table>
--- a/Documentation/Source/eric5.Helpviewer.Bookmarks.BookmarksManager.html	Sat Mar 24 16:10:48 2012 +0100
+++ b/Documentation/Source/eric5.Helpviewer.Bookmarks.BookmarksManager.html	Sat Mar 24 17:57:55 2012 +0100
@@ -149,6 +149,9 @@
 <td><a href="#BookmarksManager.save">save</a></td>
 <td>Public method to save the bookmarks.</td>
 </tr><tr>
+<td><a href="#BookmarksManager.setTimestamp">setTimestamp</a></td>
+<td>Public method to set the URL of a bookmark.</td>
+</tr><tr>
 <td><a href="#BookmarksManager.setTitle">setTitle</a></td>
 <td>Public method to set the title of a bookmark.</td>
 </tr><tr>
@@ -371,7 +374,24 @@
 <b>save</b>(<i></i>)
 <p>
         Public method to save the bookmarks.
-</p><a NAME="BookmarksManager.setTitle" ID="BookmarksManager.setTitle"></a>
+</p><a NAME="BookmarksManager.setTimestamp" ID="BookmarksManager.setTimestamp"></a>
+<h4>BookmarksManager.setTimestamp</h4>
+<b>setTimestamp</b>(<i>node, timestampType, timestamp</i>)
+<p>
+        Public method to set the URL of a bookmark.
+</p><dl>
+<dt><i>node</i></dt>
+<dd>
+reference to the node to be changed (BookmarkNode)
+</dd><dt><i>timestampType</i></dt>
+<dd>
+type of the timestamp to set (BookmarkNode.TsAdded,
+            BookmarkNode.TsModified, BookmarkNode.TsVisited)
+</dd><dt><i>timestamp</i></dt>
+<dd>
+timestamp to set (QDateTime)
+</dd>
+</dl><a NAME="BookmarksManager.setTitle" ID="BookmarksManager.setTitle"></a>
 <h4>BookmarksManager.setTitle</h4>
 <b>setTitle</b>(<i>node, newTitle</i>)
 <p>
--- a/Helpviewer/Bookmarks/BookmarkNode.py	Sat Mar 24 16:10:48 2012 +0100
+++ b/Helpviewer/Bookmarks/BookmarkNode.py	Sat Mar 24 17:57:55 2012 +0100
@@ -7,6 +7,8 @@
 Module implementing the bookmark node.
 """
 
+from PyQt4.QtCore import QDateTime
+
 
 class BookmarkNode(object):
     """
@@ -18,6 +20,11 @@
     Bookmark = 2
     Separator = 3
     
+    # possible timestamp types
+    TsAdded = 0
+    TsModified = 1
+    TsVisited = 2
+    
     def __init__(self, type_=Root, parent=None):
         """
         Constructor
@@ -29,6 +36,9 @@
         self.title = ""
         self.desc = ""
         self.expanded = False
+        self.added = QDateTime()
+        self.modified = QDateTime()
+        self.visited = QDateTime()
         
         self._children = []
         self._parent = parent
--- a/Helpviewer/Bookmarks/BookmarksManager.py	Sat Mar 24 16:10:48 2012 +0100
+++ b/Helpviewer/Bookmarks/BookmarksManager.py	Sat Mar 24 17:57:55 2012 +0100
@@ -10,7 +10,7 @@
 import os
 
 from PyQt4.QtCore import pyqtSignal, Qt, QT_TRANSLATE_NOOP, QObject, QFile, QByteArray, \
-    QBuffer, QIODevice, QXmlStreamReader, QDate, QFileInfo, QUrl
+    QBuffer, QIODevice, QXmlStreamReader, QDate, QDateTime, QFileInfo, QUrl
 from PyQt4.QtGui import QUndoStack, QUndoCommand, QApplication, QDialog
 
 from E5Gui import E5MessageBox, E5FileDialog
@@ -216,6 +216,8 @@
         if not self.__loaded:
             return
         
+        self.setTimestamp(node,  BookmarkNode.TsAdded, QDateTime.currentDateTime())
+        
         command = InsertBookmarksCommand(self, parent, node, row)
         self.__commands.push(command)
     
@@ -259,6 +261,30 @@
         command = ChangeBookmarkCommand(self, node, newUrl, False)
         self.__commands.push(command)
     
+    def setTimestamp(self, node, timestampType, timestamp):
+        """
+        Public method to set the URL of a bookmark.
+        
+        @param node reference to the node to be changed (BookmarkNode)
+        @param timestampType type of the timestamp to set (BookmarkNode.TsAdded,
+            BookmarkNode.TsModified, BookmarkNode.TsVisited)
+        @param timestamp timestamp to set (QDateTime)
+        """
+        if not self.__loaded:
+            return
+        
+        assert timestampType in [BookmarkNode.TsAdded,
+                                 BookmarkNode.TsModified,
+                                 BookmarkNode.TsVisited]
+        
+        if timestampType == BookmarkNode.TsAdded:
+            node.added = timestamp
+        elif timestampType == BookmarkNode.TsModified:
+            node.modified = timestamp
+        elif timestampType == BookmarkNode.TsVisited:
+            node.visited = timestamp
+        self.__saveTimer.changeOccurred()
+    
     def bookmarks(self):
         """
         Public method to get a reference to the root bookmark node.
--- a/Helpviewer/Bookmarks/XbelReader.py	Sat Mar 24 16:10:48 2012 +0100
+++ b/Helpviewer/Bookmarks/XbelReader.py	Sat Mar 24 17:57:55 2012 +0100
@@ -8,7 +8,7 @@
 """
 
 from PyQt4.QtCore import QXmlStreamReader, QXmlStreamEntityResolver, QIODevice, \
-    QFile, QCoreApplication, QXmlStreamNamespaceDeclaration
+    QFile, QCoreApplication, QXmlStreamNamespaceDeclaration, QDateTime, Qt
 
 from .BookmarkNode import BookmarkNode
 
@@ -108,6 +108,7 @@
         
         folder = BookmarkNode(BookmarkNode.Folder, node)
         folder.expanded = self.attributes().value("folded") == "no"
+        folder.added = QDateTime.fromString(self.attributes().value("added"), Qt.ISODate)
         
         while not self.atEnd():
             self.readNext()
@@ -158,7 +159,8 @@
         
         @param node reference to the bookmark node the separator belongs to (BookmarkNode)
         """
-        BookmarkNode(BookmarkNode.Separator, node)
+        sep = BookmarkNode(BookmarkNode.Separator, node)
+        sep.added = QDateTime.fromString(self.attributes().value("added"), Qt.ISODate)
         
         # empty elements have a start and end element
         while not self.atEnd():
@@ -183,6 +185,12 @@
         
         bookmark = BookmarkNode(BookmarkNode.Bookmark, node)
         bookmark.url = self.attributes().value("href")
+        bookmark.added = QDateTime.fromString(
+            self.attributes().value("added"), Qt.ISODate)
+        bookmark.modified = QDateTime.fromString(
+            self.attributes().value("modified"), Qt.ISODate)
+        bookmark.visited = QDateTime.fromString(
+            self.attributes().value("visited"), Qt.ISODate)
         
         while not self.atEnd():
             self.readNext()
--- a/Helpviewer/Bookmarks/XbelWriter.py	Sat Mar 24 16:10:48 2012 +0100
+++ b/Helpviewer/Bookmarks/XbelWriter.py	Sat Mar 24 17:57:55 2012 +0100
@@ -7,7 +7,7 @@
 Module implementing a class to write XBEL bookmark files.
 """
 
-from PyQt4.QtCore import QXmlStreamWriter, QIODevice, QFile
+from PyQt4.QtCore import QXmlStreamWriter, QIODevice, QFile, Qt
 
 from .BookmarkNode import BookmarkNode
 
@@ -69,6 +69,8 @@
         """
         if node.type() == BookmarkNode.Folder:
             self.writeStartElement("folder")
+            if node.added.isValid():
+                self.writeAttribute("added", node.added.toString(Qt.ISODate))
             self.writeAttribute("folded", node.expanded and "no" or "yes")
             self.writeTextElement("title", node.title)
             for child in node.children():
@@ -78,9 +80,17 @@
             self.writeStartElement("bookmark")
             if node.url:
                 self.writeAttribute("href", node.url)
+            if node.added.isValid():
+                self.writeAttribute("added", node.added.toString(Qt.ISODate))
+            if node.modified.isValid():
+                self.writeAttribute("modified", node.modified.toString(Qt.ISODate))
+            if node.visited.isValid():
+                self.writeAttribute("visited", node.visited.toString(Qt.ISODate))
             self.writeTextElement("title", node.title)
             if node.desc:
                 self.writeTextElement("desc", node.desc)
             self.writeEndElement()
         elif node.type() == BookmarkNode.Separator:
             self.writeEmptyElement("separator")
+            if node.added.isValid():
+                self.writeAttribute("added", node.added.toString(Qt.ISODate))
--- a/Helpviewer/UrlBar/UrlBar.py	Sat Mar 24 16:10:48 2012 +0100
+++ b/Helpviewer/UrlBar/UrlBar.py	Sat Mar 24 17:57:55 2012 +0100
@@ -7,7 +7,7 @@
 Module implementing the URL bar widget.
 """
 
-from PyQt4.QtCore import pyqtSlot, Qt, QPointF, QUrl
+from PyQt4.QtCore import pyqtSlot, Qt, QPointF, QUrl, QDateTime
 from PyQt4.QtGui import QColor, QPalette, QApplication, QLinearGradient, QIcon, QDialog
 try:
     from PyQt4.QtNetwork import QSslCertificate     # __IGNORE_EXCEPTION__
@@ -26,6 +26,7 @@
 from .BookmarkActionSelectionDialog import BookmarkActionSelectionDialog
 
 from Helpviewer.Feeds.FeedsDialog import FeedsDialog
+from Helpviewer.Bookmarks.BookmarkNode import BookmarkNode
 
 import UI.PixmapCache
 import Preferences
@@ -144,13 +145,17 @@
         """
         Private slot to check the current URL for the bookmarked state.
         """
-        if Helpviewer.HelpWindow.HelpWindow.bookmarksManager()\
-           .bookmarkForUrl(self.__browser.url()) is None and \
-           Helpviewer.HelpWindow.HelpWindow.speedDial()\
-           .pageForUrl(self.__browser.url()).url == "":
+        manager = Helpviewer.HelpWindow.HelpWindow.bookmarksManager()
+        if manager.bookmarkForUrl(self.__browser.url()) is not None:
+            self.__bookmarkButton.setIcon(self.__bmActiveIcon)
+            bookmark = manager.bookmarkForUrl(self.__browser.url())
+            manager.setTimestamp(bookmark, BookmarkNode.TsVisited,
+                                 QDateTime.currentDateTime())
+        elif Helpviewer.HelpWindow.HelpWindow.speedDial()\
+           .pageForUrl(self.__browser.url()).url != "":
+            self.__bookmarkButton.setIcon(self.__bmActiveIcon)
+        else:
             self.__bookmarkButton.setIcon(self.__bmInactiveIcon)
-        else:
-            self.__bookmarkButton.setIcon(self.__bmActiveIcon)
     
     def __loadFinished(self, ok):
         """

eric ide

mercurial