Initial commit
authorTofe <chris.chapuis+maemo@gmail.com>
Tue, 21 Feb 2012 21:59:11 +0000 (22:59 +0100)
committerTofe <chris.chapuis+gitorious@gmail.com>
Tue, 21 Feb 2012 21:59:11 +0000 (22:59 +0100)
35 files changed:
QuickNewsReader.desktop [new file with mode: 0644]
QuickNewsReader.pro [new file with mode: 0644]
QuickNewsReader.svg [new file with mode: 0644]
QuickNewsReader64.png [new file with mode: 0644]
main.cpp [new file with mode: 0644]
qml/QuickNewsReader/content/images/busy.png [new file with mode: 0644]
qml/QuickNewsReader/content/images/scrollbar.png [new file with mode: 0644]
qml/QuickNewsReader/content/modelimpl/FavoriteFeedsJournalModel.qml [new file with mode: 0644]
qml/QuickNewsReader/content/modelimpl/FavoriteRssFeeds.qml [new file with mode: 0644]
qml/QuickNewsReader/content/modelimpl/LeMondeJournalModel.qml [new file with mode: 0644]
qml/QuickNewsReader/content/modelimpl/LeMondeSequenceNews.qml [new file with mode: 0644]
qml/QuickNewsReader/content/modelimpl/LeMondeSequencesList.qml [new file with mode: 0644]
qml/QuickNewsReader/content/modelimpl/RssFeedModel.qml [new file with mode: 0644]
qml/QuickNewsReader/content/modelimpl/YahooJournalModel.qml [new file with mode: 0644]
qml/QuickNewsReader/content/modelimpl/YahooRssFeeds.qml [new file with mode: 0644]
qml/QuickNewsReader/content/modelitf/JournalModel.qml [new file with mode: 0644]
qml/QuickNewsReader/content/view/BusyIndicator.qml [new file with mode: 0644]
qml/QuickNewsReader/content/view/Categories.qml [new file with mode: 0644]
qml/QuickNewsReader/content/view/CategoryDelegate.qml [new file with mode: 0644]
qml/QuickNewsReader/content/view/JournalDelegate.qml [new file with mode: 0644]
qml/QuickNewsReader/content/view/Journals.qml [new file with mode: 0644]
qml/QuickNewsReader/content/view/News.qml [new file with mode: 0644]
qml/QuickNewsReader/content/view/NewsDelegate.qml [new file with mode: 0644]
qml/QuickNewsReader/content/view/NewsDetail.qml [new file with mode: 0644]
qml/QuickNewsReader/content/view/ScrollBar.qml [new file with mode: 0644]
qml/QuickNewsReader/main.qml [new file with mode: 0644]
qmlapplicationviewer/qmlapplicationviewer.cpp [new file with mode: 0644]
qmlapplicationviewer/qmlapplicationviewer.h [new file with mode: 0644]
qmlapplicationviewer/qmlapplicationviewer.pri [new file with mode: 0644]
qtc_packaging/debian_fremantle/README [new file with mode: 0644]
qtc_packaging/debian_fremantle/changelog [new file with mode: 0644]
qtc_packaging/debian_fremantle/compat [new file with mode: 0644]
qtc_packaging/debian_fremantle/control [new file with mode: 0644]
qtc_packaging/debian_fremantle/copyright [new file with mode: 0644]
qtc_packaging/debian_fremantle/rules [new file with mode: 0755]

diff --git a/QuickNewsReader.desktop b/QuickNewsReader.desktop
new file mode 100644 (file)
index 0000000..ff4ff37
--- /dev/null
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Encoding=UTF-8
+Version=1.0
+Type=Application
+Terminal=false
+Name=QuickNewsReader
+Exec=/opt/QuickNewsReader/bin/QuickNewsReader
+Icon=QuickNewsReader64
+X-Window-Icon=
+X-HildonDesk-ShowInToolbar=true
+X-Osso-Type=application/x-executable
diff --git a/QuickNewsReader.pro b/QuickNewsReader.pro
new file mode 100644 (file)
index 0000000..f72ca64
--- /dev/null
@@ -0,0 +1,45 @@
+# Add more folders to ship with the application, here
+folder_01.source = qml/QuickNewsReader
+folder_01.target = qml
+DEPLOYMENTFOLDERS = folder_01
+
+# Additional import path used to resolve QML modules in Creator's code model
+QML_IMPORT_PATH =
+
+symbian:TARGET.UID3 = 0xE52C9725
+
+# Smart Installer package's UID
+# This UID is from the protected range and therefore the package will
+# fail to install if self-signed. By default qmake uses the unprotected
+# range value if unprotected UID is defined for the application and
+# 0x2002CCCF value if protected UID is given to the application
+#symbian:DEPLOYMENT.installer_header = 0x2002CCCF
+
+# Allow network access on Symbian
+symbian:TARGET.CAPABILITY += NetworkServices
+
+# If your application uses the Qt Mobility libraries, uncomment the following
+# lines and add the respective components to the MOBILITY variable.
+# CONFIG += mobility
+# MOBILITY +=
+
+# Speed up launching on MeeGo/Harmattan when using applauncherd daemon
+# CONFIG += qdeclarative-boostable
+
+# Add dependency to Symbian components
+# CONFIG += qt-components
+
+# The .cpp file which was generated for your project. Feel free to hack it.
+SOURCES += main.cpp
+
+# Please do not modify the following two lines. Required for deployment.
+include(qmlapplicationviewer/qmlapplicationviewer.pri)
+qtcAddDeployment()
+
+OTHER_FILES += \
+    qtc_packaging/debian_fremantle/rules \
+    qtc_packaging/debian_fremantle/README \
+    qtc_packaging/debian_fremantle/copyright \
+    qtc_packaging/debian_fremantle/control \
+    qtc_packaging/debian_fremantle/compat \
+    qtc_packaging/debian_fremantle/changelog
diff --git a/QuickNewsReader.svg b/QuickNewsReader.svg
new file mode 100644 (file)
index 0000000..566acfa
--- /dev/null
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   height="44px"
+   version="1.1"
+   viewBox="0 0 44 44"
+   width="44px"
+   x="0px"
+   y="0px"
+   id="svg2"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="qt.svg">
+  <metadata
+     id="metadata18">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs16">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 22 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="44 : 22 : 1"
+       inkscape:persp3d-origin="22 : 14.666667 : 1"
+       id="perspective2836" />
+  </defs>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1920"
+     inkscape:window-height="1020"
+     id="namedview14"
+     showgrid="false"
+     inkscape:zoom="21.454545"
+     inkscape:cx="49.412871"
+     inkscape:cy="21.894358"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="g3" />
+  <g
+     transform="matrix(0.18308778,0,0,0.18308778,6.6100946,3.2385199)"
+     id="g3">
+    <path
+       d="M 43.09,0.3586 C 40.94,0.0036 38.84,-0.0824 36.81,0.0776 31.968136,0.39505671 27.122677,0.73638425 22.28,1.0696 9.62,2.0816 0,12.4996 0,26.8896 l 0,169.7 14.19,13.2 28.87,-209.42 0.03,-0.011 z"
+       style="fill:#006225"
+       id="path5"
+       sodipodi:nodetypes="cccccccc" />
+    <path
+       d="m 174.4,160 c 0,12.5 -7.75,24.07 -17.57,25.77 L 14.23,209.73 V 25.93 C 14.23,9.21 27.57,-2.27 43.12,0.3 l 131.3,21.52 v 138.2 z"
+       style="fill:#80c342"
+       id="path7" />
+    <path
+       d="m 154.9,80.96 -12.96,-0.598 0,0.278 6.945,0.32 6.016,0 z"
+       style="fill:#006225"
+       id="path11" />
+    <path
+       d="m 144.6,135.6 c 0.66,0.328 1.43,0.476 2.351,0.476 0.161,0 0.329,-0.004 0.497,-0.016 2.55,-0.148 5.32,-0.933 8.343,-2.308 h -6.015 c -1.821,0.832 -3.532,1.457 -5.176,1.848 z"
+       style="fill:#006225"
+       id="path13" />
+    <path
+       id="path17"
+       style="fill:#ffffff"
+       d="m 91.15,132.4 c 2.351,-6.051 3.511,-17.91 3.511,-35.62 0,-15.89 -1.148,-26.82 -3.484,-32.81 -2.336,-6.027 -5.832,-9.281 -10.52,-9.691 -0.359,-0.031 -0.714,-0.051 -1.058,-0.051 -4.34,0 -7.68,2.535 -10.01,7.625 -2.52,5.543 -3.793,17.04 -3.793,34.44 0,16.82 1.238,28.75 3.734,35.75 2.356,6.672 5.879,9.976 10.5,9.976 0.207,0 0.41,-0.008 0.621,-0.019 4.633,-0.293 8.121,-3.496 10.49,-9.602 m 17.98,3.75 c -4.117,9.707 -10.39,16.06 -18.99,19 0.867,4.449 2.176,7.441 3.922,9.019 1.351,1.211 3.433,1.821 6.222,1.821 0.805,0 1.668,-0.055 2.59,-0.157 v 13.12 l -5.961,0.782 c -1.758,0.23 -3.426,0.343 -5.004,0.343 -5.218,0 -9.445,-1.265 -12.62,-3.824 -4.207,-3.379 -7.308,-9.894 -9.297,-19.54 -9.136,-1.945 -16.26,-7.754 -21.19,-17.5 -5.004,-9.902 -7.551,-24.39 -7.551,-43.34 0,-20.43 3.484,-35.51 10.34,-45.07 5.789,-8.07 13.86,-12.04 24.02,-12.04 1.629,0 3.309,0.102 5.043,0.305 11.95,1.375 20.62,7.016 26.26,16.79 5.535,9.562 8.254,23.27 8.254,41.26 0,16.48 -2,29.45 -6.043,39.02 z M 130.4,45.91 l 11.52,1.238 0,20.21 12.96,0.914 0,12.68 -12.96,-0.598 0,46.33 c 0,4.032 0.445,6.625 1.34,7.789 0.8,1.067 2.046,1.594 3.71,1.594 0.161,0 0.329,-0.004 0.497,-0.016 2.55,-0.148 5.32,-0.933 8.343,-2.308 v 11.65 c -5.136,2.258 -10.18,3.598 -15.12,4.02 -0.718,0.055 -1.41,0.086 -2.078,0.086 -4.48,0 -7.906,-1.301 -10.25,-3.934 -2.73,-3.051 -4.09,-7.949 -4.09,-14.67 V 79.535 L 118.046,79.25 V 65.66 l 7.586,0.547 4.773,-20.3 z" />
+    <path
+       d="m 100.3,166 c 0.809,0 1.672,-0.055 2.59,-0.157 H 98.054 C 98.73,165.949 99.507,166 100.3,166 z"
+       style="fill:#006225"
+       id="path19" />
+    <path
+       id="path21"
+       style="fill:#006225"
+       d="m 84.85,63.98 c 2.336,5.997 3.484,16.92 3.484,32.81 0,17.7 -1.16,29.57 -3.512,35.62 -1.894,4.879 -4.527,7.902 -7.863,9.07 0.965,0.368 1.992,0.551 3.078,0.551 0.207,0 0.41,-0.008 0.621,-0.019 4.633,-0.293 8.121,-3.496 10.49,-9.602 2.351,-6.051 3.511,-17.91 3.511,-35.62 0,-15.89 -1.148,-26.82 -3.484,-32.81 -2.336,-6.027 -5.832,-9.281 -10.52,-9.691 -0.359,-0.031 -0.714,-0.051 -1.058,-0.051 -1.09,0 -2.117,0.16 -3.082,0.481 h -0.004 c 3.601,1.121 6.379,4.215 8.336,9.261 z m -2.344,114.3 c -0.113,-0.05 -0.227,-0.105 -0.336,-0.16 -0.012,-0.004 -0.023,-0.012 -0.035,-0.015 -0.102,-0.051 -0.207,-0.106 -0.309,-0.157 -0.019,-0.011 -0.039,-0.019 -0.058,-0.031 -0.09,-0.051 -0.184,-0.098 -0.278,-0.148 -0.027,-0.016 -0.054,-0.036 -0.086,-0.051 -0.082,-0.043 -0.164,-0.09 -0.242,-0.137 -0.039,-0.023 -0.078,-0.047 -0.113,-0.07 -0.07,-0.039 -0.145,-0.082 -0.215,-0.125 -0.047,-0.031 -0.094,-0.059 -0.14,-0.09 -0.059,-0.039 -0.118,-0.074 -0.176,-0.113 -0.059,-0.039 -0.114,-0.075 -0.168,-0.114 -0.051,-0.031 -0.102,-0.066 -0.149,-0.097 -0.066,-0.047 -0.132,-0.094 -0.195,-0.137 -0.039,-0.027 -0.078,-0.055 -0.113,-0.082 -0.078,-0.055 -0.153,-0.113 -0.231,-0.172 -0.023,-0.016 -0.05,-0.035 -0.078,-0.055 -0.098,-0.078 -0.199,-0.156 -0.297,-0.234 -4.207,-3.379 -7.308,-9.894 -9.297,-19.54 -9.136,-1.945 -16.26,-7.754 -21.19,-17.5 -5.004,-9.902 -7.551,-24.39 -7.551,-43.34 0,-20.43 3.484,-35.51 10.34,-45.07 5.789,-8.07 13.86,-12.04 24.02,-12.04 h -6.351 c -10.15,0.008 -18.22,3.977 -24,12.04 -6.855,9.563 -10.34,24.64 -10.34,45.07 0,18.95 2.547,33.44 7.551,43.34 4.934,9.75 12.05,15.56 21.19,17.5 1.989,9.641 5.09,16.16 9.297,19.54 3.176,2.559 7.403,3.824 12.62,3.824 0.098,0 0.199,0 0.297,-0.004 h 5.539 c -3.406,-0.05 -6.383,-0.66 -8.906,-1.828 L 82.498,178.28 z M 128.4,145.6 c -2.73,-3.051 -4.09,-7.949 -4.09,-14.67 V 79.57 l -6.226,-0.285 v -13.59 h -6.016 v 3.035 c 0.871,3.273 1.555,6.82 2.063,10.64 l 4.164,0.192 v 51.36 c 0,6.723 1.367,11.62 4.09,14.67 2.343,2.633 5.765,3.934 10.25,3.934 h 6.015 c -4.48,0 -7.906,-1.301 -10.25,-3.934 z m 2.043,-99.66 -6.016,0 -4.668,19.88 5.911,0.422 4.773,-20.3 z" />
+  </g>
+</svg>
diff --git a/QuickNewsReader64.png b/QuickNewsReader64.png
new file mode 100644 (file)
index 0000000..efc2e53
Binary files /dev/null and b/QuickNewsReader64.png differ
diff --git a/main.cpp b/main.cpp
new file mode 100644 (file)
index 0000000..bc27b34
--- /dev/null
+++ b/main.cpp
@@ -0,0 +1,14 @@
+#include <QtGui/QApplication>
+#include "qmlapplicationviewer.h"
+
+Q_DECL_EXPORT int main(int argc, char *argv[])
+{
+    QScopedPointer<QApplication> app(createApplication(argc, argv));
+
+    QmlApplicationViewer viewer;
+    viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto);
+    viewer.setMainQmlFile(QLatin1String("qml/QuickNewsReader/main.qml"));
+    viewer.showExpanded();
+
+    return app->exec();
+}
diff --git a/qml/QuickNewsReader/content/images/busy.png b/qml/QuickNewsReader/content/images/busy.png
new file mode 100644 (file)
index 0000000..664c2b1
Binary files /dev/null and b/qml/QuickNewsReader/content/images/busy.png differ
diff --git a/qml/QuickNewsReader/content/images/scrollbar.png b/qml/QuickNewsReader/content/images/scrollbar.png
new file mode 100644 (file)
index 0000000..0228dcf
Binary files /dev/null and b/qml/QuickNewsReader/content/images/scrollbar.png differ
diff --git a/qml/QuickNewsReader/content/modelimpl/FavoriteFeedsJournalModel.qml b/qml/QuickNewsReader/content/modelimpl/FavoriteFeedsJournalModel.qml
new file mode 100644 (file)
index 0000000..db533d4
--- /dev/null
@@ -0,0 +1,13 @@
+import QtQuick 1.0
+import "../modelitf"
+
+JournalModel {
+    name: "Preferred feeds"
+
+    categoriesModel: FavoriteRssFeeds { }
+    newsModel: RssFeedModel {
+        currentFeed: categoriesModel.get(window.currentCategoryIndex).feed
+    }
+
+    loading: newsModel.loading
+}
diff --git a/qml/QuickNewsReader/content/modelimpl/FavoriteRssFeeds.qml b/qml/QuickNewsReader/content/modelimpl/FavoriteRssFeeds.qml
new file mode 100644 (file)
index 0000000..6d1143e
--- /dev/null
@@ -0,0 +1,9 @@
+import QtQuick 1.0
+import "../modelitf"
+
+ListModel {
+    id: rssFeedsModel
+
+    ListElement { name: "xkcd"; feed: "xkcd.com/rss.xml" }
+//    ListElement { name: "Journal du Geek"; feed: "www.journaldugeek.com/rss.php" }
+}
diff --git a/qml/QuickNewsReader/content/modelimpl/LeMondeJournalModel.qml b/qml/QuickNewsReader/content/modelimpl/LeMondeJournalModel.qml
new file mode 100644 (file)
index 0000000..5cc1670
--- /dev/null
@@ -0,0 +1,22 @@
+import QtQuick 1.0
+import "../modelitf"
+
+JournalModel {
+    name: "Le Monde"
+
+    function getSeqId(categoryIndex)
+    {
+        if( typeof categoriesModel.get(categoryIndex) != "undefined" )
+            if( typeof categoriesModel.get(categoryIndex).seqid != "undefined" )
+                return categoriesModel.get(categoryIndex).seqid
+
+        return ""
+    }
+
+    categoriesModel: LeMondeSequencesList { }
+    newsModel: LeMondeSequenceNews {
+        seqid: getSeqId(window.currentCategoryIndex)
+    }
+
+    loading: categoriesModel.loading || newsModel.loading
+}
diff --git a/qml/QuickNewsReader/content/modelimpl/LeMondeSequenceNews.qml b/qml/QuickNewsReader/content/modelimpl/LeMondeSequenceNews.qml
new file mode 100644 (file)
index 0000000..c8be7fd
--- /dev/null
@@ -0,0 +1,17 @@
+import QtQuick 1.0
+
+XmlListModel {
+    id: feedModel
+
+    property string seqid: "3210"
+    property bool loading: feedModel.status === XmlListModel.Loading
+
+    source: "http://www.lemonde.fr/widget/nokia/sequence/" + seqid + ".xml"
+    query: "/sequence/element"
+
+    XmlRole { name: "title"; query: "titre_appel/string()" }
+    XmlRole { name: "image"; query: "image[2]/@url/string()" }
+    XmlRole { name: "link"; query: "lien_web/string()" }
+    XmlRole { name: "description"; query: "description_appel/string()" }
+    XmlRole { name: "detailedContent"; query: "contenu/string()" }
+}
diff --git a/qml/QuickNewsReader/content/modelimpl/LeMondeSequencesList.qml b/qml/QuickNewsReader/content/modelimpl/LeMondeSequencesList.qml
new file mode 100644 (file)
index 0000000..8d4debb
--- /dev/null
@@ -0,0 +1,21 @@
+import QtQuick 1.0
+
+XmlListModel {
+    id: rssFeedsModel
+
+    property bool loading: rssFeedsModel.status === XmlListModel.Loading
+
+    source: "http://www.lemonde.fr/widget/nokia/liste_sequences.xml"
+    query: "/sequences/sequence"
+
+    XmlRole { name: "name"; query: "titre/string()" }
+    XmlRole { name: "seqid"; query: "id/string()" }
+
+    onLoadingChanged: {
+        if(status === XmlListModel.Ready)
+        {
+            // trigger a re-evaluation of the news readings
+            currentCategoryIndex = 0
+        }
+    }
+}
diff --git a/qml/QuickNewsReader/content/modelimpl/RssFeedModel.qml b/qml/QuickNewsReader/content/modelimpl/RssFeedModel.qml
new file mode 100644 (file)
index 0000000..34bb48b
--- /dev/null
@@ -0,0 +1,16 @@
+import QtQuick 1.0
+
+XmlListModel {
+    id: feedModel
+
+    property string currentFeed: ""
+    property bool loading: feedModel.status === XmlListModel.Loading
+
+    source: "http://" + currentFeed
+    query: "/rss/channel/item"
+
+    XmlRole { name: "title"; query: "title/string()" }
+    XmlRole { name: "link"; query: "link/string()" }
+    XmlRole { name: "description"; query: "description/string()" }
+
+}
diff --git a/qml/QuickNewsReader/content/modelimpl/YahooJournalModel.qml b/qml/QuickNewsReader/content/modelimpl/YahooJournalModel.qml
new file mode 100644 (file)
index 0000000..982731c
--- /dev/null
@@ -0,0 +1,13 @@
+import QtQuick 1.0
+import "../modelitf"
+
+JournalModel {
+    name: "Yahoo! News"
+
+    categoriesModel: YahooRssFeeds { }
+    newsModel: RssFeedModel {
+        currentFeed: categoriesModel.get(window.currentCategoryIndex).feed
+    }
+
+    loading: newsModel.loading
+}
diff --git a/qml/QuickNewsReader/content/modelimpl/YahooRssFeeds.qml b/qml/QuickNewsReader/content/modelimpl/YahooRssFeeds.qml
new file mode 100644 (file)
index 0000000..654a0e8
--- /dev/null
@@ -0,0 +1,19 @@
+import QtQuick 1.0
+import "../modelitf"
+
+ListModel {
+    id: rssFeedsModel
+
+    ListElement { name: "Top Stories"; feed: "rss.news.yahoo.com/rss/topstories" }
+    ListElement { name: "World"; feed: "rss.news.yahoo.com/rss/world" }
+    ListElement { name: "Europe"; feed: "rss.news.yahoo.com/rss/europe" }
+    ListElement { name: "Oceania"; feed: "rss.news.yahoo.com/rss/oceania" }
+    ListElement { name: "U.S. National"; feed: "rss.news.yahoo.com/rss/us" }
+    ListElement { name: "Politics"; feed: "rss.news.yahoo.com/rss/politics" }
+    ListElement { name: "Business"; feed: "rss.news.yahoo.com/rss/business" }
+    ListElement { name: "Technology"; feed: "rss.news.yahoo.com/rss/tech" }
+    ListElement { name: "Entertainment"; feed: "rss.news.yahoo.com/rss/entertainment" }
+    ListElement { name: "Health"; feed: "rss.news.yahoo.com/rss/health" }
+    ListElement { name: "Science"; feed: "rss.news.yahoo.com/rss/science" }
+    ListElement { name: "Sports"; feed: "rss.news.yahoo.com/rss/sports" }
+}
diff --git a/qml/QuickNewsReader/content/modelitf/JournalModel.qml b/qml/QuickNewsReader/content/modelitf/JournalModel.qml
new file mode 100644 (file)
index 0000000..9f93d81
--- /dev/null
@@ -0,0 +1,12 @@
+import QtQuick 1.0
+
+QtObject {
+    id: journalModel
+    property string name: "Journal"
+
+    property bool loading
+
+    property variant categoriesModel
+    property variant newsModel
+}
+
diff --git a/qml/QuickNewsReader/content/view/BusyIndicator.qml b/qml/QuickNewsReader/content/view/BusyIndicator.qml
new file mode 100644 (file)
index 0000000..933d5a2
--- /dev/null
@@ -0,0 +1,53 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtDeclarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Image {
+    id: container
+    property bool on: false
+
+    source: "../images/busy.png"; visible: container.on
+
+    NumberAnimation on rotation {
+        running: container.on; from: 0; to: 360; loops: Animation.Infinite; duration: 1200
+    }
+}
diff --git a/qml/QuickNewsReader/content/view/Categories.qml b/qml/QuickNewsReader/content/view/Categories.qml
new file mode 100644 (file)
index 0000000..04288ce
--- /dev/null
@@ -0,0 +1,21 @@
+import QtQuick 1.0
+
+Rectangle {
+
+    id: categoriesRect
+    width: 220
+    color: "#efefef"
+
+    ListView {
+        focus: true
+        id: categories
+        x: 0; y: 0
+        width: 220; height: window.height
+        model: currentJournal.categoriesModel
+        footer: quitButtonDelegate
+        delegate: CategoryDelegate {}
+        highlight: Rectangle { color: "steelblue" }
+        highlightMoveSpeed: 9999999
+    }
+    ScrollBar { scrollArea: categories; height: categories.height; width: 8; anchors.right: categories.right }
+}
diff --git a/qml/QuickNewsReader/content/view/CategoryDelegate.qml b/qml/QuickNewsReader/content/view/CategoryDelegate.qml
new file mode 100644 (file)
index 0000000..71422dc
--- /dev/null
@@ -0,0 +1,83 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtDeclarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Item {
+    id: delegate
+
+    width: delegate.ListView.view.width; height: 60
+
+    Text {
+        text: name
+        color: delegate.ListView.isCurrentItem ? "white" : "black"
+        font { family: "Helvetica"; pixelSize: 16; bold: true }
+        anchors {
+            left: parent.left; leftMargin: 15
+            verticalCenter: parent.verticalCenter
+        }
+    }
+
+    BusyIndicator {
+        scale: 0.6
+        on: delegate.ListView.isCurrentItem && window.loading
+        anchors { right: parent.right; rightMargin: 10; verticalCenter: parent.verticalCenter }
+    }
+
+    Rectangle {
+        width: delegate.width; height: 1; color: "#cccccc"
+        anchors.bottom: delegate.bottom
+        visible: delegate.ListView.isCurrentItem ? false : true
+    }
+    Rectangle {
+        width: delegate.width; height: 1; color: "white"
+        visible: delegate.ListView.isCurrentItem ? false : true
+    }
+
+    MouseArea {
+        anchors.fill: delegate
+        onClicked: {
+            delegate.ListView.view.currentIndex = index
+            window.currentCategoryIndex = index
+            window.currentNewsIndex = -1
+        }
+    }
+}
diff --git a/qml/QuickNewsReader/content/view/JournalDelegate.qml b/qml/QuickNewsReader/content/view/JournalDelegate.qml
new file mode 100644 (file)
index 0000000..9e4f45e
--- /dev/null
@@ -0,0 +1,84 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtDeclarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Item {
+    id: delegate
+
+    width: delegate.ListView.view.width; height: 60
+
+    Text {
+        text: journalName
+        color: delegate.ListView.isCurrentItem ? "white" : "black"
+        font { family: "Helvetica"; pixelSize: 16; bold: true }
+        anchors {
+            left: parent.left; leftMargin: 15
+            verticalCenter: parent.verticalCenter
+        }
+    }
+
+    BusyIndicator {
+        scale: 0.6
+        on: delegate.ListView.isCurrentItem && window.loading
+        anchors { right: parent.right; rightMargin: 10; verticalCenter: parent.verticalCenter }
+    }
+
+    Rectangle {
+        width: delegate.width; height: 1; color: "#cccccc"
+        anchors.bottom: delegate.bottom
+        visible: delegate.ListView.isCurrentItem ? false : true
+    }
+    Rectangle {
+        width: delegate.width; height: 1; color: "white"
+        visible: delegate.ListView.isCurrentItem ? false : true
+    }
+
+    MouseArea {
+        anchors.fill: delegate
+        onClicked: {
+            delegate.ListView.view.currentIndex = index
+            window.currentJournalIndex = index
+            window.currentCategoryIndex = 0
+            window.currentNewsIndex = 0
+        }
+    }
+}
diff --git a/qml/QuickNewsReader/content/view/Journals.qml b/qml/QuickNewsReader/content/view/Journals.qml
new file mode 100644 (file)
index 0000000..be35893
--- /dev/null
@@ -0,0 +1,21 @@
+import QtQuick 1.0
+
+Rectangle {
+    id: journalsRect
+    width: 150
+    color: "#dfdfdf"
+
+    ListView {
+        focus: true
+        id: journals
+        x: 0; y: 0
+        width: 150; height: window.height
+        currentIndex: currentJournalIndex
+        model: journalList
+        footer: quitButtonDelegate
+        delegate: JournalDelegate {}
+        highlight: Rectangle { color: "steelblue" }
+        highlightMoveSpeed: 9999999
+    }
+    ScrollBar { scrollArea: journals; height: journals.height; width: 8; anchors.right: journals.right }
+}
diff --git a/qml/QuickNewsReader/content/view/News.qml b/qml/QuickNewsReader/content/view/News.qml
new file mode 100644 (file)
index 0000000..b6a7c1b
--- /dev/null
@@ -0,0 +1,15 @@
+import QtQuick 1.0
+
+Item {
+    id: newsRect
+    width: window.width
+
+    ListView {
+        x: 0; y: 0
+        id: list
+        width: newsRect.width; height: window.height
+        model: currentJournal.newsModel
+        delegate: NewsDelegate { }
+    }
+    ScrollBar { scrollArea: list; height: list.height; width: 8; anchors.right: list.right }
+}
diff --git a/qml/QuickNewsReader/content/view/NewsDelegate.qml b/qml/QuickNewsReader/content/view/NewsDelegate.qml
new file mode 100644 (file)
index 0000000..517e86f
--- /dev/null
@@ -0,0 +1,94 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtDeclarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Item {
+    id: delegate
+    height: column.height + 40
+    width: delegate.ListView.view.width
+
+    Column {
+        id: column
+        x: 10; y: 10
+        width: parent.width - 20
+
+        Text {
+            id: titleText
+            text: title; width: column.width; wrapMode: Text.WordWrap
+            font { bold: true; family: "Helvetica"; pointSize: 16 }
+        }
+
+
+        Row {
+            spacing: 5
+
+            Image {
+                id: detailImage
+                source: (typeof image != "undefined") ? image: ""
+            }
+
+            Text {
+                text: description; width: column.width - detailImage.width - 10; wrapMode: Text.WordWrap
+                font.family: "Helvetica"
+            }
+        }
+    }
+
+    MouseArea {
+        anchors.fill: delegate
+
+        onDoubleClicked: {
+            if (typeof detailedContent != "undefined") {
+                //newsDetailRect.webViewAction.enabled = false
+                currentNewsIndex = index
+           ////     journalsRect.x -= window.width + newsRect.x
+                //newsDetailRect.webViewAction.enabled = true
+                //newsDetailRect.webViewAction.trigger()
+            }
+        }
+    }
+
+    Rectangle {
+        width: parent.width; height: 1; color: "#cccccc"
+        anchors.bottom: parent.bottom
+    }
+}
diff --git a/qml/QuickNewsReader/content/view/NewsDetail.qml b/qml/QuickNewsReader/content/view/NewsDetail.qml
new file mode 100644 (file)
index 0000000..211b395
--- /dev/null
@@ -0,0 +1,67 @@
+import QtQuick 1.0
+//import QtWebKit 1.0
+
+Item {
+    id: newsDetailRect
+    width: window.width; height: window.height
+
+    function getNewsModelItem(newsIndex, prop)
+    {
+        if( typeof currentJournal.newsModel.get(newsIndex) != "undefined" )
+            if( typeof currentJournal.newsModel.get(newsIndex)[prop] != "undefined" )
+                return currentJournal.newsModel.get(newsIndex)[prop]
+
+        return ""
+    }
+
+    property string urllink: getNewsModelItem(currentNewsIndex, 'link')
+    property string htmlcontent: getNewsModelItem(currentNewsIndex, 'detailedContent')
+    property string title: getNewsModelItem(currentNewsIndex, 'title')
+    property string image: getNewsModelItem(currentNewsIndex, 'image')
+
+    VisualItemModel {
+        id: itemModel
+
+        Column {
+            id: column
+            x: 10; y: 10
+            width: newsDetailRect.width - 20
+
+            Row {
+                spacing: 5
+
+                Image {
+                    id: detailImage
+                    source: image
+                }
+
+                Text {
+                    text: title; width: column.width - detailImage.width - 10; wrapMode: Text.WordWrap
+                    font { bold: true; family: "Helvetica"; pointSize: 16 }
+                }
+            }
+
+            Text {
+                id: detailText
+                text: htmlcontent; width: newsDetailRect.width - 20; wrapMode: Text.WordWrap
+                font.family: "Helvetica"
+            }
+        }
+    }
+    ListView {
+        id: itemListView
+        anchors.fill: newsDetailRect
+        model: itemModel
+    }
+    ScrollBar { scrollArea: itemListView; height: itemListView.height; width: 8; anchors.right: itemListView.right }
+/*
+    WebView {
+        id: newsDetailWebView
+        anchors.fill: parent
+        html: htmlcontent
+        url: urllink
+        preferredWidth: window.width
+        preferredHeight: window.height
+    }
+*/
+}
diff --git a/qml/QuickNewsReader/content/view/ScrollBar.qml b/qml/QuickNewsReader/content/view/ScrollBar.qml
new file mode 100644 (file)
index 0000000..f32695b
--- /dev/null
@@ -0,0 +1,107 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtDeclarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Item {
+    id: container
+
+    property variant scrollArea
+    property variant orientation: Qt.Vertical
+
+    opacity: 0
+
+    function position()
+    {
+        var ny = 0;
+        if (container.orientation == Qt.Vertical)
+            ny = scrollArea.visibleArea.yPosition * container.height;
+        else
+            ny = scrollArea.visibleArea.xPosition * container.width;
+        if (ny > 2) return ny; else return 2;
+    }
+
+    function size()
+    {
+        var nh, ny;
+
+        if (container.orientation == Qt.Vertical)
+            nh = scrollArea.visibleArea.heightRatio * container.height;
+        else
+            nh = scrollArea.visibleArea.widthRatio * container.width;
+
+        if (container.orientation == Qt.Vertical)
+            ny = scrollArea.visibleArea.yPosition * container.height;
+        else
+            ny = scrollArea.visibleArea.xPosition * container.width;
+
+        if (ny > 3) {
+            var t;
+            if (container.orientation == Qt.Vertical)
+                t = Math.ceil(container.height - 3 - ny);
+            else
+                t = Math.ceil(container.width - 3 - ny);
+            if (nh > t) return t; else return nh;
+        } else return nh + ny;
+    }
+
+    Rectangle { anchors.fill: parent; color: "Black"; opacity: 0.3 }
+
+    BorderImage {
+        source: "../images/scrollbar.png"
+        border { left: 1; right: 1; top: 1; bottom: 1 }
+        x: container.orientation == Qt.Vertical ? 2 : position()
+        width: container.orientation == Qt.Vertical ? container.width - 4 : size()
+        y: container.orientation == Qt.Vertical ? position() : 2
+        height: container.orientation == Qt.Vertical ? size() : container.height - 4
+    }
+
+    states: State {
+        name: "visible"
+        when: container.orientation == Qt.Vertical ? scrollArea.movingVertically : scrollArea.movingHorizontally
+        PropertyChanges { target: container; opacity: 1.0 }
+    }
+
+    transitions: Transition {
+        from: "visible"; to: ""
+        NumberAnimation { properties: "opacity"; duration: 600 }
+    }
+}
diff --git a/qml/QuickNewsReader/main.qml b/qml/QuickNewsReader/main.qml
new file mode 100644 (file)
index 0000000..0c5cf69
--- /dev/null
@@ -0,0 +1,96 @@
+import QtQuick 1.0
+import "content/view"
+import "content/modelimpl"
+import "content/modelitf"
+
+Rectangle {
+    id: window
+    width: 800; height: 480
+
+    property int currentJournalIndex: 0
+    property int currentCategoryIndex: -1
+    property int currentNewsIndex: -1
+
+    property list<JournalModel> listJournalModel: [
+        LeMondeJournalModel{},
+        FavoriteFeedsJournalModel{},
+        YahooJournalModel{}
+    ]
+
+    ListModel {
+        id: journalList
+
+        ListElement {
+            journalName: 'Le Monde'
+            journalHierarchy: [
+                // list of journals
+                ListElement { component: "content/view/Journals.qml"; componentId: "journalsRect" },
+                // list of categories for a given journal
+                ListElement { component: "content/view/Categories.qml"; componentId: "categoriesRect" },
+                // list of news for a given category
+                ListElement { component: "content/view/News.qml"; componentId: "newsRect" },
+                // Details for a given news
+                ListElement { component: "content/view/NewsDetail.qml"; componentId: "newsDetailRect" }
+            ]
+        }
+        ListElement {
+            journalName: 'Favorite RSS'
+            journalHierarchy: [
+                // list of journals
+                ListElement { component: "content/view/Journals.qml"; componentId: "journalsRect" },
+                // list of categories for a given journal
+                ListElement { component: "content/view/Categories.qml"; componentId: "categoriesRect" },
+                // list of news for a given category
+                ListElement { component: "content/view/News.qml"; componentId: "newsRect" }
+            ]
+        }
+        ListElement {
+            journalName: 'Yahoo! News'
+            journalHierarchy: [
+                // list of journals
+                ListElement { component: "content/view/Journals.qml"; componentId: "journalsRect" },
+                // list of categories for a given journal
+                ListElement { component: "content/view/Categories.qml"; componentId: "categoriesRect" },
+                // list of news for a given category
+                ListElement { component: "content/view/News.qml"; componentId: "newsRect" }
+            ]
+        }
+    }
+
+    property variant currentJournal: listJournalModel[currentJournalIndex]
+    property bool loading: currentJournal.loading
+
+    ListView {
+        id: viewsList
+
+        anchors.fill: window
+        orientation: ListView.Horizontal
+        snapMode: ListView.SnapOneItem
+        flickDeceleration: 500
+
+        model: journalList.get(currentJournalIndex).journalHierarchy
+        delegate: Loader {
+            id: componentId
+            source: component
+        }
+    }
+
+    Component {
+        id: quitButtonDelegate
+        Item {
+            width: parent.width; height: 60
+            Text {
+                text: "Quit"
+                font { family: "Helvetica"; pixelSize: 16; bold: true }
+                anchors {
+                    left: parent.left; leftMargin: 15
+                    verticalCenter: parent.verticalCenter
+                }
+            }
+            MouseArea {
+                anchors.fill: parent
+                onClicked: Qt.quit()
+            }
+        }
+    }
+}
diff --git a/qmlapplicationviewer/qmlapplicationviewer.cpp b/qmlapplicationviewer/qmlapplicationviewer.cpp
new file mode 100644 (file)
index 0000000..997bbfc
--- /dev/null
@@ -0,0 +1,174 @@
+// checksum 0xee24 version 0x70013
+/*
+  This file was generated by the Qt Quick Application wizard of Qt Creator.
+  QmlApplicationViewer is a convenience class containing mobile device specific
+  code such as screen orientation handling. Also QML paths and debugging are
+  handled here.
+  It is recommended not to modify this file, since newer versions of Qt Creator
+  may offer an updated version of it.
+*/
+
+#include "qmlapplicationviewer.h"
+
+#include <QtCore/QDir>
+#include <QtCore/QFileInfo>
+#include <QtGui/QApplication>
+#include <QtDeclarative/QDeclarativeComponent>
+#include <QtDeclarative/QDeclarativeEngine>
+#include <QtDeclarative/QDeclarativeContext>
+
+#include <qplatformdefs.h> // MEEGO_EDITION_HARMATTAN
+
+#ifdef HARMATTAN_BOOSTER
+#include <MDeclarativeCache>
+#endif
+
+#if defined(QMLJSDEBUGGER) && QT_VERSION < 0x040800
+
+#include <qt_private/qdeclarativedebughelper_p.h>
+
+#if !defined(NO_JSDEBUGGER)
+#include <jsdebuggeragent.h>
+#endif
+#if !defined(NO_QMLOBSERVER)
+#include <qdeclarativeviewobserver.h>
+#endif
+
+// Enable debugging before any QDeclarativeEngine is created
+struct QmlJsDebuggingEnabler
+{
+    QmlJsDebuggingEnabler()
+    {
+        QDeclarativeDebugHelper::enableDebugging();
+    }
+};
+
+// Execute code in constructor before first QDeclarativeEngine is instantiated
+static QmlJsDebuggingEnabler enableDebuggingHelper;
+
+#endif // QMLJSDEBUGGER
+
+class QmlApplicationViewerPrivate
+{
+    QString mainQmlFile;
+    friend class QmlApplicationViewer;
+    static QString adjustPath(const QString &path);
+};
+
+QString QmlApplicationViewerPrivate::adjustPath(const QString &path)
+{
+#ifdef Q_OS_UNIX
+#ifdef Q_OS_MAC
+    if (!QDir::isAbsolutePath(path))
+        return QString::fromLatin1("%1/../Resources/%2")
+                .arg(QCoreApplication::applicationDirPath(), path);
+#else
+    const QString pathInInstallDir =
+            QString::fromLatin1("%1/../%2").arg(QCoreApplication::applicationDirPath(), path);
+    if (QFileInfo(pathInInstallDir).exists())
+        return pathInInstallDir;
+#endif
+#endif
+    return path;
+}
+
+QmlApplicationViewer::QmlApplicationViewer(QWidget *parent)
+    : QDeclarativeView(parent)
+    , d(new QmlApplicationViewerPrivate())
+{
+    connect(engine(), SIGNAL(quit()), SLOT(close()));
+    setResizeMode(QDeclarativeView::SizeRootObjectToView);
+    // Qt versions prior to 4.8.0 don't have QML/JS debugging services built in
+#if defined(QMLJSDEBUGGER) && QT_VERSION < 0x040800
+#if !defined(NO_JSDEBUGGER)
+    new QmlJSDebugger::JSDebuggerAgent(engine());
+#endif
+#if !defined(NO_QMLOBSERVER)
+    new QmlJSDebugger::QDeclarativeViewObserver(this, this);
+#endif
+#endif
+}
+
+QmlApplicationViewer::~QmlApplicationViewer()
+{
+    delete d;
+}
+
+QmlApplicationViewer *QmlApplicationViewer::create()
+{
+    return new QmlApplicationViewer();
+}
+
+void QmlApplicationViewer::setMainQmlFile(const QString &file)
+{
+    d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file);
+    setSource(QUrl::fromLocalFile(d->mainQmlFile));
+}
+
+void QmlApplicationViewer::addImportPath(const QString &path)
+{
+    engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path));
+}
+
+void QmlApplicationViewer::setOrientation(ScreenOrientation orientation)
+{
+#if defined(Q_OS_SYMBIAN)
+    // If the version of Qt on the device is < 4.7.2, that attribute won't work
+    if (orientation != ScreenOrientationAuto) {
+        const QStringList v = QString::fromAscii(qVersion()).split(QLatin1Char('.'));
+        if (v.count() == 3 && (v.at(0).toInt() << 16 | v.at(1).toInt() << 8 | v.at(2).toInt()) < 0x040702) {
+            qWarning("Screen orientation locking only supported with Qt 4.7.2 and above");
+            return;
+        }
+    }
+#endif // Q_OS_SYMBIAN
+
+    Qt::WidgetAttribute attribute;
+    switch (orientation) {
+#if QT_VERSION < 0x040702
+    // Qt < 4.7.2 does not yet have the Qt::WA_*Orientation attributes
+    case ScreenOrientationLockPortrait:
+        attribute = static_cast<Qt::WidgetAttribute>(128);
+        break;
+    case ScreenOrientationLockLandscape:
+        attribute = static_cast<Qt::WidgetAttribute>(129);
+        break;
+    default:
+    case ScreenOrientationAuto:
+        attribute = static_cast<Qt::WidgetAttribute>(130);
+        break;
+#else // QT_VERSION < 0x040702
+    case ScreenOrientationLockPortrait:
+        attribute = Qt::WA_LockPortraitOrientation;
+        break;
+    case ScreenOrientationLockLandscape:
+        attribute = Qt::WA_LockLandscapeOrientation;
+        break;
+    default:
+    case ScreenOrientationAuto:
+        attribute = Qt::WA_AutoOrientation;
+        break;
+#endif // QT_VERSION < 0x040702
+    };
+    setAttribute(attribute, true);
+}
+
+void QmlApplicationViewer::showExpanded()
+{
+#if defined(Q_OS_SYMBIAN) || defined(MEEGO_EDITION_HARMATTAN) || defined(Q_WS_SIMULATOR)
+    showFullScreen();
+#elif defined(Q_WS_MAEMO_5)
+    showMaximized();
+#else
+    show();
+#endif
+}
+
+QApplication *createApplication(int &argc, char **argv)
+{
+#ifdef HARMATTAN_BOOSTER
+    return MDeclarativeCache::qApplication(argc, argv);
+#else
+    return new QApplication(argc, argv);
+#endif
+}
diff --git a/qmlapplicationviewer/qmlapplicationviewer.h b/qmlapplicationviewer/qmlapplicationviewer.h
new file mode 100644 (file)
index 0000000..b01cc88
--- /dev/null
@@ -0,0 +1,46 @@
+// checksum 0x898f version 0x70013
+/*
+  This file was generated by the Qt Quick Application wizard of Qt Creator.
+  QmlApplicationViewer is a convenience class containing mobile device specific
+  code such as screen orientation handling. Also QML paths and debugging are
+  handled here.
+  It is recommended not to modify this file, since newer versions of Qt Creator
+  may offer an updated version of it.
+*/
+
+#ifndef QMLAPPLICATIONVIEWER_H
+#define QMLAPPLICATIONVIEWER_H
+
+#include <QtDeclarative/QDeclarativeView>
+
+class QmlApplicationViewer : public QDeclarativeView
+{
+    Q_OBJECT
+
+public:
+    enum ScreenOrientation {
+        ScreenOrientationLockPortrait,
+        ScreenOrientationLockLandscape,
+        ScreenOrientationAuto
+    };
+
+    explicit QmlApplicationViewer(QWidget *parent = 0);
+    virtual ~QmlApplicationViewer();
+
+    static QmlApplicationViewer *create();
+
+    void setMainQmlFile(const QString &file);
+    void addImportPath(const QString &path);
+
+    // Note that this will only have an effect on Symbian and Fremantle.
+    void setOrientation(ScreenOrientation orientation);
+
+    void showExpanded();
+
+private:
+    class QmlApplicationViewerPrivate *d;
+};
+
+QApplication *createApplication(int &argc, char **argv);
+
+#endif // QMLAPPLICATIONVIEWER_H
diff --git a/qmlapplicationviewer/qmlapplicationviewer.pri b/qmlapplicationviewer/qmlapplicationviewer.pri
new file mode 100644 (file)
index 0000000..b6931d0
--- /dev/null
@@ -0,0 +1,148 @@
+# checksum 0x5b42 version 0x70013
+# This file was generated by the Qt Quick Application wizard of Qt Creator.
+# The code below adds the QmlApplicationViewer to the project and handles the
+# activation of QML debugging.
+# It is recommended not to modify this file, since newer versions of Qt Creator
+# may offer an updated version of it.
+
+QT += declarative
+
+SOURCES += $$PWD/qmlapplicationviewer.cpp
+HEADERS += $$PWD/qmlapplicationviewer.h
+INCLUDEPATH += $$PWD
+
+# Include JS debugger library if QMLJSDEBUGGER_PATH is set
+!isEmpty(QMLJSDEBUGGER_PATH) {
+    include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri)
+} else {
+    DEFINES -= QMLJSDEBUGGER
+}
+
+contains(CONFIG,qdeclarative-boostable):contains(MEEGO_EDITION,harmattan) {
+    DEFINES += HARMATTAN_BOOSTER
+}
+# This file was generated by an application wizard of Qt Creator.
+# The code below handles deployment to Symbian and Maemo, aswell as copying
+# of the application data to shadow build directories on desktop.
+# It is recommended not to modify this file, since newer versions of Qt Creator
+# may offer an updated version of it.
+
+defineTest(qtcAddDeployment) {
+for(deploymentfolder, DEPLOYMENTFOLDERS) {
+    item = item$${deploymentfolder}
+    itemsources = $${item}.sources
+    $$itemsources = $$eval($${deploymentfolder}.source)
+    itempath = $${item}.path
+    $$itempath= $$eval($${deploymentfolder}.target)
+    export($$itemsources)
+    export($$itempath)
+    DEPLOYMENT += $$item
+}
+
+MAINPROFILEPWD = $$PWD
+
+symbian {
+    isEmpty(ICON):exists($${TARGET}.svg):ICON = $${TARGET}.svg
+    isEmpty(TARGET.EPOCHEAPSIZE):TARGET.EPOCHEAPSIZE = 0x20000 0x2000000
+} else:win32 {
+    copyCommand =
+    for(deploymentfolder, DEPLOYMENTFOLDERS) {
+        source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
+        source = $$replace(source, /, \\)
+        sourcePathSegments = $$split(source, \\)
+        target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
+        target = $$replace(target, /, \\)
+        target ~= s,\\\\\\.?\\\\,\\,
+        !isEqual(source,$$target) {
+            !isEmpty(copyCommand):copyCommand += &&
+            isEqual(QMAKE_DIR_SEP, \\) {
+                copyCommand += $(COPY_DIR) \"$$source\" \"$$target\"
+            } else {
+                source = $$replace(source, \\\\, /)
+                target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
+                target = $$replace(target, \\\\, /)
+                copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\"
+            }
+        }
+    }
+    !isEmpty(copyCommand) {
+        copyCommand = @echo Copying application data... && $$copyCommand
+        copydeploymentfolders.commands = $$copyCommand
+        first.depends = $(first) copydeploymentfolders
+        export(first.depends)
+        export(copydeploymentfolders.commands)
+        QMAKE_EXTRA_TARGETS += first copydeploymentfolders
+    }
+} else:unix {
+    maemo5 {
+        desktopfile.files = $${TARGET}.desktop
+        desktopfile.path = /usr/share/applications/hildon
+        icon.files = $${TARGET}64.png
+        icon.path = /usr/share/icons/hicolor/64x64/apps
+    } else:!isEmpty(MEEGO_VERSION_MAJOR) {
+        desktopfile.files = $${TARGET}_harmattan.desktop
+        desktopfile.path = /usr/share/applications
+        icon.files = $${TARGET}80.png
+        icon.path = /usr/share/icons/hicolor/80x80/apps
+    } else { # Assumed to be a Desktop Unix
+        copyCommand =
+        for(deploymentfolder, DEPLOYMENTFOLDERS) {
+            source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
+            source = $$replace(source, \\\\, /)
+            macx {
+                target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
+            } else {
+                target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
+            }
+            target = $$replace(target, \\\\, /)
+            sourcePathSegments = $$split(source, /)
+            targetFullPath = $$target/$$last(sourcePathSegments)
+            targetFullPath ~= s,/\\.?/,/,
+            !isEqual(source,$$targetFullPath) {
+                !isEmpty(copyCommand):copyCommand += &&
+                copyCommand += $(MKDIR) \"$$target\"
+                copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\"
+            }
+        }
+        !isEmpty(copyCommand) {
+            copyCommand = @echo Copying application data... && $$copyCommand
+            copydeploymentfolders.commands = $$copyCommand
+            first.depends = $(first) copydeploymentfolders
+            export(first.depends)
+            export(copydeploymentfolders.commands)
+            QMAKE_EXTRA_TARGETS += first copydeploymentfolders
+        }
+    }
+    installPrefix = /opt/$${TARGET}
+    for(deploymentfolder, DEPLOYMENTFOLDERS) {
+        item = item$${deploymentfolder}
+        itemfiles = $${item}.files
+        $$itemfiles = $$eval($${deploymentfolder}.source)
+        itempath = $${item}.path
+        $$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
+        export($$itemfiles)
+        export($$itempath)
+        INSTALLS += $$item
+    }
+
+    !isEmpty(desktopfile.path) {
+        export(icon.files)
+        export(icon.path)
+        export(desktopfile.files)
+        export(desktopfile.path)
+        INSTALLS += icon desktopfile
+    }
+
+    target.path = $${installPrefix}/bin
+    export(target.path)
+    INSTALLS += target
+}
+
+export (ICON)
+export (INSTALLS)
+export (DEPLOYMENT)
+export (TARGET.EPOCHEAPSIZE)
+export (TARGET.CAPABILITY)
+export (LIBS)
+export (QMAKE_EXTRA_TARGETS)
+}
diff --git a/qtc_packaging/debian_fremantle/README b/qtc_packaging/debian_fremantle/README
new file mode 100644 (file)
index 0000000..a7cf30c
--- /dev/null
@@ -0,0 +1,6 @@
+The Debian Package quicknewsreader
+----------------------------
+
+Comments regarding the Package
+
+ -- Christophe CHAPUIS <chris@unknown>  Sat, 18 Feb 2012 22:01:32 +0100
diff --git a/qtc_packaging/debian_fremantle/changelog b/qtc_packaging/debian_fremantle/changelog
new file mode 100644 (file)
index 0000000..e64bd84
--- /dev/null
@@ -0,0 +1,5 @@
+quicknewsreader (0.3-0) unstable; urgency=low
+
+  * Initial Release.
+
+ -- Christophe CHAPUIS <chris@unknown>  Sat, 18 Feb 2012 22:01:32 +0100
diff --git a/qtc_packaging/debian_fremantle/compat b/qtc_packaging/debian_fremantle/compat
new file mode 100644 (file)
index 0000000..7f8f011
--- /dev/null
@@ -0,0 +1 @@
+7
diff --git a/qtc_packaging/debian_fremantle/control b/qtc_packaging/debian_fremantle/control
new file mode 100644 (file)
index 0000000..7d98fd8
--- /dev/null
@@ -0,0 +1,17 @@
+Source: quicknewsreader
+Section: web
+Version: 0.2-0
+Priority: optional
+Maintainer: Christophe CHAPUIS <chris@unknown>
+Build-Depends: debhelper (>= 5), libqt4-dev
+Standards-Version: 3.7.3
+Homepage: <insert the upstream URL, if relevant>
+
+Package: quicknewsreader
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: News Reader written in QtQuick.
+ This is a simple news reader written in QML/QtQuick. It currently only supports
+ news from www.lemonde.fr and news.yahoo.com.
+XB-Maemo-Display-Name: QuickNewsReader
+XB-Maemo-Icon-26: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAA3XQAAN10BGYBGXQAACP5JREFUaIHtWE9vFMsR/1V1z+7ay67t530xBkGILQRc0JOsHHJJLpFQrhw4oYgLX4BLOCAufIP3FXLgygFFelKIcsglJLn4wCOxY4jNswkGvGt77d2dma4c+s/07Cw8kIieolDSanpnqqurfvWnqxv4TJ/pM/1PE/nByspKcvv27V8S0fQPqdAH0PHdu3d//+TJkxEAaP/21q1bv7hy5crvlFI/nGofQMYYGGN+de3atW8ASDDg6OhoKssypGn6X1l4f38fIhL+t1ot7O7uYmFh4aPkEBGOjo6m/P9gQK/XoyRJYIzB8+fPwYqhmKMgAyBw/wlsBYGZ0TxxArUkASsFAiHLMtRqCbROoJQCM0Nrjbm5Ody7dw+3b9/GYDBAkiRI0xSj0QivX7/G3Nwcut0ulpeX8eLFCwwGA5w/fx4bGxtoNBo4efIkmBndbpe9SmEwGAyImcHMEDikCBAR5HkOkxsYEYgRwCEpEIzSFESE1HnPmByNRgPMDCKClzk7OwtmxrNnz6C1hjEGd+7cwcOHD3H//n0YY/DmzRs8ePAAW1tbaDQaePz4MR49eoROp4O1tbUAxmAwCLAGD6RpSkopEBG8/uIUFgGM5FDMEKKgvHcLk0VYKYUkSaAUI8tyu4C2SyiloJRCs9mEUgqdTgdnzpzB8vIyZmZmcPnyZQDA2toaut0uNjc3cfr0aSwuLuLrr7/GzZs34fUbDofkYqHIgb29PcXMEBFcvHjxo+LyfeTjnojw8uVLLC0tgZlxeHiIxcVF5HmOJEnQ6/UAAEmSIMsyrK6uYmlpCQsLC7hx4wbW19dx6tQpKKWwv79f9cBwOCQRgYhgb28Pg8HgkxnhiYhw/fp1bG9vg4hw9erV8O3w8BAAsLKyAgA4e/YsACDLMjQaDVy4cAFHR0dotVreA1UD/Hh2dvaTK/8paaIBh4eHynvgQ4jIIhqqgKtO5HLEiCDPzafSOZCIoNfrKb/iRA+8by9IksTqS4Sf/ubP0JoxPz+Fre8OcLTfRe8ff8DBd0+B47fob/0pzNvd3X2nZ73M71sbsMVgNBpNrELsPWDMu5ELHhJgodNAXRNqdYWvLs3j6Toj+fElKMlw+O/1kjdrtRqyLJso01cqAOj3+yCynhSR4FHA7sL1et0bUPbAwcGBcts0+v3+Ow0Iiwnws0uzIDF41Usx3axj7sRJ/FUTvpht4ulfhiUgjDHvLAy1Wq0CkN9DYiOUUl6/0O+EEM6yjGMhk3KBmUv/5xrAmfkamnWGVoylczMYZYI33SHqzWZlvkfWj71SMXkQ0zRFmqbIsgyj0Sjs2JGuZQ8wcwih2IWxUcaY8E4ANGoaDc1gJiSasfrtKyx0muCjJnqbo9L8SeFDREjTFNPTRQOc53kAyhhTCiW/PjNXc8AYo72Sw+GwEn/eiFarFQz4ZvUAJxqEpK6x8/wtXu8N8OLvq+j9628Ybn9bAcABVZLpwyQ2NPZSHFJ5nvvoqFYhIuJYkO9hxsnzGAF+e/Mnvnp6KSD6CsCvIQLkUQ7EHgil1iHabrfDN58340YEz1tgqyFERDwueByFkiEIPV3ondzbCq9feJKcd1W8OGzGaaIBAHSapsjzHAcHB6XYi/PCxygzY3NzE61WKygXGw4A8/PzYewTMFKiNM+/8/JjANvtNpRSOD4+Rmq732oIiUhI4jzPJxrgK0Se204zyzJ0u11orcHMod31oaeUKrl+3AMxwnHOMTOmp6fDnFevXmE4HAKAB6zqAfcyCPBPEQlt7Pjio9Go9PTklWq326UzgT8jjG9USZKEsdYaWZZhZ2cHWusgt16vx2BUqxARaW+xc1NQaLyaxO4dL7lKqXBg8YYYY7C/v49x8nNmZmaCAbu7u2FvSNO0FE7R2rriAYo0Lrs7nCMhUk4o394SAR6UeC+JVIWICUnPTK7GcyVJtVYQgTuGhlAvkdsHJoWQrSIUlUWvlEVFIa409XqC0WgIEe8Njyq5PJFIDgW5zMrlB5yShUyb7IRyxJIDQBwYk0NI2RYZyPMsKA74HiR3fAhP+47hvWRMXHrzMd4sAOH5/BoxH0HCWZyJYaSoUOR5bBktG4DIV+wt8UaIPQNXqwi7SQW/T9a4wwSARqOBD6HcmKKV8CHr1rfhJiVd4xAiH1hplrkdlgCxx/dQNSJr/e7qQ8fWcfvV5HmFd9Kl2bhMpTU0MwQWSBnjhZTzdWwntsowEWwuEMjli4jEQFu+CIu40wQIrLnEm6UjZCmF/8XeUg6hdDhARuyaNgKRvZsi+MTH5GaOmV2QAXmId3cHRIAxEozwcGUmLzxVxbbMm9ucECMl/nGZrFTYAF0ABGJFoa64XykHxIeQci509QwEgJVrb4u1nHHlVXyoTeI1UoztFKmEUJ5lkLHSGox0D5cjZQOUUuJL1WA4AIGKSZFS8R7hW99iVy3K6HhfFEpgVJqtI6Qi0+7YCEZaYBi5se201jpkcxxCYTOalGwMDvng8dJag5Wv48XDh1zMq5QCMUGM66+CYabM56qX9TqVQk65MqOUCsjEBggrggijVqs7q+MF7TUjMQWv1Ot1RCXZ2SDFPPZFlsCsbDI6bMjZJ0IlmbWkBmIKINoQc50rAGKC1rqaA8PhcKS4BqgczWYrKEQRsCIGiovGqzHVLG30Hllb7gSKiyuYVnsmlORYrjg+L7PZPAHiYnP08gU2BxUn6Pf7IwCmZMDx8XEGYoCMuyWwS4w3U4jKZb1WC+4lUHTh65CLTnS+syzywsqvyHQ32z5viYvwEjEgezsd+pT4XijXSgEiaDSmwhLjvZTiIj+mpuxhvFjkfbxOJhXoTuKr1WrBAEAiH9jbPs1qsgFbW1v/3N7Z6Z87d645P3YujWkqukH4wp244u7TP0UE09HVSmeiiVWZX375o+hLbKj13PbLl/2NjY11uBCKNVxst9s/73Q6F9zhht0pTQNgYwyLSBJ90wCYiNgYo/w51RgT98CxfJ94QkQeQUNEmXsaABkRGWYuvY/H3W73ydu3b/8IYHd8AYLtlyct7sc8YUwoLsjKdbZM8QHjY36T5udj3z7TZ/q/pf8AsVZ3R8yWCFsAAAAASUVORK5CYII=
diff --git a/qtc_packaging/debian_fremantle/copyright b/qtc_packaging/debian_fremantle/copyright
new file mode 100644 (file)
index 0000000..52e5e32
--- /dev/null
@@ -0,0 +1,40 @@
+This package was debianized by Christophe CHAPUIS <chris@unknown> on
+Sat, 18 Feb 2012 22:01:32 +0100.
+
+It was downloaded from <url://example.com>
+
+Upstream Author(s):
+
+    <put author's name and email here>
+    <likewise for another author>
+
+Copyright:
+
+    <Copyright (C) YYYY Name OfAuthor>
+    <likewise for another author>
+
+License:
+
+    This package is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This package is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this package; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+
+On Debian systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL'.
+
+The Debian packaging is (C) 2012, Christophe CHAPUIS <chris@unknown> and
+is licensed under the GPL, see above.
+
+
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
diff --git a/qtc_packaging/debian_fremantle/rules b/qtc_packaging/debian_fremantle/rules
new file mode 100755 (executable)
index 0000000..988642d
--- /dev/null
@@ -0,0 +1,91 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+
+
+
+
+configure: configure-stamp
+configure-stamp:
+       dh_testdir
+       # qmake PREFIX=/usr# Uncomment this line for use without Qt Creator
+
+       touch configure-stamp
+
+
+build: build-stamp
+
+build-stamp: configure-stamp  
+       dh_testdir
+
+       # Add here commands to compile the package.
+       # $(MAKE) # Uncomment this line for use without Qt Creator
+       #docbook-to-man debian/quicknewsreader.sgml > quicknewsreader.1
+
+       touch $@
+
+clean: 
+       dh_testdir
+       dh_testroot
+       rm -f build-stamp configure-stamp
+
+       # Add here commands to clean up after the build process.
+       $(MAKE) clean
+
+       dh_clean 
+
+install: build
+       dh_testdir
+       dh_testroot
+       dh_clean -k 
+       dh_installdirs
+
+       # Add here commands to install the package into debian/quicknewsreader.
+       $(MAKE) INSTALL_ROOT="$(CURDIR)"/debian/quicknewsreader install
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+       dh_testdir
+       dh_testroot
+       dh_installchangelogs 
+       dh_installdocs
+       dh_installexamples
+#      dh_install
+#      dh_installmenu
+#      dh_installdebconf       
+#      dh_installlogrotate
+#      dh_installemacsen
+#      dh_installpam
+#      dh_installmime
+#      dh_python
+#      dh_installinit
+#      dh_installcron
+#      dh_installinfo
+       dh_installman
+       dh_link
+       dh_strip
+       dh_compress
+       dh_fixperms
+#      dh_perl
+#      dh_makeshlibs
+       dh_installdeb
+       # dh_shlibdeps # Uncomment this line for use without Qt Creator
+       dh_gencontrol
+       dh_md5sums
+       dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure