← Back to team overview

uonedb-qt team mailing list archive

[Merge] lp:~kalikiana/u1db-qt/trunk into lp:u1db-qt

 

Christian Dywan has proposed merging lp:~kalikiana/u1db-qt/trunk into lp:u1db-qt.

Commit message:
Install docs into QtAssistant, add Ubuntu style and fix Concepts

Requested reviews:
  U1DB Qt developers (uonedb-qt)

For more details, see:
https://code.launchpad.net/~kalikiana/u1db-qt/trunk/+merge/157141

Install docs into QtAssistant, add Ubuntu style and fix Concepts
-- 
https://code.launchpad.net/~kalikiana/u1db-qt/trunk/+merge/157141
Your team U1DB Qt developers is requested to review the proposed merge of lp:~kalikiana/u1db-qt/trunk into lp:u1db-qt.
=== modified file 'CMakeLists.txt'
--- CMakeLists.txt	2013-03-12 16:08:00 +0000
+++ CMakeLists.txt	2013-04-04 15:35:27 +0000
@@ -77,6 +77,11 @@
 enable_testing()
 
 add_custom_target(check COMMAND "env" "CTEST_OUTPUT_ON_FAILURE=1" "${CMAKE_CTEST_COMMAND}")
+add_custom_target(doc "qdoc" "u1db.qdocconf"
+    COMMAND "sed" "-r" "-i" "'s@(</head>)@<link rel=\"stylesheet\" type=\"text/css\" href=\"style/base.css\" />\\1@'" "./output/html/*.html"
+    COMMAND "qhelpgenerator" "./output/html/u1dbqt.qhp"
+    COMMAND "assistant" "-register" "./output/html/u1dbqt.qch"
+    WORKING_DIRECTORY "documentation")
 add_subdirectory(modules)
 add_subdirectory(tests)
 

=== modified file 'database.cpp'
--- database.cpp	2013-04-02 14:33:49 +0000
+++ database.cpp	2013-04-04 15:35:27 +0000
@@ -32,7 +32,21 @@
 QT_BEGIN_NAMESPACE_U1DB
 
 /*!
+    \page classes.html
+    \title All Classes
+    \ingroup classlists
+
+    \brief If you know the name of the class you want, find it here.
+
+    This is a list of all U1db classes.
+
+    \generatelist annotatedclasses
+*/
+
+/*!
     \class Database
+    \inmodule U1Db
+    \ingroup modules
 
     \brief The Database class implements the on-disk storage of an individual
     U1DB database.

=== modified file 'document.cpp'
--- document.cpp	2013-04-03 09:43:05 +0000
+++ document.cpp	2013-04-04 15:35:27 +0000
@@ -32,6 +32,7 @@
 
 /*!
     \class Document
+    \inmodule U1db
 
     \brief The Document class proxies a single document stored in the Database.
 

=== modified file 'document.h'
--- document.h	2013-02-27 16:47:21 +0000
+++ document.h	2013-04-04 15:35:27 +0000
@@ -30,7 +30,11 @@
 
 class Q_DECL_EXPORT Document : public QObject {
     Q_OBJECT
+#ifdef Q_QDOC
+    Q_PROPERTY(Database* database READ getDatabase WRITE setDatabase NOTIFY databaseChanged)
+#else
     Q_PROPERTY(QT_PREPEND_NAMESPACE_U1DB(Database*) database READ getDatabase WRITE setDatabase NOTIFY databaseChanged)
+#endif
     Q_PROPERTY(QString docId READ getDocId WRITE setDocId NOTIFY docIdChanged)
     Q_PROPERTY(bool create READ getCreate WRITE setCreate NOTIFY createChanged)
     Q_PROPERTY(QVariant defaults READ getDefaults WRITE setDefaults NOTIFY defaultsChanged)

=== added file 'documentation/base.css'
--- documentation/base.css	1970-01-01 00:00:00 +0000
+++ documentation/base.css	2013-04-04 15:35:27 +0000
@@ -0,0 +1,638 @@
+/**
+* Ubuntu Developer base stylesheet
+*
+* A base stylesheet containing site-wide styles
+*
+* @project Ubuntu Developer
+* @version 1.0
+* @author Canonical Web Team: Steve Edwards
+* @copyright 2011 Canonical Ltd.
+*/
+
+/**
+* @section Global
+*/
+
+body {
+	font-family: 'Ubuntu', 'Ubuntu Beta', UbuntuBeta, Ubuntu, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif;
+	font-size: 13px;
+	line-height: 1.4;
+	color: #333;
+}
+a {
+	color: #dd4814;
+	text-decoration: none;
+	outline: 0;
+}
+p, dl {
+	margin-bottom: 10px;
+}
+strong {
+	font-weight: bold;
+}
+em {
+	font-style: italic;
+}
+code{
+	padding: 10px;
+	font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'DejaVu Sans Mono', Courier, monospace;
+	background-color: #fdf6f2;
+	display: block;
+	margin-bottom: 10px;
+		-moz-border-radius: 4px;
+		-webkit-border-radius: 4px;
+	border-radius: 4px;
+}
+h1 {
+	font-size: 36px;
+	line-height: 1.1;
+	margin-bottom: 20px;
+}
+article h1,
+h2 {
+	font-size: 24px;
+	line-height: 1.2;
+	margin-bottom: 14px;
+}
+h3 {
+	font-size: 16px;
+	line-height: 1.3;
+	margin-bottom: 8px;
+}
+h4 {
+	font-weight: bold;
+}
+
+time {
+	color:#999;
+}
+
+/**
+* @section Structure
+*/
+
+.header-login,
+.header-navigation div,
+.header-content div {
+	margin: 0 auto;
+	width: 940px;
+}
+
+.header-content h1{
+	background-color:#ffffff;
+	display:inline-block;
+}
+
+.header-content h2{
+	background-color:#ffffff;
+	display:table;
+}
+
+.header-login ul {
+	margin: 4px 0;
+	float: right;
+}
+.header-login li {
+	margin-right: 10px;
+	float: left;
+}
+.header-login a {
+	color: #333;
+}
+.header-navigation {
+	border-top: 2px solid #dd4814;
+	border-bottom: 2px solid #dd4814;
+	background-color: #fff;
+	height: 54px;
+	clear: right;
+	overflow: hidden;
+}
+.header-navigation nav ul {
+	border-right: 1px solid #dd4814;
+	float: right;
+}
+.header-navigation nav li {
+	border-left: 1px solid #dd4814;
+	float: left;
+	height: 54px;
+}
+.header-navigation nav a {
+	padding: 18px 14px 0;
+	font-size: 14px;
+	display: block;
+	height: 36px;
+}
+.header-navigation nav a:hover {
+	background-color: #fcece7;
+}
+.header-navigation nav .current_page_item a,
+.header-navigation nav .current_page_parent a,
+.header-navigation nav .current_page_ancestor a {
+	background-color: #dd4814;
+	color: #fff;
+}
+.header-navigation input {
+	margin: 12px 10px 0 10px;
+	padding: 5px;
+	border-top: 1px solid #a1a1a1;
+	border-right: 1px solid #e0e0e0;
+	border-bottom: 1px solid #fff;
+	border-left: 1px solid #e0e0e0;
+	width: 90px;
+	font-style: italic;
+	color: #ccc;
+		-moz-border-radius: 3px;
+		-webkit-border-radius: 3px;
+	border-radius: 3px;
+		-moz-box-shadow: inset 0 1px 1px #e0e0e0;
+	   -webkit-box-shadow: inset 0 1px 1px #e0e0e0;
+   box-shadow: inset 0 1px 1px #e0e0e0;
+}
+.header-navigation h2 {
+	margin: 18px 0 0 6px;
+	text-transform: lowercase;
+	font-size: 22px;
+	color: #dd4814;
+	float: left;
+}
+.header-navigation .logo-ubuntu {
+	margin-top: 12px;
+	float: left;
+}
+.header-content .header-navigation-secondary {
+	margin-bottom: 40px;
+	padding: 0;
+	position: relative;
+	z-index: 2;
+}
+.header-navigation-secondary div {
+	padding: 0;
+	border: 2px solid #dd4814;
+		-moz-border-radius: 0px 0px 4px 4px;
+		-webkit-border-radius: 0px 0px 4px 4px;
+	border-radius: 0px 0px 4px 4px;
+	background: #fff;
+	border-top: 0px;
+	width: 936px;
+}
+.header-navigation-secondary nav li {
+	float: left;
+}
+.header-navigation-secondary nav li a {
+	color: #333;
+	display: block;
+	height: 25px;
+	padding: 8px 8px 0;
+}
+.header-navigation-secondary nav li:hover,
+.header-navigation-secondary nav .current_page_item a {
+	background: url("../img/sec-nav-hover.gif");
+}
+.header-content {
+	padding-bottom: 30px;
+	border-bottom: 1px solid #e0e0e0;
+		-moz-box-shadow: 0 1px 3px #e0e0e0;
+		-webkit-box-shadow: 0 1px 3px #e0e0e0;
+	box-shadow: 0 1px 3px #e0e0e0;
+	margin-bottom: 3px;
+	position: relative;
+	overflow: hidden;
+}
+footer {
+	padding: 10px 10px 40px 10px;
+	position: relative;
+		-moz-border-radius: 0 0 4px 4px;
+		-webkit-border-radius: 0 0 4px 4px;
+	border-radius: 0 0 4px 4px;
+	font-size: 12px;
+	background: url("../img/background-footer.png") repeat scroll 0 0 #f7f6f5;
+}
+footer div {
+	margin: 0 auto;
+    padding: 0 10px;
+    width: 940px;
+}
+footer a {
+	color: #000;
+}
+footer nav ul {
+	margin: 10px 17px 30px 0;
+	width: 172px;
+	display: inline-block;
+	vertical-align: top;
+	height: auto;
+	zoom: 1;
+	*display: inline;
+}
+footer nav ul.last {
+	margin-right: 0;
+}
+footer nav li {
+	margin-bottom: 8px;
+}
+footer nav li:first-child {
+	font-weight: bold;
+}
+footer p {
+	margin-bottom: 0;
+}
+#content {
+	padding-top: 35px;
+}
+.arrow-nav {
+	display: none;
+	position: absolute;
+	top: -1px;
+	z-index: 3;
+}
+.shadow {
+	margin: 30px 0 3px 0;
+	border-bottom: 1px solid #e0e0e0;
+		-moz-box-shadow: 0 2px 3px #e0e0e0;
+		-webkit-box-shadow: 0 2px 3px #e0e0e0;
+	box-shadow: 0 2px 3px #e0e0e0;
+	height: 3px;
+}
+
+/**
+* @section Site-wide
+*/
+
+#content h2{
+	font-size:24px;
+}
+
+.box-orange {
+	padding: 10px;
+	border: 3px solid #dd4814;
+		-moz-border-radius: 4px;
+		-webkit-border-radius: 4px;
+	border-radius: 4px;
+}
+.box-orange .link-action-small {
+	float: right;
+	margin: 0 0 0 20px;
+}
+.link-bug {
+	margin-left: 10px;
+	color: #999;
+}
+.link-action {
+	float: left;
+	margin-bottom: 20px;
+	padding: 8px 12px;
+	display: block;
+	background-color: #dd4814;
+	color: #fff;
+		-moz-border-radius: 20px;
+		-webkit-border-radius: 20px;
+	border-radius: 20px;
+	font-size: 16px;
+	line-height: 1.3;
+	border-top: 3px solid #e6633a;
+	border-bottom: 3px solid #c03d14;
+}
+.link-action2 {
+	float: left;
+	display: block;
+	color: #fff;
+	font-size: 16px;
+	line-height: 1.3;
+}
+.link-action2 span{
+	display:block;
+	float:left;
+}
+.link-action2 .cta-left{
+	background:url(../img/button-cta-left.png) no-repeat;
+	width:22px;
+	height:48px;
+}
+.link-action2 .cta-center{
+	background:url(../img/button-cta-slice.png) repeat-x;
+	line-height:45px;
+	height:48px;
+}
+.link-action2 .cta-right{
+	background:url(../img/button-cta-right.png) no-repeat;
+	width:22px;
+	height:48px;
+}
+
+.link-action-small {
+	float: left;
+	display: block;
+	color: #fff;
+	font-size: 16px;
+}
+.link-action-small span{
+	display:block;
+	float:left;
+	height:42px;
+}
+.link-action-small .cta-left{
+	background:url(../img/button-cta-left-small.png) no-repeat;
+	width:19px;
+}
+.link-action-small .cta-center{
+	background:url(../img/button-cta-slice-small.png) repeat-x;
+	line-height:42px;
+}
+.link-action-small .cta-right{
+	background:url(../img/button-cta-right-small.png) no-repeat;
+	width:19px;
+}
+
+.link-action:active {
+	position: relative;
+	top: 1px;
+}
+.link-action2:active {
+	position: relative;
+	top: 1px;
+}
+.link-action-small:active {
+	position: relative;
+	top: 1px;
+}
+.list-bullets li {
+	margin-bottom: 10px;
+	list-style: disc;
+	list-style-position: inside;
+}
+.box {
+	margin-bottom: 30px;
+	padding: 15px;
+	border: 1px solid #aea79f;
+		-moz-border-radius: 4px;
+		-webkit-border-radius: 4px;
+	border-radius: 4px;
+}
+.box-padded {
+	margin-bottom: 30px;
+	padding: 5px;
+	border: 2px solid #aea79f;
+		-moz-border-radius: 4px;
+		-webkit-border-radius: 4px;
+	border-radius: 4px;
+	background: url("../img/pattern-featured.gif") repeat scroll 0 0 #ebe9e7;
+	overflow: hidden;
+}
+.box-padded h3 {
+	 margin: 5px 0 10px 5px;
+}
+.box-padded div {
+	padding: 10px;
+	border: 1px solid #aea79f;
+		-moz-border-radius: 4px;
+		-webkit-border-radius: 4px;
+	border-radius: 4px;
+	background-color: #fff;
+	overflow: hidden;
+}
+.box-padded li {
+	padding: 0 10px;
+	float: left;
+	width: 211px;
+	border-right: 1px dotted #aea79f;
+}
+.box-padded li.first {
+	padding: 0;
+	margin-bottom: 0;
+}
+.box-padded li.last {
+	border: 0;
+	width: 217px;
+}
+.box-padded img {
+	margin: 0 10px 50px 0;
+	float: left;
+		-moz-border-radius: 8px;
+		-webkit-border-radius: 8px;
+	border-radius: 8px;
+}
+.box-clear {
+	margin-bottom: 40px;
+}
+.box-clear .grid-4.first {
+	margin-right: 15px;
+	padding-right: 15px;
+}
+.box-clear .grid-4 {
+	margin-left: 0;
+	margin-right: 10px;
+	padding-right: 10px;
+	width: 298px;
+}
+.box-clear time {
+	display: block;
+	border-bottom: 1px dotted #aea79f;
+	padding-bottom: 10px;
+	margin-bottom: 10px;
+}
+.box-clear div.first {
+	border-right: 1px dotted #aea79f;
+}
+.box-clear a {
+	display: block;
+}
+.box-clear .rss {
+	background: url("../img/rss.jpg") no-repeat scroll 0 center;
+	padding-left: 20px;
+}
+.box-clear .location {
+	display: block;
+	margin-bottom: 1px;
+}
+.box-clear .last {
+	margin: 0;
+	padding-right: 0;
+		-moz-border-radius: 4px;
+		-webkit-border-radius: 4px;
+	border-radius: 4px;
+	width: 293px;
+}
+
+/* Widgets */
+
+.ui-state-focus {
+	outline: none;
+}
+.ui-accordion {
+	border-bottom: 1px dotted #aea79f;
+}
+.ui-accordion a {
+	display: block;
+}
+.ui-accordion h3 {
+	margin-bottom: 0;
+	border-top: 1px dotted #aea79f;
+	position: relative;
+	font-size: 13px;
+	font-weight: bold;
+}
+.ui-accordion h3 a {
+	padding: 10px 0;
+	color: #333;
+}
+.ui-accordion h4 {
+	margin-bottom: 5px;
+}
+.ui-accordion div fieldset {
+	padding-bottom: 5px;
+}
+.ui-accordion div li,
+.ui-accordion div input {
+	margin-bottom: 10px;
+}
+.ui-accordion .ui-icon {
+	position: absolute;
+	top: 15px;
+	right: 0;
+	display: block;
+	width: 8px;
+	height: 8px;
+	background: url("../img/icon-accordion-inactive.png") 0 0 no-repeat transparent;
+}
+.ui-accordion .ui-state-active .ui-icon {
+	background-image: url("../img/icon-accordion-active.png");
+}
+.ui-accordion .current_page_item a {
+	color: #333;
+}
+.container-tweet {
+		-moz-border-radius: 4px 4px 4px 4px;
+		-webkit-border-radius: 4px 4px 4px 4px;
+	border-radius: 4px 4px 4px 4px;
+	padding: 10px 10px 10px;
+	background-color: #f7f7f7;
+}
+.container-tweet .tweet-follow {
+	margin-top: 10px;
+	margin-bottom: -10px;
+	padding-left: 55px;
+	padding-bottom: 6px;
+	background: url("../img/tweet-follow.png") 0 5px no-repeat;
+	display: block;
+}
+.container-tweet .tweet-follow span {
+	font-size: 16px;
+	font-weight: bold;
+	line-height: 1.2;
+	display: block;
+}
+.tweet a {
+	display: inline;
+}
+.tweet .tweet_text {
+	padding: 10px;
+	background-color: #fff;
+		-moz-border-radius: 4px 4px 4px 4px;
+		-webkit-border-radius: 4px 4px 4px 4px;
+	border-radius: 4px 4px 4px 4px;
+	border: 1px solid #dd4814;
+	font-size: 16px;
+	display: block;
+	clear: both;
+}
+.tweet.tweet-small .tweet_text {
+	font-size: inherit;
+}
+.tweet .tweet_text a {
+	color: #333;
+}
+.tweet .tweet_time,
+.tweet .tweet_user_and_time {
+	padding: 15px 0 10px 0;
+	position: relative;
+	top: -2px;
+	background: url("../img/tweet-arrow.png") no-repeat;
+	display: block;
+}
+.tweet .tweet_odd .tweet_time,
+.tweet .tweet_odd .tweet_user_and_time {
+	background-position: right 0;
+	float: right;
+}
+.tweet .tweet_even .tweet_time,
+.tweet .tweet_even .tweet_user_and_time {
+	background-position: left 0;
+	float: left;
+}
+
+/* Search */
+
+#content .list-search li {
+	list-style-type:none;
+	border:0px;
+	margin-bottom: 15px;
+	padding-top: 15px;
+}
+
+/* Blog */
+
+.blog-article #nav-single {
+	margin-top: 30px;
+	margin-bottom: 30px;
+}
+.blog-article #nav-single .nav-next {
+	float: right;
+}
+.blog-article article header .entry-meta {
+	margin-bottom: 20px;
+}
+.blog-article article .entry-meta {
+	color: #999;
+}
+.blog-article #respond form input[type="submit"] {
+	float: left;
+	cursor: pointer;
+	margin-bottom: 20px;
+	padding: 8px 12px;
+	display: block;
+	background-color: #dd4814;
+	color: #fff;
+		-moz-border-radius: 20px;
+		-webkit-border-radius: 20px;
+	border-radius: 20px;
+	font-size: 16px;
+	line-height: 1.3;
+	border-top: 3px solid #e6633a;
+	border-left: 3px solid #e6633a;
+	border-right: 3px solid #e6633a;
+	border-bottom: 3px solid #c03d14;
+}
+.blog-article #respond form input[type="submit"]:active {
+	position: relative;
+	top: 1px;
+}
+
+.alignnone{
+    float:left;
+    margin:10px 20px 10px 0;
+}
+.alignleft{
+    float:left;
+    margin:10px 20px 10px 0;
+}
+.alignright{
+    float:right;
+   margin:10px 0 10px 20px;
+}
+
+.aligncenter{
+	float:left;
+    margin:10px 20px 10px 0;
+}
+.entry-content h2, .entry-content h3{
+    margin-top:20px;
+}
+.entry-content ul li{
+    list-style-type: circle;
+    margin-left:16px;
+}
+
+.entry-content hr{
+	border:none;
+	border-top: 1px dotted #AEA79F;
+}

=== modified file 'documentation/concepts.qdoc'
--- documentation/concepts.qdoc	2013-03-14 11:29:54 +0000
+++ documentation/concepts.qdoc	2013-04-04 15:35:27 +0000
@@ -20,12 +20,12 @@
 
 
 /*!
+\page concepts.html
+\title U1DB Design Conctepts
 
 This concept guide will describe a wide variety of U1Db-Qt functionality and usage. It will cover:
 
 \list 1
-    \li Brief description of U1DB
-    \li What is the difference between U1DB and U1Db-Qt?
     \li Overview of U1Db Documents and Databases
     \li Creating Documents and Databases
     \li Database keys and Document contents
@@ -44,42 +44,28 @@
     \li Using a Document without a Database
 \endlist
 
-  */
-
-/*!
-
 \section1 Brief Description of U1DB
 
 U1DB is a database API for synchronised databases of JSON documents. It’s simple to use in applications, and allows apps to store documents and synchronise them between machines and devices. U1DB is the database designed to work everywhere, backed by the platform’s native data storage capabilities. This means that you can use u1db on different platforms, from different languages, and backed on to different databases, and sync between all of them.
 
-  */
-
-/*!
-
 \section1 What is the difference between U1DB and U1Db-Qt
 
 U1Db-Qt is the QML implementation of U1DB. It is a QML plugin written in C++ and allows for creating and manipulating U1DB databases via a more declarative approach within a QML application.
 
-  */
-
-        /*!
-
             A Database is very simple to create. It only needs an id and a path where the file will be created. A Database is a model, which can be used by elements, such as the ListView further in this example.
 
+            \qml
             U1db.Database {
                 id: aDatabase
                 path: "aU1DbDSatabase2"
             }
-
-        */
-
-
-        /*!
+            \endqml
 
             A Document can be declared at runtime. It requires at the very least a unique 'docId', but that alone won't do anything special. The snipet below snippet demonstrates the basic requirements.
 
             In addition to this, this example displays text from the database for a specific docId and id key in a text area called 'documentContent. To update the text area at startup with either the default value or a value from the database the onCompleted function is utilized, which is also demonstrated below.
 
+            \qml
             U1db.Document {
                 id: aDocument
                 database: aDatabase
@@ -92,32 +78,22 @@
                 }
 
             }
-
-        */
-
-
-
-       /*!
+            \endqml
 
          It should be possible to use a document without a database, as demonstrated in this snippet. Additionally this document will use the concept of sub-keys, as exemplified by the "bookmarks" id key + contents. This example will attempt to use the bookmark document to store docId values from the database, which will be displayed in a ListView on the second tab of the application. The user will be able to select a value from the ListView and the first tab will be modified accordingly.
 
+       \qml
        U1db.Document {
             id: aBookmarkDocument
             docId: 'bookmarks'
             create: true
             defaults: { "bookmarks": [{}] }
        }
-
-
-         */
-
-
-
-
-               /*!
+       \endqml
 
                  The listDocs method retrieves all the docId values from the current database. In this demonstration the values are put into an array, which is then checked to locate the docId for the current and previous documents within the database.
 
+               \qml
                var documentIds = {}
 
                documentIds = documentObject.database.listDocs()
@@ -132,64 +108,44 @@
                    }
 
                }
-
-                 */
-
-
-
-
-
-
-                /*!
+               \endqml
 
                 These steps demonstrate the creation of a temporary document, based on a copy of the global document. This will then be used to determine if there is already a document in the database with the same docId as the address bar, and additionally with a key id with the same name.
 
-                var tempDocument = {}
+                \qml
                 var tempFieldName = addressBarText;
-                var tempContents = {};
 
-                tempDocument = aDocument
+                var tempDocument = aDocument
                 tempDocument.docId = addressBarText;
 
-                tempContents = tempDocument.contents
-
-                NOTE: For simplicity sake this example sometimes uses the same value for both the docId and the key id, as seen here. Real life implimentations can and will differ, and this will be demonstrated elsewhere in the example code.
-
-                */
-
-
-                    /*!
+                var tempContents = tempDocument.contents
+                \endqml
+
+                \b{Note: For simplicity sake this example sometimes uses the same value for both the docId and the key id, as seen here. Real life implimentations can and will differ, and this will be demonstrated elsewhere in the example code.}
 
                     Here the contents of the temporary document are modified, which then replaces the global document.
 
+                    \qml
                     documentContent.text = 'More Hello World...';
 
-                    tempContents = {}
+                    var tempContents = {}
                     tempContents[tempFieldName] = documentContent.text
                     tempDocument.contents = tempContents
                     aDocument = tempDocument
-
-                    */
-
-
-                /*!
+                    \endqml
 
                 In this instance the current document's content is updated from the text view. The unique key and docId are not modified because the database already contains a record with those properties.
 
-                tempContents = {}
+                \qml
+                var tempContents = {}
                 tempFieldName = getCurrentDocumentKey(aDocument.contents)
                 tempContents[tempFieldName] = documentContent.text
                 aDocument.contents = tempContents
-
-                */
-
-
-
-
-
-
-                    /*! Here a rectangle is defined that represents the lower portion of our application. It will contain all the main parts of the application.
-
+                \endqml
+
+                    Here a rectangle is defined that represents the lower portion of our application. It will contain all the main parts of the application.
+
+                    \qml
                     Rectangle {
 
                          width: units.gu(45)
@@ -202,13 +158,11 @@
 
                          }
 
-                     */
-
-
-                            /*!
+                     \endqml
 
                             The following TextArea is for displaying contents for the current state of the global document, as defined by the key / name in the address bar.
 
+                            \qml
                             TextArea{
 
                                 id: documentContent
@@ -222,17 +176,11 @@
                                 color: "#000000"
 
                             }
-
-                             */
-
-
-
-
-
-                                    /*!
+                            \endqml
 
                                         There is an object within in the 'aDocument' model defined earlier called 'contents', which contains a key called 'hello', which represents a search string.  In this example the key will represent the name of a document in the database, which will be displayed in the address bar. Displaying the key is demonstrated here:
 
+                                    \qml
                                     text: displayKey(aDocument.contents)
 
                                     function displayKey(documentObject){
@@ -242,6 +190,5 @@
                                         return keys[0]
 
                                     }
-
-                                    */
+                                    \endqml
 

=== modified file 'documentation/u1db.qdocconf'
--- documentation/u1db.qdocconf	2013-03-18 09:30:41 +0000
+++ documentation/u1db.qdocconf	2013-04-04 15:35:27 +0000
@@ -2,6 +2,20 @@
 description = U1Db-Qt plugin documentation
 
 sourcedirs = ..
+headers = ../database.h \
+          ../document.h \
+          ../index.h \
+          ../query.h \
+          ../global.h
+Cpp.ignoretokens = Q_DECL_EXPORT \
+                   Q_PROPERTY \
+                   QT_BEGIN_NAMESPACE_U1DB \
+                   
+defines = Q_QDOC
+Cpp.ignoredirectives = Q_ENUMS \
+                       Q_FLAGS \
+                       QT_PREPEND_NAMESPACE_U1DB \
+                       Q_DISABLE_COPY
 exampledirs = ../examples
 imagedirs = images 
 
@@ -12,3 +26,11 @@
 
 outputdir  =    output/html
 outputformats = HTML
+syntaxhighlighting = true
+HTML.stylesheets   = base.css
+
+qhp.projects             = U1DbQt
+qhp.U1DbQt.file          = u1dbqt.qhp
+qhp.U1DbQt.namespace     = net.launchpad.u1db-qt
+qhp.U1DbQt.virtualFolder = u1dbqt
+

=== modified file 'index.cpp'
--- index.cpp	2013-04-03 09:44:52 +0000
+++ index.cpp	2013-04-04 15:35:27 +0000
@@ -32,6 +32,7 @@
 
 /*!
     \class Index
+    \inmodule U1db
 
     \brief The Index class defines an index to be stored in the database and
     queried using Query. Changes in documents affected by the index also update

=== modified file 'index.h'
--- index.h	2013-02-28 17:59:51 +0000
+++ index.h	2013-04-04 15:35:27 +0000
@@ -30,7 +30,11 @@
 
 class Q_DECL_EXPORT Index : public QObject {
     Q_OBJECT
+#ifdef Q_QDOC
+    Q_PROPERTY(Database* database READ getDatabase WRITE setDatabase NOTIFY databaseChanged)
+#else
     Q_PROPERTY(QT_PREPEND_NAMESPACE_U1DB(Database*) database READ getDatabase WRITE setDatabase NOTIFY databaseChanged)
+#endif
     Q_PROPERTY(QString name READ getName WRITE setName NOTIFY nameChanged)
     Q_PROPERTY(QStringList expression READ getExpression WRITE setExpression NOTIFY expressionChanged)
 public:

=== modified file 'query.cpp'
--- query.cpp	2013-04-03 09:45:24 +0000
+++ query.cpp	2013-04-04 15:35:27 +0000
@@ -33,6 +33,7 @@
 
 /*!
     \class Query
+    \inmodule U1db
 
     \brief The Query class generates a filtered list of documents based on either
     a query or a range, and using the given Index.

=== modified file 'query.h'
--- query.h	2013-02-28 17:59:51 +0000
+++ query.h	2013-04-04 15:35:27 +0000
@@ -29,7 +29,11 @@
 
 class Q_DECL_EXPORT Query : public QAbstractListModel {
     Q_OBJECT
+#ifdef Q_QDOC
+    Q_PROPERTY(Index* index READ getIndex WRITE setIndex NOTIFY indexChanged)
+#else
     Q_PROPERTY(QT_PREPEND_NAMESPACE_U1DB(Index*) index READ getIndex WRITE setIndex NOTIFY indexChanged)
+#endif
     Q_PROPERTY(QVariant query READ getQuery WRITE setQuery NOTIFY queryChanged)
     Q_PROPERTY(QVariant range READ getRange WRITE setRange NOTIFY rangeChanged)
 public:


Follow ups