]> rtime.felk.cvut.cz Git - coffee/qtwebbrowser.git/commitdiff
Add persistence to home screen bookmarks
authorAndras Becsi <andras.becsi@theqtcompany.com>
Fri, 31 Jul 2015 15:00:22 +0000 (17:00 +0200)
committerAndras Becsi <andras.becsi@theqtcompany.com>
Wed, 12 Aug 2015 15:22:03 +0000 (17:22 +0200)
src/engine.cpp
src/engine.h
src/qml/HomeScreen.qml
src/qml/NavigationBar.qml
src/touchtracker.cpp

index 84b0c0e83a74b012ddae1210eb44ca0d5caf219c..8da944eb899e635ca4d22a5116aae78c88c97e47 100644 (file)
 
 #include "engine.h"
 
+#include <QtCore/QDir>
+#include <QtCore/QStandardPaths>
+#include <QStringBuilder>
+
+Engine::Engine(QObject *parent)
+    : QObject(parent)
+    , m_bookmarks(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) % QDir::separator() % "bookmarks.ini", QSettings::IniFormat, this)
+{
+    qsrand(255);
+}
+
 QUrl Engine::fromUserInput(const QString& userInput)
 {
     QFileInfo fileInfo(userInput);
@@ -91,3 +102,13 @@ QString Engine::oppositeColor(const QString &color)
     const QColor c(QColor(color).toHsv());
     return QColor::fromHsv(c.hue(), c.saturation(), c.value() < 127 ? 255 : c.value() - 100).name();
 }
+
+QString Engine::restoreBookmarks()
+{
+    return m_bookmarks.value("bookmarks").toString();
+}
+
+void Engine::saveBookmarks(const QString & list)
+{
+    m_bookmarks.setValue("bookmarks", list);
+}
index 36cb5618f53645006ebecfbe08b61c2004e07733..3fb30e23d3b6b113c25a642f4ae7b5d0d70e0b06 100644 (file)
@@ -40,6 +40,7 @@
 
 #include <QtCore/QEvent>
 #include <QtCore/QFileInfo>
+#include <QtCore/QSettings>
 #include <QtCore/QUrl>
 #include <QtGui/QColor>
 #include <QtQuick/QQuickItemGrabResult>
@@ -82,22 +83,22 @@ class Engine : public QObject {
 
     Q_PROPERTY(QObject * rootWindow READ rootWindow FINAL CONSTANT)
 
+    QSettings m_bookmarks;
+
 public:
-    Engine(QObject *parent)
-        : QObject(parent)
-    {
-        qsrand(255);
-    }
+    Engine(QObject *parent);
     QObject *rootWindow()
     {
         return parent();
     }
 
-    Q_INVOKABLE static QUrl fromUserInput(const QString& userInput);
-    Q_INVOKABLE static QString domainFromString(const QString& urlString);
-    Q_INVOKABLE static QString randomColor();
-    Q_INVOKABLE static QString colorForIcon(QQuickItemGrabResult *result);
-    Q_INVOKABLE static QString oppositeColor(const QString & color);
+    Q_INVOKABLE QUrl fromUserInput(const QString& userInput);
+    Q_INVOKABLE QString domainFromString(const QString& urlString);
+    Q_INVOKABLE QString randomColor();
+    Q_INVOKABLE QString colorForIcon(QQuickItemGrabResult *result);
+    Q_INVOKABLE QString oppositeColor(const QString & color);
+    Q_INVOKABLE QString restoreBookmarks();
+    Q_INVOKABLE void saveBookmarks(const QString & list);
 };
 
 #endif // ENGINE_H
index 44d15f02bb76fc9a8b9ff1f56cd91bc7a1a2488e..4905ca94ac4425932a10653b93f8bf79526a5982 100644 (file)
@@ -59,6 +59,10 @@ Rectangle {
         listModel.append(element)
     }
 
+    function get(index) {
+        return listModel.get(index)
+    }
+
     function contains(url) {
         for (var idx = 0; idx < listModel.count; ++idx) {
             if (listModel.get(idx).url === url)
@@ -93,6 +97,21 @@ Rectangle {
 
     ListModel {
         id: listModel
+        Component.onCompleted: {
+            listModel.clear()
+            var string = engine.restoreBookmarks()
+            var list = JSON.parse(string)
+            for (var i = 0; i < list.length; ++i) {
+                listModel.append(list[i])
+            }
+        }
+        Component.onDestruction: {
+            var list = []
+            for (var i = 0; i < listModel.count; ++i) {
+                list[i] = listModel.get(i)
+            }
+            engine.saveBookmarks(JSON.stringify(list))
+        }
     }
 
     GridView {
@@ -422,7 +441,7 @@ Rectangle {
         color: "transparent"
         anchors.centerIn: parent
         width: 500
-        height: 100
+        height: 300
         Text {
             anchors.centerIn: parent
             color: placeholderColor
index 1089cd7aa92ea75f99c80310ed44713947bcb6cd..0bf0b786d313b0aa8431a444d2628880bdd2f9ec 100644 (file)
@@ -277,13 +277,15 @@ ToolBar {
                 if (!webView)
                     return
 
+                console.log(webView.loading)
+                var icon = webView.loading ? "" : webView.icon
                 var idx = homeScreen.contains(webView.url.toString())
                 if (idx != -1) {
+                    homeScreen.get(idx).iconUrl = icon.toString()
                     homeScreen.state = "enabled"
-                    homeScreen.currentIndex = idx
+                    homeScreen.set(idx)
                     return
                 }
-                var icon = webView.loading ? "" : webView.icon
                 homeScreen.add(webView.title, webView.url, icon, engine.randomColor())
             }
         }
index 81dba5c2375e58ea116c3f8dabdf778b273ace1f..aa4d8a1455018e4a58d9f89a03a3b3695c3b762f 100644 (file)
@@ -2,7 +2,7 @@
 
 #include <QDateTime>
 
-#include "utils.h"
+#include "engine.h"
 
 using namespace utils;