From: Tofe Date: Wed, 22 Feb 2012 18:09:22 +0000 (+0100) Subject: Merge branch 'master' of ssh://drop.maemo.org/git/quicknewsreader X-Git-Url: http://vcs.maemo.org/git/?p=quicknewsreader;a=commitdiff_plain;h=f32bf9723848f690d1fcba5945a072ef2d8414a6;hp=abad6efe52501a07699ac718c955cd92e25031fd Merge branch 'master' of ssh://drop.maemo.org/git/quicknewsreader --- diff --git a/QuickNewsReader.desktop b/QuickNewsReader.desktop new file mode 100644 index 0000000..ff4ff37 --- /dev/null +++ b/QuickNewsReader.desktop @@ -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 index 0000000..f72ca64 --- /dev/null +++ b/QuickNewsReader.pro @@ -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 index 0000000..566acfa --- /dev/null +++ b/QuickNewsReader.svg @@ -0,0 +1,93 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/QuickNewsReader64.png b/QuickNewsReader64.png new file mode 100644 index 0000000..efc2e53 Binary files /dev/null and b/QuickNewsReader64.png differ diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..bc27b34 --- /dev/null +++ b/main.cpp @@ -0,0 +1,14 @@ +#include +#include "qmlapplicationviewer.h" + +Q_DECL_EXPORT int main(int argc, char *argv[]) +{ + QScopedPointer 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 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 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 index 0000000..db533d4 --- /dev/null +++ b/qml/QuickNewsReader/content/modelimpl/FavoriteFeedsJournalModel.qml @@ -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 index 0000000..6d1143e --- /dev/null +++ b/qml/QuickNewsReader/content/modelimpl/FavoriteRssFeeds.qml @@ -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 index 0000000..5cc1670 --- /dev/null +++ b/qml/QuickNewsReader/content/modelimpl/LeMondeJournalModel.qml @@ -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 index 0000000..c8be7fd --- /dev/null +++ b/qml/QuickNewsReader/content/modelimpl/LeMondeSequenceNews.qml @@ -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 index 0000000..8d4debb --- /dev/null +++ b/qml/QuickNewsReader/content/modelimpl/LeMondeSequencesList.qml @@ -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 index 0000000..34bb48b --- /dev/null +++ b/qml/QuickNewsReader/content/modelimpl/RssFeedModel.qml @@ -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 index 0000000..982731c --- /dev/null +++ b/qml/QuickNewsReader/content/modelimpl/YahooJournalModel.qml @@ -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 index 0000000..654a0e8 --- /dev/null +++ b/qml/QuickNewsReader/content/modelimpl/YahooRssFeeds.qml @@ -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 index 0000000..9f93d81 --- /dev/null +++ b/qml/QuickNewsReader/content/modelitf/JournalModel.qml @@ -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 index 0000000..933d5a2 --- /dev/null +++ b/qml/QuickNewsReader/content/view/BusyIndicator.qml @@ -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 index 0000000..04288ce --- /dev/null +++ b/qml/QuickNewsReader/content/view/Categories.qml @@ -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 index 0000000..71422dc --- /dev/null +++ b/qml/QuickNewsReader/content/view/CategoryDelegate.qml @@ -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 index 0000000..9e4f45e --- /dev/null +++ b/qml/QuickNewsReader/content/view/JournalDelegate.qml @@ -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 index 0000000..be35893 --- /dev/null +++ b/qml/QuickNewsReader/content/view/Journals.qml @@ -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 index 0000000..b6a7c1b --- /dev/null +++ b/qml/QuickNewsReader/content/view/News.qml @@ -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 index 0000000..517e86f --- /dev/null +++ b/qml/QuickNewsReader/content/view/NewsDelegate.qml @@ -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 index 0000000..211b395 --- /dev/null +++ b/qml/QuickNewsReader/content/view/NewsDetail.qml @@ -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 index 0000000..f32695b --- /dev/null +++ b/qml/QuickNewsReader/content/view/ScrollBar.qml @@ -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 index 0000000..0c5cf69 --- /dev/null +++ b/qml/QuickNewsReader/main.qml @@ -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 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 index 0000000..997bbfc --- /dev/null +++ b/qmlapplicationviewer/qmlapplicationviewer.cpp @@ -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 +#include +#include +#include +#include +#include + +#include // MEEGO_EDITION_HARMATTAN + +#ifdef HARMATTAN_BOOSTER +#include +#endif + +#if defined(QMLJSDEBUGGER) && QT_VERSION < 0x040800 + +#include + +#if !defined(NO_JSDEBUGGER) +#include +#endif +#if !defined(NO_QMLOBSERVER) +#include +#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(128); + break; + case ScreenOrientationLockLandscape: + attribute = static_cast(129); + break; + default: + case ScreenOrientationAuto: + attribute = static_cast(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 index 0000000..b01cc88 --- /dev/null +++ b/qmlapplicationviewer/qmlapplicationviewer.h @@ -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 + +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 index 0000000..b6931d0 --- /dev/null +++ b/qmlapplicationviewer/qmlapplicationviewer.pri @@ -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 index 0000000..a7cf30c --- /dev/null +++ b/qtc_packaging/debian_fremantle/README @@ -0,0 +1,6 @@ +The Debian Package quicknewsreader +---------------------------- + +Comments regarding the Package + + -- Christophe CHAPUIS 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 index 0000000..e64bd84 --- /dev/null +++ b/qtc_packaging/debian_fremantle/changelog @@ -0,0 +1,5 @@ +quicknewsreader (0.3-0) unstable; urgency=low + + * Initial Release. + + -- Christophe CHAPUIS 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 index 0000000..7f8f011 --- /dev/null +++ b/qtc_packaging/debian_fremantle/compat @@ -0,0 +1 @@ +7 diff --git a/qtc_packaging/debian_fremantle/control b/qtc_packaging/debian_fremantle/control new file mode 100644 index 0000000..7d98fd8 --- /dev/null +++ b/qtc_packaging/debian_fremantle/control @@ -0,0 +1,17 @@ +Source: quicknewsreader +Section: web +Version: 0.2-0 +Priority: optional +Maintainer: Christophe CHAPUIS +Build-Depends: debhelper (>= 5), libqt4-dev +Standards-Version: 3.7.3 +Homepage: + +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: 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 diff --git a/qtc_packaging/debian_fremantle/copyright b/qtc_packaging/debian_fremantle/copyright new file mode 100644 index 0000000..52e5e32 --- /dev/null +++ b/qtc_packaging/debian_fremantle/copyright @@ -0,0 +1,40 @@ +This package was debianized by Christophe CHAPUIS on +Sat, 18 Feb 2012 22:01:32 +0100. + +It was downloaded from + +Upstream Author(s): + + + + +Copyright: + + + + +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 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 index 0000000..988642d --- /dev/null +++ b/qtc_packaging/debian_fremantle/rules @@ -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