├── .clang_complete ├── .gitignore ├── Doxyfile ├── README.md ├── doc ├── QMLCachePlugin_8cpp.html ├── QMLCachePlugin_8cpp__incl.map ├── QMLCachePlugin_8cpp__incl.md5 ├── QMLCachePlugin_8cpp__incl.png ├── QMLCachePlugin_8h.html ├── QMLCachePlugin_8h__dep__incl.map ├── QMLCachePlugin_8h__dep__incl.md5 ├── QMLCachePlugin_8h__dep__incl.png ├── QMLCachePlugin_8h__incl.map ├── QMLCachePlugin_8h__incl.md5 ├── QMLCachePlugin_8h__incl.png ├── QMLCachePlugin_8h_source.html ├── QMLCache_8cpp.html ├── QMLCache_8cpp__incl.map ├── QMLCache_8cpp__incl.md5 ├── QMLCache_8cpp__incl.png ├── QMLCache_8h.html ├── QMLCache_8h__dep__incl.map ├── QMLCache_8h__dep__incl.md5 ├── QMLCache_8h__dep__incl.png ├── QMLCache_8h__incl.map ├── QMLCache_8h__incl.md5 ├── QMLCache_8h__incl.png ├── QMLCache_8h_source.html ├── annotated.html ├── annotated_dup.js ├── bc_s.png ├── bdwn.png ├── classQMLCacheNS_1_1QMLCache-members.html ├── classQMLCacheNS_1_1QMLCache.html ├── classQMLCacheNS_1_1QMLCache.js ├── classQMLCacheNS_1_1QMLCache__inherit__graph.map ├── classQMLCacheNS_1_1QMLCache__inherit__graph.md5 ├── classQMLCacheNS_1_1QMLCache__inherit__graph.png ├── classes.html ├── closed.png ├── dir_68267d1309a1af8e8297ef4c3efbcdba.html ├── dir_68267d1309a1af8e8297ef4c3efbcdba.js ├── doc.png ├── doxygen.css ├── doxygen.png ├── dynsections.js ├── files.html ├── files.js ├── folderclosed.png ├── folderopen.png ├── functions.html ├── functions_func.html ├── graph_legend.html ├── graph_legend.md5 ├── graph_legend.png ├── hierarchy.html ├── hierarchy.js ├── index.html ├── inherit_graph_0.map ├── inherit_graph_0.md5 ├── inherit_graph_0.png ├── inherits.html ├── jquery.js ├── menu.js ├── menudata.js ├── namespaceQMLCacheNS.html ├── namespaceQMLCacheNS.js ├── namespaces.html ├── namespaces.js ├── nav_f.png ├── nav_g.png ├── nav_h.png ├── navtree.css ├── navtree.js ├── navtreedata.js ├── navtreeindex0.js ├── open.png ├── resize.js ├── search │ ├── all_0.html │ ├── all_0.js │ ├── all_1.html │ ├── all_1.js │ ├── all_2.html │ ├── all_2.js │ ├── classes_0.html │ ├── classes_0.js │ ├── close.png │ ├── files_0.html │ ├── files_0.js │ ├── functions_0.html │ ├── functions_0.js │ ├── functions_1.html │ ├── functions_1.js │ ├── mag_sel.png │ ├── namespaces_0.html │ ├── namespaces_0.js │ ├── nomatches.html │ ├── pages_0.html │ ├── pages_0.js │ ├── search.css │ ├── search.js │ ├── search_l.png │ ├── search_m.png │ ├── search_r.png │ └── searchdata.js ├── splitbar.png ├── sync_off.png ├── sync_on.png ├── tab_a.png ├── tab_b.png ├── tab_h.png ├── tab_s.png └── tabs.css ├── qml-cache.pro ├── qmldir ├── samples └── qml-cache-demo │ ├── README.md │ ├── android │ ├── AndroidManifest.xml │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ └── res │ │ └── values │ │ └── libs.xml │ ├── qml-cache-demo.pro │ ├── qml.qrc │ └── src │ ├── main.cpp │ └── main.qml └── src ├── QMLCache.cpp ├── QMLCache.h ├── QMLCachePlugin.cpp └── QMLCachePlugin.h /.clang_complete: -------------------------------------------------------------------------------- 1 | -I/opt/Qt/5.10.0/gcc_64/include 2 | -I/opt/Qt/5.10.0/gcc_64/include/QtQuick 3 | -I/opt/Qt/5.10.0/gcc_64/include/QtGui 4 | -I/opt/Qt/5.10.0/gcc_64/include/QtQml 5 | -I/opt/Qt/5.10.0/gcc_64/include/QtNetwork 6 | -I/opt/Qt/5.10.0/gcc_64/include/QtBluetooth 7 | -I/opt/Qt/5.10.0/gcc_64/include/QtCore 8 | -Iinclude/ 9 | -fPIE 10 | -std=c++11 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | #Temp build files 2 | build*/ 3 | xml/ 4 | 5 | #Temp QT files 6 | *.user 7 | 8 | #Annoying files 9 | *~ 10 | 11 | #Ubuntu ignores 12 | .directory 13 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | qml-cache 2 | ========= 3 | 4 | qml-cache is a persistent app-exclusive key-value store plugin. It is tested with Qt 5.10.1 on the following: 5 | 6 | - Ubuntu 17.10 7 | - macOS 10.13.3 with Xcode 9.3 8 | - Windows 10 (UWP x64 (MSVC 2017)) with Visual Studio 2017 Community (with `Universal Windows Platform development` and `C++ Universal Windows Platform tools`) 9 | - Android 7.1.2 with Ubuntu 17.10 host with Android API 23, Android SDK Tools 25.2.5 and Android NDK r10e 10 | 11 | See [samples/](samples/) for example uses. 12 | 13 | See [doc/index.html](doc/index.html) for the API. 14 | 15 | build [Linux & macOS] 16 | --------------------- 17 | 18 | ``` 19 | $ mkdir build && cd build 20 | $ qt-install-dir/qt-version/target-platform/bin/qmake .. 21 | $ make install 22 | ``` 23 | 24 | This will install the QML plugin inside the Qt sysroot, which you must have write access to. **Be aware that this is not a sandboxed installation.** 25 | 26 | build [Android] 27 | --------------- 28 | 29 | ``` 30 | $ export ANDROID_NDK_ROOT=/path-to-android-ndk/ 31 | $ mkdir build && cd build 32 | $ qt-install-dir/qt-version/target-platform/bin/qmake .. 33 | $ make install 34 | ``` 35 | 36 | This will install the QML plugin inside the Qt sysroot, which you must have write access to. **Be aware that this is not a sandboxed installation.** 37 | 38 | build [Windows] 39 | --------------- 40 | 41 | Run the following in the `Developer Command Prompt for VS 2017`: 42 | 43 | ``` 44 | > "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64 45 | > mkdir build 46 | > cd build 47 | > qt-install-root\qt-version\target-platform\bin\qmake .. 48 | > nmake 49 | > nmake install 50 | ``` 51 | 52 | This will install the QML plugin inside the Qt sysroot, which you must have write access to. **Be aware that this is not a sandboxed installation.** 53 | 54 | build documentation 55 | ------------------- 56 | 57 | Install dependencies: 58 | ``` 59 | $ apt install doxygen doxyqml 60 | ``` 61 | 62 | Then, generate the documentation: 63 | ``` 64 | $ doxygen 65 | ``` 66 | -------------------------------------------------------------------------------- /doc/QMLCachePlugin_8cpp.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | qml-cache: src/QMLCachePlugin.cpp File Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 34 | 35 | 36 |
31 |
qml-cache 32 |
33 |
37 |
38 | 39 | 40 | 43 | 44 | 45 | 51 | 52 |
53 |
54 | 59 |
61 |
62 |
63 | 66 |
67 | 68 |
72 |
73 | 74 | 75 |
76 | 79 |
80 | 81 |
82 |
83 | Namespaces
84 |
85 |
QMLCachePlugin.cpp File Reference
86 |
87 |
88 | 89 |

Object that exposes the QMLCache plugin components as QML objects. 90 | More...

91 |
#include "QMLCachePlugin.h"
92 | #include "QMLCache.h"
93 |
94 | Include dependency graph for QMLCachePlugin.cpp:
95 |
96 |
97 | 98 | 99 | 100 | 101 |
102 |
103 | 105 | 106 | 107 | 108 |

104 | Namespaces

 QMLCacheNS
 Persistent app-exclusive key-value store plugin, accessible from QML.
 
109 |

Detailed Description

110 |

Object that exposes the QMLCache plugin components as QML objects.

111 |
Author
Ayberk Özgür
112 |
Date
2016-08-11
113 |
114 |
115 | 116 | 124 | 125 | 126 | -------------------------------------------------------------------------------- /doc/QMLCachePlugin_8cpp__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /doc/QMLCachePlugin_8cpp__incl.md5: -------------------------------------------------------------------------------- 1 | 9f16f874a08d0e5c4d408cede987f214 -------------------------------------------------------------------------------- /doc/QMLCachePlugin_8cpp__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/QMLCachePlugin_8cpp__incl.png -------------------------------------------------------------------------------- /doc/QMLCachePlugin_8h.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | qml-cache: src/QMLCachePlugin.h File Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 34 | 35 | 36 |
31 |
qml-cache 32 |
33 |
37 |
38 | 39 | 40 | 43 | 44 | 45 | 51 | 52 |
53 |
54 | 59 |
61 |
62 |
63 | 66 |
67 | 68 |
72 |
73 | 74 | 75 |
76 | 79 |
80 | 81 |
82 |
83 | Namespaces
84 |
85 |
QMLCachePlugin.h File Reference
86 |
87 |
88 | 89 |

Object that exposes the QMLCache plugin components as QML objects. 90 | More...

91 |
#include <QQmlExtensionPlugin>
92 | #include <qqml.h>
93 |
94 | Include dependency graph for QMLCachePlugin.h:
95 |
96 |
97 | 98 | 99 |
100 |
101 | This graph shows which files directly or indirectly include this file:
102 |
103 |
104 | 105 | 106 | 107 |
108 |
109 |

Go to the source code of this file.

110 | 111 | 113 | 114 | 115 | 116 |

112 | Namespaces

 QMLCacheNS
 Persistent app-exclusive key-value store plugin, accessible from QML.
 
117 |

Detailed Description

118 |

Object that exposes the QMLCache plugin components as QML objects.

119 |
Author
Ayberk Özgür
120 |
Date
2016-08-11
121 |
122 |
123 | 124 | 132 | 133 | 134 | -------------------------------------------------------------------------------- /doc/QMLCachePlugin_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /doc/QMLCachePlugin_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | 9784fc7522fa973c268cd3d6bf95f315 -------------------------------------------------------------------------------- /doc/QMLCachePlugin_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/QMLCachePlugin_8h__dep__incl.png -------------------------------------------------------------------------------- /doc/QMLCachePlugin_8h__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /doc/QMLCachePlugin_8h__incl.md5: -------------------------------------------------------------------------------- 1 | 570e232ada6da35380181a8c88caf8b4 -------------------------------------------------------------------------------- /doc/QMLCachePlugin_8h__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/QMLCachePlugin_8h__incl.png -------------------------------------------------------------------------------- /doc/QMLCachePlugin_8h_source.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | qml-cache: src/QMLCachePlugin.h Source File 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 34 | 35 | 36 |
31 |
qml-cache 32 |
33 |
37 |
38 | 39 | 40 | 43 | 44 | 45 | 51 | 52 |
53 |
54 | 59 |
61 |
62 |
63 | 66 |
67 | 68 |
72 |
73 | 74 | 75 |
76 | 79 |
80 | 81 |
82 |
83 |
QMLCachePlugin.h
84 |
85 |
86 | Go to the documentation of this file.
1 /*
2  * Copyright (C) 2016 EPFL
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program. If not, see http://www.gnu.org/licenses/.
16  */
17 
31 #ifndef QMLCACHEPLUGIN_H
32 #define QMLCACHEPLUGIN_H
33 
34 #include <QQmlExtensionPlugin>
35 #include <qqml.h>
36 
37 namespace QMLCacheNS{
38 
41 class QMLCachePlugin : public QQmlExtensionPlugin {
42  /* *INDENT-OFF* */
43  Q_OBJECT
44  /* *INDENT-ON* */
45  Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
46 
47 public:
48  void registerTypes(const char* uri);
49 };
50 
53 }
54 
55 #endif /* QMLCACHEPLUGIN_H */
Persistent app-exclusive key-value store plugin, accessible from QML.
Definition: QMLCache.cpp:31
87 |
88 |
89 | 90 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /doc/QMLCache_8cpp.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | qml-cache: src/QMLCache.cpp File Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 34 | 35 | 36 |
31 |
qml-cache 32 |
33 |
37 |
38 | 39 | 40 | 43 | 44 | 45 | 51 | 52 |
53 |
54 | 59 |
61 |
62 |
63 | 66 |
67 | 68 |
72 |
73 | 74 | 75 |
76 | 79 |
80 | 81 |
82 |
83 | Namespaces
84 |
85 |
QMLCache.cpp File Reference
86 |
87 |
88 | 89 |

Persistent key-value cache accesible from QML. 90 | More...

91 |
#include "QMLCache.h"
92 | #include <QDir>
93 | #include <QStandardPaths>
94 | #include <QFile>
95 |
96 | Include dependency graph for QMLCache.cpp:
97 |
98 |
99 | 100 | 101 | 102 |
103 |
104 | 106 | 107 | 108 | 109 |

105 | Namespaces

 QMLCacheNS
 Persistent app-exclusive key-value store plugin, accessible from QML.
 
110 |

Detailed Description

111 |

Persistent key-value cache accesible from QML.

112 |
Author
Ayberk Özgür
113 |
Date
2016-08-11
114 |
115 |
116 | 117 | 125 | 126 | 127 | -------------------------------------------------------------------------------- /doc/QMLCache_8cpp__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /doc/QMLCache_8cpp__incl.md5: -------------------------------------------------------------------------------- 1 | b14383ec80e9b4f13f41d27cb4e0f562 -------------------------------------------------------------------------------- /doc/QMLCache_8cpp__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/QMLCache_8cpp__incl.png -------------------------------------------------------------------------------- /doc/QMLCache_8h.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | qml-cache: src/QMLCache.h File Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 34 | 35 | 36 |
31 |
qml-cache 32 |
33 |
37 |
38 | 39 | 40 | 43 | 44 | 45 | 51 | 52 |
53 |
54 | 59 |
61 |
62 |
63 | 66 |
67 | 68 |
72 |
73 | 74 | 75 |
76 | 79 |
80 | 81 |
82 |
83 | Classes | 84 | Namespaces
85 |
86 |
QMLCache.h File Reference
87 |
88 |
89 | 90 |

Persistent key-value cache accesible from QML. 91 | More...

92 |
#include <QQuickItem>
93 | #include <QString>
94 |
95 | Include dependency graph for QMLCache.h:
96 |
97 |
98 | 99 | 100 |
101 |
102 | This graph shows which files directly or indirectly include this file:
103 |
104 |
105 | 106 | 107 | 108 | 109 |
110 |
111 |

Go to the source code of this file.

112 | 113 | 115 | 116 | 117 | 118 |

114 | Classes

class  QMLCacheNS::QMLCache
 Persistent key-value cache accesible from QML. More...
 
119 | 121 | 122 | 123 | 124 |

120 | Namespaces

 QMLCacheNS
 Persistent app-exclusive key-value store plugin, accessible from QML.
 
125 |

Detailed Description

126 |

Persistent key-value cache accesible from QML.

127 |
Author
Ayberk Özgür
128 |
Date
2016-08-11
129 |
130 |
131 | 132 | 140 | 141 | 142 | -------------------------------------------------------------------------------- /doc/QMLCache_8h__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /doc/QMLCache_8h__dep__incl.md5: -------------------------------------------------------------------------------- 1 | c1eb444da3fed5cc508fb87229b7e4bd -------------------------------------------------------------------------------- /doc/QMLCache_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/QMLCache_8h__dep__incl.png -------------------------------------------------------------------------------- /doc/QMLCache_8h__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /doc/QMLCache_8h__incl.md5: -------------------------------------------------------------------------------- 1 | 9f5417b845986529263d391af7cfb6b1 -------------------------------------------------------------------------------- /doc/QMLCache_8h__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/QMLCache_8h__incl.png -------------------------------------------------------------------------------- /doc/QMLCache_8h_source.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | qml-cache: src/QMLCache.h Source File 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 34 | 35 | 36 |
31 |
qml-cache 32 |
33 |
37 |
38 | 39 | 40 | 43 | 44 | 45 | 51 | 52 |
53 |
54 | 59 |
61 |
62 |
63 | 66 |
67 | 68 |
72 |
73 | 74 | 75 |
76 | 79 |
80 | 81 |
82 |
83 |
QMLCache.h
84 |
85 |
86 | Go to the documentation of this file.
1 /*
2  * Copyright (C) 2016 EPFL
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program. If not, see http://www.gnu.org/licenses/.
16  */
17 
25 #ifndef QMLCACHE_H
26 #define QMLCACHE_H
27 
28 #include <QQuickItem>
29 #include <QString>
30 
31 namespace QMLCacheNS{
32 
37 class QMLCache : public QQuickItem {
38  /* *INDENT-OFF* */
39  Q_OBJECT
40  /* *INDENT-ON* */
41 
42 public:
43 
51  QMLCache(QQuickItem* parent = 0);
52 
56  ~QMLCache();
57 
60 public slots:
61 
68  void write(const QString& key, const QString& value);
69 
76  QString read(const QString& key);
77 
78 private:
79 
80  QString cacheDir;
81 
82 };
83 
84 }
85 
86 #endif /* QMLCACHE_H */
Persistent app-exclusive key-value store plugin, accessible from QML.
Definition: QMLCache.cpp:31
87 |
void write(const QString &key, const QString &value)
Writes a new key-value pair to the app&#39;s cache.
Definition: QMLCache.cpp:45
88 |
Persistent key-value cache accesible from QML.
Definition: QMLCache.h:37
89 |
QString read(const QString &key)
Reads a key-value pair from the app&#39;s cache.
Definition: QMLCache.cpp:63
90 |
91 |
92 | 93 | 101 | 102 | 103 | -------------------------------------------------------------------------------- /doc/annotated.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | qml-cache: Class List 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 34 | 35 | 36 |
31 |
qml-cache 32 |
33 |
37 |
38 | 39 | 40 | 43 | 44 | 45 | 51 | 52 |
53 |
54 | 59 |
61 |
62 |
63 | 66 |
67 | 68 |
72 |
73 | 74 | 75 |
76 | 79 |
80 | 81 |
82 |
83 |
Class List
84 |
85 |
86 |
Here are the classes, structs, unions and interfaces with brief descriptions:
87 |
[detail level 12]
88 | 89 | 90 |
 NQMLCacheNSPersistent app-exclusive key-value store plugin, accessible from QML
 CQMLCachePersistent key-value cache accesible from QML
91 |
92 |
93 |
94 | 95 | 102 | 103 | 104 | -------------------------------------------------------------------------------- /doc/annotated_dup.js: -------------------------------------------------------------------------------- 1 | var annotated_dup = 2 | [ 3 | [ "QMLCacheNS", "namespaceQMLCacheNS.html", "namespaceQMLCacheNS" ] 4 | ]; -------------------------------------------------------------------------------- /doc/bc_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/bc_s.png -------------------------------------------------------------------------------- /doc/bdwn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/bdwn.png -------------------------------------------------------------------------------- /doc/classQMLCacheNS_1_1QMLCache-members.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | qml-cache: Member List 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 34 | 35 | 36 |
31 |
qml-cache 32 |
33 |
37 |
38 | 39 | 40 | 43 | 44 | 45 | 51 | 52 |
53 |
54 | 59 |
61 |
62 |
63 | 66 |
67 | 68 |
72 |
73 | 74 | 75 |
76 | 79 |
80 | 81 |
82 |
83 |
QMLCacheNS::QMLCache Member List
84 |
85 |
86 | 87 |

This is the complete list of members for QMLCacheNS::QMLCache, including all inherited members.

88 | 89 | 90 | 91 |
read(const QString &key)QMLCacheNS::QMLCacheslot
write(const QString &key, const QString &value)QMLCacheNS::QMLCacheslot
92 |
93 | 94 | 101 | 102 | 103 | -------------------------------------------------------------------------------- /doc/classQMLCacheNS_1_1QMLCache.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | qml-cache: QMLCacheNS::QMLCache Class Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 34 | 35 | 36 |
31 |
qml-cache 32 |
33 |
37 |
38 | 39 | 40 | 43 | 44 | 45 | 51 | 52 |
53 |
54 | 59 |
61 |
62 |
63 | 66 |
67 | 68 |
72 |
73 | 74 | 75 |
76 | 79 |
80 | 81 |
82 | 85 |
86 |
QMLCacheNS::QMLCache Class Reference
87 |
88 |
89 | 90 |

Persistent key-value cache accesible from QML. 91 | More...

92 | 93 |

#include <QMLCache.h>

94 |
95 | Inheritance diagram for QMLCacheNS::QMLCache:
96 |
97 |
Inheritance graph
98 | 99 | 100 |
[legend]
101 | 102 | 104 | 105 | 106 | 107 | 108 | 109 | 110 |

103 | Public Slots

void write (const QString &key, const QString &value)
 Writes a new key-value pair to the app's cache. More...
 
QString read (const QString &key)
 Reads a key-value pair from the app's cache. More...
 
111 |

Detailed Description

112 |

Persistent key-value cache accesible from QML.

113 |
This class is **singleton**, you can call `ThisClass.anyFunction()` and use `ThisClass.anyProperty` directly.
114 |

Member Function Documentation

115 | 116 |

◆ read

117 | 118 |
119 |
120 | 121 | 122 | 133 | 135 | 136 |
123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 |
QString QMLCacheNS::QMLCache::read (const QString & key)
132 |
134 | slot
137 |
138 | 139 |

Reads a key-value pair from the app's cache.

140 |
Parameters
141 | 142 | 143 |
keyKey, must not be empty and must be a valid filename
144 |
145 |
146 |
Returns
The value, empty string if key doesn't exist yet
147 | 148 |
149 |
150 | 151 |

◆ write

152 | 153 |
154 |
155 | 156 | 157 | 178 | 180 | 181 |
158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 |
void QMLCacheNS::QMLCache::write (const QString & key,
const QString & value 
)
177 |
179 | slot
182 |
183 | 184 |

Writes a new key-value pair to the app's cache.

185 |
Parameters
186 | 187 | 188 | 189 |
keyKey, must not be empty and must be a valid filename
valueValue
190 |
191 |
192 | 193 |
194 |
195 |
The documentation for this class was generated from the following files: 199 |
200 |
201 | 202 | 210 | 211 | 212 | -------------------------------------------------------------------------------- /doc/classQMLCacheNS_1_1QMLCache.js: -------------------------------------------------------------------------------- 1 | var classQMLCacheNS_1_1QMLCache = 2 | [ 3 | [ "read", "classQMLCacheNS_1_1QMLCache.html#a15e6cbe95352e494db053c2fade73740", null ], 4 | [ "write", "classQMLCacheNS_1_1QMLCache.html#a14669485b2c477b53066e6eaf0000e9f", null ] 5 | ]; -------------------------------------------------------------------------------- /doc/classQMLCacheNS_1_1QMLCache__inherit__graph.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /doc/classQMLCacheNS_1_1QMLCache__inherit__graph.md5: -------------------------------------------------------------------------------- 1 | 11bf796abc134e534de5617a5ff44541 -------------------------------------------------------------------------------- /doc/classQMLCacheNS_1_1QMLCache__inherit__graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/classQMLCacheNS_1_1QMLCache__inherit__graph.png -------------------------------------------------------------------------------- /doc/classes.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | qml-cache: Class Index 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 34 | 35 | 36 |
31 |
qml-cache 32 |
33 |
37 |
38 | 39 | 40 | 43 | 44 | 45 | 51 | 52 |
53 |
54 | 59 |
61 |
62 |
63 | 66 |
67 | 68 |
72 |
73 | 74 | 75 |
76 | 79 |
80 | 81 |
82 |
83 |
Class Index
84 |
85 |
86 | 87 | 88 | 90 | 91 | 92 | 93 |
  q  
89 |
QMLCache (QMLCacheNS)   
94 | 95 |
96 |
97 | 98 | 105 | 106 | 107 | -------------------------------------------------------------------------------- /doc/closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/closed.png -------------------------------------------------------------------------------- /doc/dir_68267d1309a1af8e8297ef4c3efbcdba.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | qml-cache: src Directory Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 34 | 35 | 36 |
31 |
qml-cache 32 |
33 |
37 |
38 | 39 | 40 | 43 | 44 | 45 | 51 | 52 |
53 |
54 | 59 |
61 |
62 |
63 | 66 |
67 | 68 |
72 |
73 | 74 | 75 |
76 | 79 |
80 | 81 |
82 |
83 |
src Directory Reference
84 |
85 |
86 | 87 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 |

88 | Files

file  QMLCache.cpp
 Persistent key-value cache accesible from QML.
 
file  QMLCache.h [code]
 Persistent key-value cache accesible from QML.
 
file  QMLCachePlugin.cpp
 Object that exposes the QMLCache plugin components as QML objects.
 
file  QMLCachePlugin.h [code]
 Object that exposes the QMLCache plugin components as QML objects.
 
102 |
103 |
104 | 105 | 113 | 114 | 115 | -------------------------------------------------------------------------------- /doc/dir_68267d1309a1af8e8297ef4c3efbcdba.js: -------------------------------------------------------------------------------- 1 | var dir_68267d1309a1af8e8297ef4c3efbcdba = 2 | [ 3 | [ "QMLCache.cpp", "QMLCache_8cpp.html", null ], 4 | [ "QMLCache.h", "QMLCache_8h.html", [ 5 | [ "QMLCache", "classQMLCacheNS_1_1QMLCache.html", "classQMLCacheNS_1_1QMLCache" ] 6 | ] ], 7 | [ "QMLCachePlugin.cpp", "QMLCachePlugin_8cpp.html", null ], 8 | [ "QMLCachePlugin.h", "QMLCachePlugin_8h.html", null ] 9 | ]; -------------------------------------------------------------------------------- /doc/doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/doc.png -------------------------------------------------------------------------------- /doc/doxygen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/doxygen.png -------------------------------------------------------------------------------- /doc/dynsections.js: -------------------------------------------------------------------------------- 1 | function toggleVisibility(linkObj) 2 | { 3 | var base = $(linkObj).attr('id'); 4 | var summary = $('#'+base+'-summary'); 5 | var content = $('#'+base+'-content'); 6 | var trigger = $('#'+base+'-trigger'); 7 | var src=$(trigger).attr('src'); 8 | if (content.is(':visible')===true) { 9 | content.hide(); 10 | summary.show(); 11 | $(linkObj).addClass('closed').removeClass('opened'); 12 | $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); 13 | } else { 14 | content.show(); 15 | summary.hide(); 16 | $(linkObj).removeClass('closed').addClass('opened'); 17 | $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); 18 | } 19 | return false; 20 | } 21 | 22 | function updateStripes() 23 | { 24 | $('table.directory tr'). 25 | removeClass('even').filter(':visible:even').addClass('even'); 26 | } 27 | 28 | function toggleLevel(level) 29 | { 30 | $('table.directory tr').each(function() { 31 | var l = this.id.split('_').length-1; 32 | var i = $('#img'+this.id.substring(3)); 33 | var a = $('#arr'+this.id.substring(3)); 34 | if (l 2 | 3 | 4 | 5 | 6 | 7 | 8 | qml-cache: File List 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 34 | 35 | 36 |
31 |
qml-cache 32 |
33 |
37 |
38 | 39 | 40 | 43 | 44 | 45 | 51 | 52 |
53 |
54 | 59 |
61 |
62 |
63 | 66 |
67 | 68 |
72 |
73 | 74 | 75 |
76 | 79 |
80 | 81 |
82 |
83 |
File List
84 |
85 |
86 |
Here is a list of all documented files with brief descriptions:
87 |
[detail level 12]
88 | 89 | 90 | 91 | 92 | 93 |
  src
 QMLCache.cppPersistent key-value cache accesible from QML
 QMLCache.hPersistent key-value cache accesible from QML
 QMLCachePlugin.cppObject that exposes the QMLCache plugin components as QML objects
 QMLCachePlugin.hObject that exposes the QMLCache plugin components as QML objects
94 |
95 |
96 |
97 | 98 | 105 | 106 | 107 | -------------------------------------------------------------------------------- /doc/files.js: -------------------------------------------------------------------------------- 1 | var files = 2 | [ 3 | [ "src", "dir_68267d1309a1af8e8297ef4c3efbcdba.html", "dir_68267d1309a1af8e8297ef4c3efbcdba" ] 4 | ]; -------------------------------------------------------------------------------- /doc/folderclosed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/folderclosed.png -------------------------------------------------------------------------------- /doc/folderopen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/folderopen.png -------------------------------------------------------------------------------- /doc/functions.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | qml-cache: Class Members 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 34 | 35 | 36 |
31 |
qml-cache 32 |
33 |
37 |
38 | 39 | 40 | 43 | 44 | 45 | 51 | 52 |
53 |
54 | 59 |
61 |
62 |
63 | 66 |
67 | 68 |
72 |
73 | 74 | 75 |
76 | 79 |
80 | 81 |
82 |
Here is a list of all documented class members with links to the class documentation for each member:
90 |
91 |
92 | 93 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /doc/functions_func.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | qml-cache: Class Members - Functions 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 34 | 35 | 36 |
31 |
qml-cache 32 |
33 |
37 |
38 | 39 | 40 | 43 | 44 | 45 | 51 | 52 |
53 |
54 | 59 |
61 |
62 |
63 | 66 |
67 | 68 |
72 |
73 | 74 | 75 |
76 | 79 |
80 | 81 |
82 |   90 |
91 |
92 | 93 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /doc/graph_legend.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | qml-cache: Graph Legend 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 34 | 35 | 36 |
31 |
qml-cache 32 |
33 |
37 |
38 | 39 | 40 | 43 | 44 | 45 | 51 | 52 |
53 |
54 | 59 |
61 |
62 |
63 | 66 |
67 | 68 |
72 |
73 | 74 | 75 |
76 | 79 |
80 | 81 |
82 |
83 |
Graph Legend
84 |
85 |
86 |

This page explains how to interpret the graphs that are generated by doxygen.

87 |

Consider the following example:

/*! Invisible class because of truncation */
class Invisible { };
/*! Truncated class, inheritance relation is hidden */
class Truncated : public Invisible { };
/* Class not documented with doxygen comments */
class Undocumented { };
/*! Class that is inherited using public inheritance */
class PublicBase : public Truncated { };
/*! A template class */
template<class T> class Templ { };
/*! Class that is inherited using protected inheritance */
class ProtectedBase { };
/*! Class that is inherited using private inheritance */
class PrivateBase { };
/*! Class that is used by the Inherited class */
class Used { };
/*! Super class that inherits a number of other classes */
class Inherited : public PublicBase,
protected ProtectedBase,
private PrivateBase,
public Undocumented,
public Templ<int>
{
private:
Used *m_usedClass;
};

This will result in the following graph:

88 |
89 | 90 |
91 |

The boxes in the above graph have the following meaning:

92 |
    93 |
  • 94 | A filled gray box represents the struct or class for which the graph is generated.
  • 95 |
  • 96 | A box with a black border denotes a documented struct or class.
  • 97 |
  • 98 | A box with a gray border denotes an undocumented struct or class.
  • 99 |
  • 100 | A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • 101 |
102 |

The arrows have the following meaning:

103 |
    104 |
  • 105 | A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • 106 |
  • 107 | A dark green arrow is used for protected inheritance.
  • 108 |
  • 109 | A dark red arrow is used for private inheritance.
  • 110 |
  • 111 | A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • 112 |
  • 113 | A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • 114 |
115 |
116 |
117 | 118 | 125 | 126 | 127 | -------------------------------------------------------------------------------- /doc/graph_legend.md5: -------------------------------------------------------------------------------- 1 | 387ff8eb65306fa251338d3c9bd7bfff -------------------------------------------------------------------------------- /doc/graph_legend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/graph_legend.png -------------------------------------------------------------------------------- /doc/hierarchy.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | qml-cache: Class Hierarchy 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 34 | 35 | 36 |
31 |
qml-cache 32 |
33 |
37 |
38 | 39 | 40 | 43 | 44 | 45 | 51 | 52 |
53 |
54 | 59 |
61 |
62 |
63 | 66 |
67 | 68 |
72 |
73 | 74 | 75 |
76 | 79 |
80 | 81 |
82 |
83 |
Class Hierarchy
84 |
85 |
86 |
87 |

Go to the graphical class hierarchy

88 | This inheritance list is sorted roughly, but not completely, alphabetically:
89 |
[detail level 12]
90 | 91 | 92 |
 CQQuickItem
 CQMLCacheNS::QMLCachePersistent key-value cache accesible from QML
93 |
94 |
95 |
96 | 97 | 104 | 105 | 106 | -------------------------------------------------------------------------------- /doc/hierarchy.js: -------------------------------------------------------------------------------- 1 | var hierarchy = 2 | [ 3 | [ "QQuickItem", null, [ 4 | [ "QMLCacheNS::QMLCache", "classQMLCacheNS_1_1QMLCache.html", null ] 5 | ] ] 6 | ]; -------------------------------------------------------------------------------- /doc/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | qml-cache: qml-cache 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 34 | 35 | 36 |
31 |
qml-cache 32 |
33 |
37 |
38 | 39 | 40 | 43 | 44 | 45 | 51 | 52 |
53 |
54 | 59 |
61 |
62 |
63 | 66 |
67 | 68 |
72 |
73 | 74 | 75 |
76 | 79 |
80 | 81 |
82 |
83 |
qml-cache
84 |
85 |
86 |

qml-cache is a persistent app-exclusive key-value store plugin. See README.md for more information.

87 |
88 |
89 | 90 | 97 | 98 | 99 | -------------------------------------------------------------------------------- /doc/inherit_graph_0.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /doc/inherit_graph_0.md5: -------------------------------------------------------------------------------- 1 | 8063c3dfa1bcb9bbab95edd6a1242f46 -------------------------------------------------------------------------------- /doc/inherit_graph_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/inherit_graph_0.png -------------------------------------------------------------------------------- /doc/inherits.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | qml-cache: Class Hierarchy 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | 30 | 34 | 35 | 36 |
31 |
qml-cache 32 |
33 |
37 |
38 | 39 | 40 | 43 | 44 | 45 | 51 | 52 |
53 |
54 | 59 |
61 |
62 |
63 | 66 |
67 | 68 |
72 |
73 | 74 | 75 |
76 | 79 |
80 | 81 |
82 |
83 |
Class Hierarchy
84 |
85 |
86 | 89 | 94 |
90 | 91 | 92 | 93 |
95 |
96 |
97 | 98 | 105 | 106 | 107 | -------------------------------------------------------------------------------- /doc/menu.js: -------------------------------------------------------------------------------- 1 | function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { 2 | function makeTree(data,relPath) { 3 | var result=''; 4 | if ('children' in data) { 5 | result+=''; 12 | } 13 | return result; 14 | } 15 | 16 | $('#main-nav').append(makeTree(menudata,relPath)); 17 | $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); 18 | if (searchEnabled) { 19 | if (serverSide) { 20 | $('#main-menu').append('
  • '); 21 | } else { 22 | $('#main-menu').append('
  • '); 23 | } 24 | } 25 | $('#main-menu').smartmenus(); 26 | } 27 | -------------------------------------------------------------------------------- /doc/menudata.js: -------------------------------------------------------------------------------- 1 | var menudata={children:[ 2 | {text:"Main Page",url:"index.html"}, 3 | {text:"Namespaces",url:"namespaces.html",children:[ 4 | {text:"Namespace List",url:"namespaces.html"}]}, 5 | {text:"Classes",url:"annotated.html",children:[ 6 | {text:"Class List",url:"annotated.html"}, 7 | {text:"Class Index",url:"classes.html"}, 8 | {text:"Class Hierarchy",url:"inherits.html"}, 9 | {text:"Class Members",url:"functions.html",children:[ 10 | {text:"All",url:"functions.html"}, 11 | {text:"Functions",url:"functions_func.html"}]}]}, 12 | {text:"Files",url:"files.html",children:[ 13 | {text:"File List",url:"files.html"}]}]} 14 | -------------------------------------------------------------------------------- /doc/namespaceQMLCacheNS.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | qml-cache: QMLCacheNS Namespace Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
    26 |
    27 | 28 | 29 | 30 | 34 | 35 | 36 |
    31 |
    qml-cache 32 |
    33 |
    37 |
    38 | 39 | 40 | 43 | 44 | 45 | 51 | 52 |
    53 |
    54 | 59 |
    61 |
    62 |
    63 | 66 |
    67 | 68 |
    72 |
    73 | 74 | 75 |
    76 | 79 |
    80 | 81 |
    82 |
    83 | Classes
    84 |
    85 |
    QMLCacheNS Namespace Reference
    86 |
    87 |
    88 | 89 |

    Persistent app-exclusive key-value store plugin, accessible from QML. 90 | More...

    91 | 92 | 94 | 95 | 96 | 97 |

    93 | Classes

    class  QMLCache
     Persistent key-value cache accesible from QML. More...
     
    98 |

    Detailed Description

    99 |

    Persistent app-exclusive key-value store plugin, accessible from QML.

    100 |
    101 |
    102 | 103 | 111 | 112 | 113 | -------------------------------------------------------------------------------- /doc/namespaceQMLCacheNS.js: -------------------------------------------------------------------------------- 1 | var namespaceQMLCacheNS = 2 | [ 3 | [ "QMLCache", "classQMLCacheNS_1_1QMLCache.html", "classQMLCacheNS_1_1QMLCache" ] 4 | ]; -------------------------------------------------------------------------------- /doc/namespaces.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | qml-cache: Namespace List 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
    26 |
    27 | 28 | 29 | 30 | 34 | 35 | 36 |
    31 |
    qml-cache 32 |
    33 |
    37 |
    38 | 39 | 40 | 43 | 44 | 45 | 51 | 52 |
    53 |
    54 | 59 |
    61 |
    62 |
    63 | 66 |
    67 | 68 |
    72 |
    73 | 74 | 75 |
    76 | 79 |
    80 | 81 |
    82 |
    83 |
    Namespace List
    84 |
    85 |
    86 |
    Here is a list of all documented namespaces with brief descriptions:
    87 | 88 | 89 |
     NQMLCacheNSPersistent app-exclusive key-value store plugin, accessible from QML
    90 |
    91 |
    92 |
    93 | 94 | 101 | 102 | 103 | -------------------------------------------------------------------------------- /doc/namespaces.js: -------------------------------------------------------------------------------- 1 | var namespaces = 2 | [ 3 | [ "QMLCacheNS", "namespaceQMLCacheNS.html", null ] 4 | ]; -------------------------------------------------------------------------------- /doc/nav_f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/nav_f.png -------------------------------------------------------------------------------- /doc/nav_g.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/nav_g.png -------------------------------------------------------------------------------- /doc/nav_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/nav_h.png -------------------------------------------------------------------------------- /doc/navtree.css: -------------------------------------------------------------------------------- 1 | #nav-tree .children_ul { 2 | margin:0; 3 | padding:4px; 4 | } 5 | 6 | #nav-tree ul { 7 | list-style:none outside none; 8 | margin:0px; 9 | padding:0px; 10 | } 11 | 12 | #nav-tree li { 13 | white-space:nowrap; 14 | margin:0px; 15 | padding:0px; 16 | } 17 | 18 | #nav-tree .plus { 19 | margin:0px; 20 | } 21 | 22 | #nav-tree .selected { 23 | background-image: url('tab_a.png'); 24 | background-repeat:repeat-x; 25 | color: #fff; 26 | text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); 27 | } 28 | 29 | #nav-tree img { 30 | margin:0px; 31 | padding:0px; 32 | border:0px; 33 | vertical-align: middle; 34 | } 35 | 36 | #nav-tree a { 37 | text-decoration:none; 38 | padding:0px; 39 | margin:0px; 40 | outline:none; 41 | } 42 | 43 | #nav-tree .label { 44 | margin:0px; 45 | padding:0px; 46 | font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; 47 | } 48 | 49 | #nav-tree .label a { 50 | padding:2px; 51 | } 52 | 53 | #nav-tree .selected a { 54 | text-decoration:none; 55 | color:#fff; 56 | } 57 | 58 | #nav-tree .children_ul { 59 | margin:0px; 60 | padding:0px; 61 | } 62 | 63 | #nav-tree .item { 64 | margin:0px; 65 | padding:0px; 66 | } 67 | 68 | #nav-tree { 69 | padding: 0px 0px; 70 | background-color: #FAFAFF; 71 | font-size:14px; 72 | overflow:auto; 73 | } 74 | 75 | #doc-content { 76 | overflow:auto; 77 | display:block; 78 | padding:0px; 79 | margin:0px; 80 | -webkit-overflow-scrolling : touch; /* iOS 5+ */ 81 | } 82 | 83 | #side-nav { 84 | padding:0 6px 0 0; 85 | margin: 0px; 86 | display:block; 87 | position: absolute; 88 | left: 0px; 89 | width: 250px; 90 | } 91 | 92 | .ui-resizable .ui-resizable-handle { 93 | display:block; 94 | } 95 | 96 | .ui-resizable-e { 97 | background-image:url("splitbar.png"); 98 | background-size:100%; 99 | background-repeat:no-repeat; 100 | background-attachment: scroll; 101 | cursor:ew-resize; 102 | height:100%; 103 | right:0; 104 | top:0; 105 | width:6px; 106 | } 107 | 108 | .ui-resizable-handle { 109 | display:none; 110 | font-size:0.1px; 111 | position:absolute; 112 | z-index:1; 113 | } 114 | 115 | #nav-tree-contents { 116 | margin: 6px 0px 0px 0px; 117 | } 118 | 119 | #nav-tree { 120 | background-image:url('nav_h.png'); 121 | background-repeat:repeat-x; 122 | background-color: #F9FAFC; 123 | -webkit-overflow-scrolling : touch; /* iOS 5+ */ 124 | } 125 | 126 | #nav-sync { 127 | position:absolute; 128 | top:5px; 129 | right:24px; 130 | z-index:0; 131 | } 132 | 133 | #nav-sync img { 134 | opacity:0.3; 135 | } 136 | 137 | #nav-sync img:hover { 138 | opacity:0.9; 139 | } 140 | 141 | @media print 142 | { 143 | #nav-tree { display: none; } 144 | div.ui-resizable-handle { display: none; position: relative; } 145 | } 146 | 147 | -------------------------------------------------------------------------------- /doc/navtreedata.js: -------------------------------------------------------------------------------- 1 | var NAVTREE = 2 | [ 3 | [ "qml-cache", "index.html", [ 4 | [ "Namespaces", null, [ 5 | [ "Namespace List", "namespaces.html", "namespaces" ] 6 | ] ], 7 | [ "Classes", "annotated.html", [ 8 | [ "Class List", "annotated.html", "annotated_dup" ], 9 | [ "Class Index", "classes.html", null ], 10 | [ "Class Hierarchy", "hierarchy.html", "hierarchy" ], 11 | [ "Class Members", "functions.html", [ 12 | [ "All", "functions.html", null ], 13 | [ "Functions", "functions_func.html", null ] 14 | ] ] 15 | ] ], 16 | [ "Files", null, [ 17 | [ "File List", "files.html", "files" ] 18 | ] ] 19 | ] ] 20 | ]; 21 | 22 | var NAVTREEINDEX = 23 | [ 24 | "QMLCachePlugin_8cpp.html" 25 | ]; 26 | 27 | var SYNCONMSG = 'click to disable panel synchronisation'; 28 | var SYNCOFFMSG = 'click to enable panel synchronisation'; -------------------------------------------------------------------------------- /doc/navtreeindex0.js: -------------------------------------------------------------------------------- 1 | var NAVTREEINDEX0 = 2 | { 3 | "QMLCachePlugin_8cpp.html":[2,0,0,2], 4 | "QMLCachePlugin_8h.html":[2,0,0,3], 5 | "QMLCachePlugin_8h_source.html":[2,0,0,3], 6 | "QMLCache_8cpp.html":[2,0,0,0], 7 | "QMLCache_8h.html":[2,0,0,1], 8 | "QMLCache_8h_source.html":[2,0,0,1], 9 | "annotated.html":[1,0], 10 | "classQMLCacheNS_1_1QMLCache.html":[1,0,0,0], 11 | "classQMLCacheNS_1_1QMLCache.html#a14669485b2c477b53066e6eaf0000e9f":[1,0,0,0,1], 12 | "classQMLCacheNS_1_1QMLCache.html#a15e6cbe95352e494db053c2fade73740":[1,0,0,0,0], 13 | "classes.html":[1,1], 14 | "dir_68267d1309a1af8e8297ef4c3efbcdba.html":[2,0,0], 15 | "files.html":[2,0], 16 | "functions.html":[1,3,0], 17 | "functions_func.html":[1,3,1], 18 | "hierarchy.html":[1,2], 19 | "index.html":[], 20 | "namespaceQMLCacheNS.html":[0,0,0], 21 | "namespaceQMLCacheNS.html":[1,0,0], 22 | "namespaces.html":[0,0], 23 | "pages.html":[] 24 | }; 25 | -------------------------------------------------------------------------------- /doc/open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/open.png -------------------------------------------------------------------------------- /doc/resize.js: -------------------------------------------------------------------------------- 1 | function initResizable() 2 | { 3 | var cookie_namespace = 'doxygen'; 4 | var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; 5 | 6 | function readCookie(cookie) 7 | { 8 | var myCookie = cookie_namespace+"_"+cookie+"="; 9 | if (document.cookie) { 10 | var index = document.cookie.indexOf(myCookie); 11 | if (index != -1) { 12 | var valStart = index + myCookie.length; 13 | var valEnd = document.cookie.indexOf(";", valStart); 14 | if (valEnd == -1) { 15 | valEnd = document.cookie.length; 16 | } 17 | var val = document.cookie.substring(valStart, valEnd); 18 | return val; 19 | } 20 | } 21 | return 0; 22 | } 23 | 24 | function writeCookie(cookie, val, expiration) 25 | { 26 | if (val==undefined) return; 27 | if (expiration == null) { 28 | var date = new Date(); 29 | date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week 30 | expiration = date.toGMTString(); 31 | } 32 | document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; 33 | } 34 | 35 | function resizeWidth() 36 | { 37 | var windowWidth = $(window).width() + "px"; 38 | var sidenavWidth = $(sidenav).outerWidth(); 39 | content.css({marginLeft:parseInt(sidenavWidth)+"px"}); 40 | writeCookie('width',sidenavWidth-barWidth, null); 41 | } 42 | 43 | function restoreWidth(navWidth) 44 | { 45 | var windowWidth = $(window).width() + "px"; 46 | content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); 47 | sidenav.css({width:navWidth + "px"}); 48 | } 49 | 50 | function resizeHeight() 51 | { 52 | var headerHeight = header.outerHeight(); 53 | var footerHeight = footer.outerHeight(); 54 | var windowHeight = $(window).height() - headerHeight - footerHeight; 55 | content.css({height:windowHeight + "px"}); 56 | navtree.css({height:windowHeight + "px"}); 57 | sidenav.css({height:windowHeight + "px"}); 58 | var width=$(window).width(); 59 | if (width!=collapsedWidth) { 60 | if (width=desktop_vp) { 61 | if (!collapsed) { 62 | collapseExpand(); 63 | } 64 | } else if (width>desktop_vp && collapsedWidth0) { 76 | restoreWidth(0); 77 | collapsed=true; 78 | } 79 | else { 80 | var width = readCookie('width'); 81 | if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } 82 | collapsed=false; 83 | } 84 | } 85 | 86 | header = $("#top"); 87 | sidenav = $("#side-nav"); 88 | content = $("#doc-content"); 89 | navtree = $("#nav-tree"); 90 | footer = $("#nav-path"); 91 | $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); 92 | $(sidenav).resizable({ minWidth: 0 }); 93 | $(window).resize(function() { resizeHeight(); }); 94 | var device = navigator.userAgent.toLowerCase(); 95 | var touch_device = device.match(/(iphone|ipod|ipad|android)/); 96 | if (touch_device) { /* wider split bar for touch only devices */ 97 | $(sidenav).css({ paddingRight:'20px' }); 98 | $('.ui-resizable-e').css({ width:'20px' }); 99 | $('#nav-sync').css({ right:'34px' }); 100 | barWidth=20; 101 | } 102 | var width = readCookie('width'); 103 | if (width) { restoreWidth(width); } else { resizeWidth(); } 104 | resizeHeight(); 105 | var url = location.href; 106 | var i=url.indexOf("#"); 107 | if (i>=0) window.location.hash=url.substr(i); 108 | var _preventDefault = function(evt) { evt.preventDefault(); }; 109 | $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); 110 | $(".ui-resizable-handle").dblclick(collapseExpand); 111 | $(window).load(resizeHeight); 112 | } 113 | 114 | 115 | -------------------------------------------------------------------------------- /doc/search/all_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/search/all_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['qml_2dcache',['qml-cache',['../index.html',1,'']]], 4 | ['qmlcache',['QMLCache',['../classQMLCacheNS_1_1QMLCache.html',1,'QMLCacheNS']]], 5 | ['qmlcache_2ecpp',['QMLCache.cpp',['../QMLCache_8cpp.html',1,'']]], 6 | ['qmlcache_2eh',['QMLCache.h',['../QMLCache_8h.html',1,'']]], 7 | ['qmlcachens',['QMLCacheNS',['../namespaceQMLCacheNS.html',1,'']]], 8 | ['qmlcacheplugin_2ecpp',['QMLCachePlugin.cpp',['../QMLCachePlugin_8cpp.html',1,'']]], 9 | ['qmlcacheplugin_2eh',['QMLCachePlugin.h',['../QMLCachePlugin_8h.html',1,'']]] 10 | ]; 11 | -------------------------------------------------------------------------------- /doc/search/all_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/search/all_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['read',['read',['../classQMLCacheNS_1_1QMLCache.html#a15e6cbe95352e494db053c2fade73740',1,'QMLCacheNS::QMLCache']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/search/all_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/search/all_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['write',['write',['../classQMLCacheNS_1_1QMLCache.html#a14669485b2c477b53066e6eaf0000e9f',1,'QMLCacheNS::QMLCache']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/search/classes_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/search/classes_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['qmlcache',['QMLCache',['../classQMLCacheNS_1_1QMLCache.html',1,'QMLCacheNS']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/search/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/search/close.png -------------------------------------------------------------------------------- /doc/search/files_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/search/files_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['qmlcache_2ecpp',['QMLCache.cpp',['../QMLCache_8cpp.html',1,'']]], 4 | ['qmlcache_2eh',['QMLCache.h',['../QMLCache_8h.html',1,'']]], 5 | ['qmlcacheplugin_2ecpp',['QMLCachePlugin.cpp',['../QMLCachePlugin_8cpp.html',1,'']]], 6 | ['qmlcacheplugin_2eh',['QMLCachePlugin.h',['../QMLCachePlugin_8h.html',1,'']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /doc/search/functions_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/search/functions_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['read',['read',['../classQMLCacheNS_1_1QMLCache.html#a15e6cbe95352e494db053c2fade73740',1,'QMLCacheNS::QMLCache']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/search/functions_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/search/functions_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['write',['write',['../classQMLCacheNS_1_1QMLCache.html#a14669485b2c477b53066e6eaf0000e9f',1,'QMLCacheNS::QMLCache']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/search/mag_sel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/search/mag_sel.png -------------------------------------------------------------------------------- /doc/search/namespaces_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/search/namespaces_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['qmlcachens',['QMLCacheNS',['../namespaceQMLCacheNS.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/search/nomatches.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
    9 |
    No Matches
    10 |
    11 | 12 | 13 | -------------------------------------------------------------------------------- /doc/search/pages_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/search/pages_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['qml_2dcache',['qml-cache',['../index.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/search/search.css: -------------------------------------------------------------------------------- 1 | /*---------------- Search Box */ 2 | 3 | #FSearchBox { 4 | float: left; 5 | } 6 | 7 | #MSearchBox { 8 | white-space : nowrap; 9 | float: none; 10 | margin-top: 8px; 11 | right: 0px; 12 | width: 170px; 13 | height: 24px; 14 | z-index: 102; 15 | } 16 | 17 | #MSearchBox .left 18 | { 19 | display:block; 20 | position:absolute; 21 | left:10px; 22 | width:20px; 23 | height:19px; 24 | background:url('search_l.png') no-repeat; 25 | background-position:right; 26 | } 27 | 28 | #MSearchSelect { 29 | display:block; 30 | position:absolute; 31 | width:20px; 32 | height:19px; 33 | } 34 | 35 | .left #MSearchSelect { 36 | left:4px; 37 | } 38 | 39 | .right #MSearchSelect { 40 | right:5px; 41 | } 42 | 43 | #MSearchField { 44 | display:block; 45 | position:absolute; 46 | height:19px; 47 | background:url('search_m.png') repeat-x; 48 | border:none; 49 | width:115px; 50 | margin-left:20px; 51 | padding-left:4px; 52 | color: #909090; 53 | outline: none; 54 | font: 9pt Arial, Verdana, sans-serif; 55 | -webkit-border-radius: 0px; 56 | } 57 | 58 | #FSearchBox #MSearchField { 59 | margin-left:15px; 60 | } 61 | 62 | #MSearchBox .right { 63 | display:block; 64 | position:absolute; 65 | right:10px; 66 | top:8px; 67 | width:20px; 68 | height:19px; 69 | background:url('search_r.png') no-repeat; 70 | background-position:left; 71 | } 72 | 73 | #MSearchClose { 74 | display: none; 75 | position: absolute; 76 | top: 4px; 77 | background : none; 78 | border: none; 79 | margin: 0px 4px 0px 0px; 80 | padding: 0px 0px; 81 | outline: none; 82 | } 83 | 84 | .left #MSearchClose { 85 | left: 6px; 86 | } 87 | 88 | .right #MSearchClose { 89 | right: 2px; 90 | } 91 | 92 | .MSearchBoxActive #MSearchField { 93 | color: #000000; 94 | } 95 | 96 | /*---------------- Search filter selection */ 97 | 98 | #MSearchSelectWindow { 99 | display: none; 100 | position: absolute; 101 | left: 0; top: 0; 102 | border: 1px solid #90A5CE; 103 | background-color: #F9FAFC; 104 | z-index: 10001; 105 | padding-top: 4px; 106 | padding-bottom: 4px; 107 | -moz-border-radius: 4px; 108 | -webkit-border-top-left-radius: 4px; 109 | -webkit-border-top-right-radius: 4px; 110 | -webkit-border-bottom-left-radius: 4px; 111 | -webkit-border-bottom-right-radius: 4px; 112 | -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); 113 | } 114 | 115 | .SelectItem { 116 | font: 8pt Arial, Verdana, sans-serif; 117 | padding-left: 2px; 118 | padding-right: 12px; 119 | border: 0px; 120 | } 121 | 122 | span.SelectionMark { 123 | margin-right: 4px; 124 | font-family: monospace; 125 | outline-style: none; 126 | text-decoration: none; 127 | } 128 | 129 | a.SelectItem { 130 | display: block; 131 | outline-style: none; 132 | color: #000000; 133 | text-decoration: none; 134 | padding-left: 6px; 135 | padding-right: 12px; 136 | } 137 | 138 | a.SelectItem:focus, 139 | a.SelectItem:active { 140 | color: #000000; 141 | outline-style: none; 142 | text-decoration: none; 143 | } 144 | 145 | a.SelectItem:hover { 146 | color: #FFFFFF; 147 | background-color: #3D578C; 148 | outline-style: none; 149 | text-decoration: none; 150 | cursor: pointer; 151 | display: block; 152 | } 153 | 154 | /*---------------- Search results window */ 155 | 156 | iframe#MSearchResults { 157 | width: 60ex; 158 | height: 15em; 159 | } 160 | 161 | #MSearchResultsWindow { 162 | display: none; 163 | position: absolute; 164 | left: 0; top: 0; 165 | border: 1px solid #000; 166 | background-color: #EEF1F7; 167 | z-index:10000; 168 | } 169 | 170 | /* ----------------------------------- */ 171 | 172 | 173 | #SRIndex { 174 | clear:both; 175 | padding-bottom: 15px; 176 | } 177 | 178 | .SREntry { 179 | font-size: 10pt; 180 | padding-left: 1ex; 181 | } 182 | 183 | .SRPage .SREntry { 184 | font-size: 8pt; 185 | padding: 1px 5px; 186 | } 187 | 188 | body.SRPage { 189 | margin: 5px 2px; 190 | } 191 | 192 | .SRChildren { 193 | padding-left: 3ex; padding-bottom: .5em 194 | } 195 | 196 | .SRPage .SRChildren { 197 | display: none; 198 | } 199 | 200 | .SRSymbol { 201 | font-weight: bold; 202 | color: #425E97; 203 | font-family: Arial, Verdana, sans-serif; 204 | text-decoration: none; 205 | outline: none; 206 | } 207 | 208 | a.SRScope { 209 | display: block; 210 | color: #425E97; 211 | font-family: Arial, Verdana, sans-serif; 212 | text-decoration: none; 213 | outline: none; 214 | } 215 | 216 | a.SRSymbol:focus, a.SRSymbol:active, 217 | a.SRScope:focus, a.SRScope:active { 218 | text-decoration: underline; 219 | } 220 | 221 | span.SRScope { 222 | padding-left: 4px; 223 | } 224 | 225 | .SRPage .SRStatus { 226 | padding: 2px 5px; 227 | font-size: 8pt; 228 | font-style: italic; 229 | } 230 | 231 | .SRResult { 232 | display: none; 233 | } 234 | 235 | DIV.searchresults { 236 | margin-left: 10px; 237 | margin-right: 10px; 238 | } 239 | 240 | /*---------------- External search page results */ 241 | 242 | .searchresult { 243 | background-color: #F0F3F8; 244 | } 245 | 246 | .pages b { 247 | color: white; 248 | padding: 5px 5px 3px 5px; 249 | background-image: url("../tab_a.png"); 250 | background-repeat: repeat-x; 251 | text-shadow: 0 1px 1px #000000; 252 | } 253 | 254 | .pages { 255 | line-height: 17px; 256 | margin-left: 4px; 257 | text-decoration: none; 258 | } 259 | 260 | .hl { 261 | font-weight: bold; 262 | } 263 | 264 | #searchresults { 265 | margin-bottom: 20px; 266 | } 267 | 268 | .searchpages { 269 | margin-top: 10px; 270 | } 271 | 272 | -------------------------------------------------------------------------------- /doc/search/search_l.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/search/search_l.png -------------------------------------------------------------------------------- /doc/search/search_m.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/search/search_m.png -------------------------------------------------------------------------------- /doc/search/search_r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/search/search_r.png -------------------------------------------------------------------------------- /doc/search/searchdata.js: -------------------------------------------------------------------------------- 1 | var indexSectionsWithContent = 2 | { 3 | 0: "qrw", 4 | 1: "q", 5 | 2: "q", 6 | 3: "q", 7 | 4: "rw", 8 | 5: "q" 9 | }; 10 | 11 | var indexSectionNames = 12 | { 13 | 0: "all", 14 | 1: "classes", 15 | 2: "namespaces", 16 | 3: "files", 17 | 4: "functions", 18 | 5: "pages" 19 | }; 20 | 21 | var indexSectionLabels = 22 | { 23 | 0: "All", 24 | 1: "Classes", 25 | 2: "Namespaces", 26 | 3: "Files", 27 | 4: "Functions", 28 | 5: "Pages" 29 | }; 30 | 31 | -------------------------------------------------------------------------------- /doc/splitbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/splitbar.png -------------------------------------------------------------------------------- /doc/sync_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/sync_off.png -------------------------------------------------------------------------------- /doc/sync_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/sync_on.png -------------------------------------------------------------------------------- /doc/tab_a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/tab_a.png -------------------------------------------------------------------------------- /doc/tab_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/tab_b.png -------------------------------------------------------------------------------- /doc/tab_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/tab_h.png -------------------------------------------------------------------------------- /doc/tab_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/doc/tab_s.png -------------------------------------------------------------------------------- /doc/tabs.css: -------------------------------------------------------------------------------- 1 | .sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} -------------------------------------------------------------------------------- /qml-cache.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = lib 2 | TARGET = qmlcacheplugin 3 | 4 | CONFIG += qt plugin c++11 5 | CONFIG -= android_install 6 | 7 | QT += qml quick 8 | 9 | unix{ 10 | QMAKE_CXXFLAGS -= -O2 11 | QMAKE_CXXFLAGS_RELEASE -= -O2 12 | 13 | QMAKE_CXXFLAGS += -O3 14 | QMAKE_CXXFLAGS_RELEASE += -O3 15 | } 16 | 17 | TARGET = $$qtLibraryTarget($$TARGET) 18 | uri = QMLCache 19 | 20 | HEADERS += \ 21 | src/QMLCachePlugin.h \ 22 | src/QMLCache.h 23 | 24 | SOURCES += \ 25 | src/QMLCachePlugin.cpp \ 26 | src/QMLCache.cpp 27 | 28 | OTHER_FILES += qmldir 29 | 30 | #Install plugin library, qmldir 31 | qmldir.files = qmldir 32 | installPath = $$[QT_INSTALL_QML]/$$replace(uri, \\., /) 33 | qmldir.path = $$installPath 34 | target.path = $$installPath 35 | INSTALLS += target qmldir 36 | -------------------------------------------------------------------------------- /qmldir: -------------------------------------------------------------------------------- 1 | module QMLCache 2 | plugin qmlcacheplugin 3 | -------------------------------------------------------------------------------- /samples/qml-cache-demo/README.md: -------------------------------------------------------------------------------- 1 | qml-cache-demo 2 | ============== 3 | 4 | Example use of `QMLCache` in `qml-cache`. Follow the build instructions in [the 5 | qml-cache README](../../README.md) before trying to run this sample. It is tested with Qt 5.10.1 on the 6 | following: 7 | 8 | - Ubuntu 17.10 9 | - macOS 10.13.3 with Xcode 9.3 10 | - Windows 10 (UWP x64 (MSVC 2017)) with Visual Studio 2017 Community (with `Universal Windows Platform development` and `C++ Universal Windows Platform tools`) 11 | - Android 7.1.2 with Ubuntu 17.10 host with Android API 23, Android SDK Tools 25.2.5 and Android NDK r10e 12 | 13 | build & run [Ubuntu & macOS & Android] 14 | -------------------------------------- 15 | 16 | Load the project into QtCreator and press the Run button with the big green arrow. 17 | 18 | build & run [Windows] 19 | --------------------- 20 | 21 | - Load the project into QtCreator, select the `Release` build (and not the `Debug` and `Profile` build) 22 | - Press the Run button with the big green arrow once, this will install and launch the app (you may have to enable `Developer mode` in `Settings` -> `Update & Security` -> `For developers` -> `Use developer features`; this windows will pop up anyway if you haven't enabled it already) 23 | - For all subsequent launches, use `qml-cache-demo` now installed in the Start Menu, otherwise the cache will be deleted making the demo pointless 24 | -------------------------------------------------------------------------------- /samples/qml-cache-demo/android/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 34 | 35 | 36 | 37 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 54 | 55 | 56 | 58 | 59 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /samples/qml-cache-demo/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | jcenter() 4 | } 5 | 6 | dependencies { 7 | classpath 'com.android.tools.build:gradle:1.1.0' 8 | } 9 | } 10 | 11 | allprojects { 12 | repositories { 13 | jcenter() 14 | } 15 | } 16 | 17 | apply plugin: 'com.android.application' 18 | 19 | dependencies { 20 | compile fileTree(dir: 'libs', include: ['*.jar']) 21 | } 22 | 23 | android { 24 | /******************************************************* 25 | * The following variables: 26 | * - androidBuildToolsVersion, 27 | * - androidCompileSdkVersion 28 | * - qt5AndroidDir - holds the path to qt android files 29 | * needed to build any Qt application 30 | * on Android. 31 | * 32 | * are defined in gradle.properties file. This file is 33 | * updated by QtCreator and androiddeployqt tools. 34 | * Changing them manually might break the compilation! 35 | *******************************************************/ 36 | 37 | compileSdkVersion androidCompileSdkVersion.toInteger() 38 | 39 | buildToolsVersion androidBuildToolsVersion 40 | 41 | sourceSets { 42 | main { 43 | manifest.srcFile 'AndroidManifest.xml' 44 | java.srcDirs = [qt5AndroidDir + '/src', 'src', 'java'] 45 | aidl.srcDirs = [qt5AndroidDir + '/src', 'src', 'aidl'] 46 | res.srcDirs = [qt5AndroidDir + '/res', 'res'] 47 | resources.srcDirs = ['src'] 48 | renderscript.srcDirs = ['src'] 49 | assets.srcDirs = ['assets'] 50 | jniLibs.srcDirs = ['libs'] 51 | } 52 | } 53 | 54 | lintOptions { 55 | abortOnError false 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /samples/qml-cache-demo/android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chili-epfl/qml-cache/cec0fe75af7d3c746071736f55fb054d330cf1b6/samples/qml-cache-demo/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /samples/qml-cache-demo/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Apr 10 15:27:10 PDT 2013 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip 7 | -------------------------------------------------------------------------------- /samples/qml-cache-demo/android/gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ############################################################################## 4 | ## 5 | ## Gradle start up script for UN*X 6 | ## 7 | ############################################################################## 8 | 9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 10 | DEFAULT_JVM_OPTS="" 11 | 12 | APP_NAME="Gradle" 13 | APP_BASE_NAME=`basename "$0"` 14 | 15 | # Use the maximum available, or set MAX_FD != -1 to use that value. 16 | MAX_FD="maximum" 17 | 18 | warn ( ) { 19 | echo "$*" 20 | } 21 | 22 | die ( ) { 23 | echo 24 | echo "$*" 25 | echo 26 | exit 1 27 | } 28 | 29 | # OS specific support (must be 'true' or 'false'). 30 | cygwin=false 31 | msys=false 32 | darwin=false 33 | case "`uname`" in 34 | CYGWIN* ) 35 | cygwin=true 36 | ;; 37 | Darwin* ) 38 | darwin=true 39 | ;; 40 | MINGW* ) 41 | msys=true 42 | ;; 43 | esac 44 | 45 | # For Cygwin, ensure paths are in UNIX format before anything is touched. 46 | if $cygwin ; then 47 | [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` 48 | fi 49 | 50 | # Attempt to set APP_HOME 51 | # Resolve links: $0 may be a link 52 | PRG="$0" 53 | # Need this for relative symlinks. 54 | while [ -h "$PRG" ] ; do 55 | ls=`ls -ld "$PRG"` 56 | link=`expr "$ls" : '.*-> \(.*\)$'` 57 | if expr "$link" : '/.*' > /dev/null; then 58 | PRG="$link" 59 | else 60 | PRG=`dirname "$PRG"`"/$link" 61 | fi 62 | done 63 | SAVED="`pwd`" 64 | cd "`dirname \"$PRG\"`/" >&- 65 | APP_HOME="`pwd -P`" 66 | cd "$SAVED" >&- 67 | 68 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 69 | 70 | # Determine the Java command to use to start the JVM. 71 | if [ -n "$JAVA_HOME" ] ; then 72 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 73 | # IBM's JDK on AIX uses strange locations for the executables 74 | JAVACMD="$JAVA_HOME/jre/sh/java" 75 | else 76 | JAVACMD="$JAVA_HOME/bin/java" 77 | fi 78 | if [ ! -x "$JAVACMD" ] ; then 79 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 80 | 81 | Please set the JAVA_HOME variable in your environment to match the 82 | location of your Java installation." 83 | fi 84 | else 85 | JAVACMD="java" 86 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 87 | 88 | Please set the JAVA_HOME variable in your environment to match the 89 | location of your Java installation." 90 | fi 91 | 92 | # Increase the maximum file descriptors if we can. 93 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then 94 | MAX_FD_LIMIT=`ulimit -H -n` 95 | if [ $? -eq 0 ] ; then 96 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 97 | MAX_FD="$MAX_FD_LIMIT" 98 | fi 99 | ulimit -n $MAX_FD 100 | if [ $? -ne 0 ] ; then 101 | warn "Could not set maximum file descriptor limit: $MAX_FD" 102 | fi 103 | else 104 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 105 | fi 106 | fi 107 | 108 | # For Darwin, add options to specify how the application appears in the dock 109 | if $darwin; then 110 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 111 | fi 112 | 113 | # For Cygwin, switch paths to Windows format before running java 114 | if $cygwin ; then 115 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 116 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 117 | 118 | # We build the pattern for arguments to be converted via cygpath 119 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 120 | SEP="" 121 | for dir in $ROOTDIRSRAW ; do 122 | ROOTDIRS="$ROOTDIRS$SEP$dir" 123 | SEP="|" 124 | done 125 | OURCYGPATTERN="(^($ROOTDIRS))" 126 | # Add a user-defined pattern to the cygpath arguments 127 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 128 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 129 | fi 130 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 131 | i=0 132 | for arg in "$@" ; do 133 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 134 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 135 | 136 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 137 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 138 | else 139 | eval `echo args$i`="\"$arg\"" 140 | fi 141 | i=$((i+1)) 142 | done 143 | case $i in 144 | (0) set -- ;; 145 | (1) set -- "$args0" ;; 146 | (2) set -- "$args0" "$args1" ;; 147 | (3) set -- "$args0" "$args1" "$args2" ;; 148 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 149 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 150 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 151 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 152 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 153 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 154 | esac 155 | fi 156 | 157 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules 158 | function splitJvmOpts() { 159 | JVM_OPTS=("$@") 160 | } 161 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS 162 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" 163 | 164 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" 165 | -------------------------------------------------------------------------------- /samples/qml-cache-demo/android/gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /samples/qml-cache-demo/android/res/values/libs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | https://download.qt-project.org/ministro/android/qt5/qt-5.4 5 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /samples/qml-cache-demo/qml-cache-demo.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = app 2 | 3 | QT += qml quick 4 | 5 | SOURCES += src/main.cpp 6 | 7 | RESOURCES += qml.qrc 8 | 9 | android { 10 | target.path = /libs/armeabi-v7a 11 | export(target.path) 12 | INSTALLS += target 13 | export(INSTALLS) 14 | } 15 | 16 | DISTFILES += \ 17 | android/AndroidManifest.xml \ 18 | android/gradle/wrapper/gradle-wrapper.jar \ 19 | android/gradlew.bat \ 20 | android/res/values/libs.xml \ 21 | android/build.gradle \ 22 | android/gradle/wrapper/gradle-wrapper.properties \ 23 | android/gradlew 24 | 25 | ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android 26 | -------------------------------------------------------------------------------- /samples/qml-cache-demo/qml.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | src/main.qml 4 | 5 | 6 | -------------------------------------------------------------------------------- /samples/qml-cache-demo/src/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | int main(int argc, char *argv[]){ 5 | QGuiApplication app(argc, argv); 6 | QQmlApplicationEngine engine; 7 | engine.load(QUrl(QStringLiteral("qrc:///src/main.qml"))); 8 | return app.exec(); 9 | } 10 | -------------------------------------------------------------------------------- /samples/qml-cache-demo/src/main.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.5 2 | import QtQuick.Window 2.1 3 | import QtQuick.Controls 1.4 4 | import QMLCache 1.0 5 | 6 | Window { 7 | visible: true 8 | 9 | width: 640 10 | height: 480 11 | 12 | Column{ 13 | spacing: 5 14 | 15 | TextField{ 16 | id: keyInput 17 | text: "" 18 | placeholderText: "key" 19 | } 20 | 21 | TextField{ 22 | id: valueInput 23 | text: "" 24 | placeholderText: "value" 25 | } 26 | 27 | Button{ 28 | text: "Write" 29 | onClicked: { 30 | QMLCache.write(keyInput.text, valueInput.text); 31 | keyInput.text = ""; 32 | valueInput.text = ""; 33 | } 34 | } 35 | 36 | Button{ 37 | text: "Read" 38 | onClicked: valueInput.text = QMLCache.read(keyInput.text) 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/QMLCache.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016 EPFL 3 | * 4 | * This program is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 3 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program. If not, see http://www.gnu.org/licenses/. 16 | */ 17 | 18 | /** 19 | * @file QMLCache.cpp 20 | * @brief Persistent key-value cache accesible from QML 21 | * @author Ayberk Özgür 22 | * @date 2016-08-11 23 | */ 24 | 25 | #include "QMLCache.h" 26 | 27 | #include 28 | #include 29 | #include 30 | 31 | namespace QMLCacheNS{ 32 | 33 | QMLCache::QMLCache(QQuickItem* parent) : QQuickItem(parent){ 34 | cacheDir = QStandardPaths::writableLocation(QStandardPaths::StandardLocation::CacheLocation); 35 | if(cacheDir.isEmpty()) 36 | qCritical() << "QMLCache::QMLCache(): Cache location could not be determined, QMLCache will not work."; 37 | else{ 38 | if(!QDir::root().mkpath(cacheDir)) 39 | qCritical() << "QMLCache::QMLCache(): Cache directory could not be created, QMLCache will not work."; 40 | } 41 | } 42 | 43 | QMLCache::~QMLCache(){} 44 | 45 | void QMLCache::write(const QString& key, const QString& value){ 46 | if(key.isEmpty()){ 47 | qCritical() << "QMLCache::write(): Key cannot be empty."; 48 | return; 49 | } 50 | QDir::setCurrent(cacheDir); 51 | QFile cacheFile(key); 52 | if(!cacheFile.open(QIODevice::WriteOnly | QIODevice::Truncate)){ 53 | qCritical() << "QMLCache::write(): Could not open cache file, value not written."; 54 | return; 55 | } 56 | QByteArray bytes = value.toUtf8(); 57 | if(cacheFile.write(bytes) < bytes.length()) 58 | qCritical() << "QMLCache::write(): Could not write entire value."; 59 | cacheFile.flush(); 60 | cacheFile.close(); 61 | } 62 | 63 | QString QMLCache::read(const QString& key){ 64 | if(key.isEmpty()){ 65 | qCritical() << "QMLCache::read(): Key cannot be empty."; 66 | return QString(); 67 | } 68 | QDir::setCurrent(cacheDir); 69 | QFile cacheFile(key); 70 | if(!cacheFile.open(QIODevice::ReadOnly)){ 71 | qCritical() << "QMLCache::read(): Could not open cache file."; 72 | return QString(); 73 | } 74 | QString value = QString::fromUtf8(cacheFile.readAll()); 75 | cacheFile.close(); 76 | return value; 77 | } 78 | 79 | } 80 | -------------------------------------------------------------------------------- /src/QMLCache.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016 EPFL 3 | * 4 | * This program is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 3 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program. If not, see http://www.gnu.org/licenses/. 16 | */ 17 | 18 | /** 19 | * @file QMLCache.h 20 | * @brief Persistent key-value cache accesible from QML 21 | * @author Ayberk Özgür 22 | * @date 2016-08-11 23 | */ 24 | 25 | #ifndef QMLCACHE_H 26 | #define QMLCACHE_H 27 | 28 | #include 29 | #include 30 | 31 | namespace QMLCacheNS{ 32 | 33 | /** 34 | * @brief Persistent key-value cache accesible from QML 35 | * @singleton 36 | */ 37 | class QMLCache : public QQuickItem { 38 | /* *INDENT-OFF* */ 39 | Q_OBJECT 40 | /* *INDENT-ON* */ 41 | 42 | public: 43 | 44 | /** @cond DO_NOT_DOCUMENT */ 45 | 46 | /** 47 | * @brief Creates a new QMLCache with the given QML parent 48 | * 49 | * @param parent The QML parent 50 | */ 51 | QMLCache(QQuickItem* parent = 0); 52 | 53 | /** 54 | * @brief Destroys this QMLCache 55 | */ 56 | ~QMLCache(); 57 | 58 | /** @endcond */ 59 | 60 | public slots: 61 | 62 | /** 63 | * @brief Writes a new key-value pair to the app's cache 64 | * 65 | * @param key Key, must not be empty and must be a valid filename 66 | * @param value Value 67 | */ 68 | void write(const QString& key, const QString& value); 69 | 70 | /** 71 | * @brief Reads a key-value pair from the app's cache 72 | * 73 | * @param key Key, must not be empty and must be a valid filename 74 | * @return The value, empty string if key doesn't exist yet 75 | */ 76 | QString read(const QString& key); 77 | 78 | private: 79 | 80 | QString cacheDir; ///< Cache directory for this app 81 | 82 | }; 83 | 84 | } 85 | 86 | #endif /* QMLCACHE_H */ 87 | -------------------------------------------------------------------------------- /src/QMLCachePlugin.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016 EPFL 3 | * 4 | * This program is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 3 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program. If not, see http://www.gnu.org/licenses/. 16 | */ 17 | 18 | /** 19 | * @file QMLCachePlugin.cpp 20 | * @brief Object that exposes the QMLCache plugin components as QML objects 21 | * @author Ayberk Özgür 22 | * @date 2016-08-11 23 | */ 24 | 25 | #include "QMLCachePlugin.h" 26 | 27 | #include "QMLCache.h" 28 | 29 | /** 30 | * @brief Persistent app-exclusive key-value store plugin, accessible from QML 31 | */ 32 | namespace QMLCacheNS{ 33 | 34 | void QMLCachePlugin::registerTypes(const char* uri){ 35 | qmlRegisterSingletonType(uri, 1, 0, "QMLCache", 36 | [] (QQmlEngine* qmlEngine, QJSEngine* jsEngine)->QObject* { 37 | Q_UNUSED(qmlEngine) 38 | Q_UNUSED(jsEngine) 39 | return new QMLCache(); 40 | }); 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /src/QMLCachePlugin.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016 EPFL 3 | * 4 | * This program is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 3 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program. If not, see http://www.gnu.org/licenses/. 16 | */ 17 | 18 | /** 19 | * @mainpage qml-cache 20 | * 21 | * qml-cache is a persistent app-exclusive key-value store plugin. See README.md for more information. 22 | */ 23 | 24 | /** 25 | * @file QMLCachePlugin.h 26 | * @brief Object that exposes the QMLCache plugin components as QML objects 27 | * @author Ayberk Özgür 28 | * @date 2016-08-11 29 | */ 30 | 31 | #ifndef QMLCACHEPLUGIN_H 32 | #define QMLCACHEPLUGIN_H 33 | 34 | #include 35 | #include 36 | 37 | namespace QMLCacheNS{ 38 | 39 | /** @cond DO_NOT_DOCUMENT */ 40 | 41 | class QMLCachePlugin : public QQmlExtensionPlugin { 42 | /* *INDENT-OFF* */ 43 | Q_OBJECT 44 | /* *INDENT-ON* */ 45 | Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface") 46 | 47 | public: 48 | void registerTypes(const char* uri); 49 | }; 50 | 51 | /** @endcond */ 52 | 53 | } 54 | 55 | #endif /* QMLCACHEPLUGIN_H */ 56 | --------------------------------------------------------------------------------