From 2b13ee54b100838b12d7cadea2aaf6608b0c1a04 Mon Sep 17 00:00:00 2001 From: Sudheer K Date: Mon, 16 May 2011 19:26:16 -0700 Subject: [PATCH] Initial Release --- Makefile | 120 +++++++ debian/README | 8 + debian/changelog | 5 + debian/compat | 1 + debian/control | 122 +++++++ debian/copyright | 35 ++ debian/files | 1 + debian/marketstoday.substvars | 1 + debian/marketstoday/DEBIAN/control | 119 +++++++ debian/marketstoday/DEBIAN/md5sums | 5 + debian/marketstoday/DEBIAN/postrm | 48 +++ debian/marketstoday/opt/marketstoday/marketstoday | Bin 0 -> 127104 bytes .../applications/hildon-home/marketstoday.desktop | 9 + .../usr/share/doc/marketstoday/changelog.Debian.gz | Bin 0 -> 160 bytes .../usr/share/doc/marketstoday/copyright | 35 ++ .../icons/hicolor/48x48/apps/marketstoday.png | Bin 0 -> 4779 bytes debian/postrm | 48 +++ debian/rules | 73 +++++ marketstoday.pro | 8 + qtc_packaging/debian_fremantle/README | 8 + qtc_packaging/debian_fremantle/changelog | 5 + qtc_packaging/debian_fremantle/compat | 1 + qtc_packaging/debian_fremantle/control | 122 +++++++ qtc_packaging/debian_fremantle/copyright | 35 ++ .../debian_fremantle/marketstoday.substvars | 1 + qtc_packaging/debian_fremantle/postrm | 48 +++ qtc_packaging/debian_fremantle/rules | 73 +++++ src/cpp/configqmlview.cpp | 34 ++ src/cpp/configqmlview.h | 30 ++ src/cpp/logutility.h | 48 +++ src/cpp/main.cpp | 45 +++ src/cpp/marketstodayqmlview.cpp | 52 +++ src/cpp/marketstodayqmlview.h | 34 ++ src/data/icons/marketstoday.png | Bin 0 -> 4779 bytes src/data/icons/marketstoday.png.base64 | 109 +++++++ src/data/marketstoday.desktop | 9 + .../qmaemo5homescreenadaptor.cpp | 336 ++++++++++++++++++++ .../qmaemo5homescreenadaptor.h | 91 ++++++ .../qmaemo5homescreenadaptor.pri | 4 + src/qml/Config.qml | 79 +++++ src/qml/ConfigOptionsComponent.qml | 77 +++++ src/qml/ConfigParametersComponent.qml | 171 ++++++++++ src/qml/ConfigTickersComponent.qml | 208 ++++++++++++ src/qml/Library/TitleBar.qml | 170 ++++++++++ src/qml/Library/ToolBar.qml | 135 ++++++++ src/qml/Library/images/add.png | Bin 0 -> 960 bytes src/qml/Library/images/back.png | Bin 0 -> 1500 bytes src/qml/Library/images/checkbox_checked.png | Bin 0 -> 3524 bytes src/qml/Library/images/checkbox_unchecked.png | Bin 0 -> 3173 bytes src/qml/Library/images/close.png | Bin 0 -> 4262 bytes src/qml/Library/images/config.png | Bin 0 -> 2192 bytes src/qml/Library/images/down.png | Bin 0 -> 3876 bytes src/qml/Library/images/gloss.png | Bin 0 -> 1236 bytes src/qml/Library/images/icon_settings.png | Bin 0 -> 16904 bytes src/qml/Library/images/icon_stocks.png | Bin 0 -> 9284 bytes src/qml/Library/images/lineedit.png | Bin 0 -> 1415 bytes src/qml/Library/images/lineedit.sci | 5 + src/qml/Library/images/loading.png | Bin 0 -> 813 bytes src/qml/Library/images/news.png | Bin 0 -> 1600 bytes src/qml/Library/images/reload.png | Bin 0 -> 4416 bytes src/qml/Library/images/remove.png | Bin 0 -> 770 bytes src/qml/Library/images/stripes.png | Bin 0 -> 257 bytes src/qml/Library/images/tab_schedule.png | Bin 0 -> 4783 bytes src/qml/Library/images/tab_settings.png | Bin 0 -> 5164 bytes src/qml/Library/images/tab_stocks.png | Bin 0 -> 3960 bytes src/qml/Library/images/titlebar.png | Bin 0 -> 1436 bytes src/qml/Library/images/titlebar.sci | 5 + src/qml/Library/images/toolbar.png | Bin 0 -> 1422 bytes src/qml/Library/images/toolbar.sci | 5 + src/qml/Library/images/toolbutton.png | Bin 0 -> 2550 bytes src/qml/Library/images/toolbutton.sci | 5 + src/qml/Library/images/up.png | Bin 0 -> 3921 bytes src/qml/Library/js/Common.js | 11 + src/qml/Library/js/DBUtility.js | 135 ++++++++ src/qml/Library/js/ISODate.js | 35 ++ src/qml/MarketsToday.qml | 212 ++++++++++++ src/qml/StockQuoteDelegate.qml | 29 ++ src/qml/StockQuotesComponent.qml | 122 +++++++ src/resources.qrc | 37 +++ src/src.pro | 55 ++++ 80 files changed, 3219 insertions(+) create mode 100644 Makefile create mode 100644 debian/README create mode 100644 debian/changelog create mode 100644 debian/compat create mode 100644 debian/control create mode 100644 debian/copyright create mode 100644 debian/files create mode 100644 debian/marketstoday.substvars create mode 100644 debian/marketstoday/DEBIAN/control create mode 100644 debian/marketstoday/DEBIAN/md5sums create mode 100755 debian/marketstoday/DEBIAN/postrm create mode 100755 debian/marketstoday/opt/marketstoday/marketstoday create mode 100644 debian/marketstoday/usr/share/applications/hildon-home/marketstoday.desktop create mode 100644 debian/marketstoday/usr/share/doc/marketstoday/changelog.Debian.gz create mode 100644 debian/marketstoday/usr/share/doc/marketstoday/copyright create mode 100755 debian/marketstoday/usr/share/icons/hicolor/48x48/apps/marketstoday.png create mode 100755 debian/postrm create mode 100755 debian/rules create mode 100644 marketstoday.pro create mode 100644 qtc_packaging/debian_fremantle/README create mode 100644 qtc_packaging/debian_fremantle/changelog create mode 100644 qtc_packaging/debian_fremantle/compat create mode 100644 qtc_packaging/debian_fremantle/control create mode 100644 qtc_packaging/debian_fremantle/copyright create mode 100644 qtc_packaging/debian_fremantle/marketstoday.substvars create mode 100755 qtc_packaging/debian_fremantle/postrm create mode 100755 qtc_packaging/debian_fremantle/rules create mode 100644 src/cpp/configqmlview.cpp create mode 100644 src/cpp/configqmlview.h create mode 100644 src/cpp/logutility.h create mode 100644 src/cpp/main.cpp create mode 100644 src/cpp/marketstodayqmlview.cpp create mode 100644 src/cpp/marketstodayqmlview.h create mode 100755 src/data/icons/marketstoday.png create mode 100644 src/data/icons/marketstoday.png.base64 create mode 100644 src/data/marketstoday.desktop create mode 100644 src/qmaemo5homescreenadaptor/qmaemo5homescreenadaptor.cpp create mode 100644 src/qmaemo5homescreenadaptor/qmaemo5homescreenadaptor.h create mode 100644 src/qmaemo5homescreenadaptor/qmaemo5homescreenadaptor.pri create mode 100644 src/qml/Config.qml create mode 100644 src/qml/ConfigOptionsComponent.qml create mode 100644 src/qml/ConfigParametersComponent.qml create mode 100644 src/qml/ConfigTickersComponent.qml create mode 100644 src/qml/Library/TitleBar.qml create mode 100644 src/qml/Library/ToolBar.qml create mode 100644 src/qml/Library/images/add.png create mode 100644 src/qml/Library/images/back.png create mode 100755 src/qml/Library/images/checkbox_checked.png create mode 100755 src/qml/Library/images/checkbox_unchecked.png create mode 100755 src/qml/Library/images/close.png create mode 100755 src/qml/Library/images/config.png create mode 100755 src/qml/Library/images/down.png create mode 100644 src/qml/Library/images/gloss.png create mode 100755 src/qml/Library/images/icon_settings.png create mode 100755 src/qml/Library/images/icon_stocks.png create mode 100644 src/qml/Library/images/lineedit.png create mode 100644 src/qml/Library/images/lineedit.sci create mode 100644 src/qml/Library/images/loading.png create mode 100644 src/qml/Library/images/news.png create mode 100755 src/qml/Library/images/reload.png create mode 100644 src/qml/Library/images/remove.png create mode 100644 src/qml/Library/images/stripes.png create mode 100755 src/qml/Library/images/tab_schedule.png create mode 100755 src/qml/Library/images/tab_settings.png create mode 100755 src/qml/Library/images/tab_stocks.png create mode 100644 src/qml/Library/images/titlebar.png create mode 100644 src/qml/Library/images/titlebar.sci create mode 100755 src/qml/Library/images/toolbar.png create mode 100644 src/qml/Library/images/toolbar.sci create mode 100644 src/qml/Library/images/toolbutton.png create mode 100644 src/qml/Library/images/toolbutton.sci create mode 100755 src/qml/Library/images/up.png create mode 100644 src/qml/Library/js/Common.js create mode 100644 src/qml/Library/js/DBUtility.js create mode 100644 src/qml/Library/js/ISODate.js create mode 100644 src/qml/MarketsToday.qml create mode 100644 src/qml/StockQuoteDelegate.qml create mode 100644 src/qml/StockQuotesComponent.qml create mode 100644 src/resources.qrc create mode 100644 src/src.pro diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..3520de8 --- /dev/null +++ b/Makefile @@ -0,0 +1,120 @@ +############################################################################# +# Makefile for building: marketstoday +# Generated by qmake (2.01a) (Qt 4.7.0) on: Sat May 14 02:17:10 2011 +# Project: marketstoday.pro +# Template: subdirs +# Command: /usr/bin/qmake -o Makefile marketstoday.pro +############################################################################# + +first: make_default +MAKEFILE = Makefile +QMAKE = /usr/bin/qmake +DEL_FILE = rm -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p +COPY = cp -f +COPY_FILE = $(COPY) +COPY_DIR = $(COPY) -r +INSTALL_FILE = install -m 644 -p +INSTALL_PROGRAM = install -m 755 -p +INSTALL_DIR = $(COPY_DIR) +DEL_FILE = rm -f +SYMLINK = ln -f -s +DEL_DIR = rmdir +MOVE = mv -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p +SUBTARGETS = \ + sub-src + +src/$(MAKEFILE): + @$(CHK_DIR_EXISTS) src/ || $(MKDIR) src/ + cd src/ && $(QMAKE) /home/sudheer/marketstoday/marketstoday-0.1/src/src.pro -o $(MAKEFILE) +sub-src-qmake_all: FORCE + @$(CHK_DIR_EXISTS) src/ || $(MKDIR) src/ + cd src/ && $(QMAKE) /home/sudheer/marketstoday/marketstoday-0.1/src/src.pro -o $(MAKEFILE) +sub-src: src/$(MAKEFILE) FORCE + cd src/ && $(MAKE) -f $(MAKEFILE) +sub-src-make_default: src/$(MAKEFILE) FORCE + cd src/ && $(MAKE) -f $(MAKEFILE) +sub-src-make_first: src/$(MAKEFILE) FORCE + cd src/ && $(MAKE) -f $(MAKEFILE) first +sub-src-all: src/$(MAKEFILE) FORCE + cd src/ && $(MAKE) -f $(MAKEFILE) all +sub-src-clean: src/$(MAKEFILE) FORCE + cd src/ && $(MAKE) -f $(MAKEFILE) clean +sub-src-distclean: src/$(MAKEFILE) FORCE + cd src/ && $(MAKE) -f $(MAKEFILE) distclean +sub-src-install_subtargets: src/$(MAKEFILE) FORCE + cd src/ && $(MAKE) -f $(MAKEFILE) install +sub-src-uninstall_subtargets: src/$(MAKEFILE) FORCE + cd src/ && $(MAKE) -f $(MAKEFILE) uninstall + +Makefile: marketstoday.pro /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/linux-g++/qmake.conf /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/common/g++.conf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/common/unix.conf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/common/linux.conf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/qconfig.pri \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/modules/qt_webkit_version.pri \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/qt_functions.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/qt_config.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/exclusive_builds.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/default_pre.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/release.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/default_post.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/warn_on.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/qt.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/unix/thread.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/moc.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/resources.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/uic.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/yacc.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/lex.prf \ + /targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/include_source_dir.prf + $(QMAKE) -o Makefile marketstoday.pro +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/common/g++.conf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/common/unix.conf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/common/linux.conf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/qconfig.pri: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/modules/qt_webkit_version.pri: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/qt_functions.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/qt_config.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/exclusive_builds.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/default_pre.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/release.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/default_post.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/warn_on.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/qt.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/unix/thread.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/moc.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/resources.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/uic.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/yacc.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/lex.prf: +/targets/FREMANTLE_X86/usr/share/qt4/mkspecs/features/include_source_dir.prf: +qmake: qmake_all FORCE + @$(QMAKE) -o Makefile marketstoday.pro + +qmake_all: sub-src-qmake_all FORCE + +make_default: sub-src-make_default FORCE +make_first: sub-src-make_first FORCE +all: sub-src-all FORCE +clean: sub-src-clean FORCE +distclean: sub-src-distclean FORCE + -$(DEL_FILE) Makefile +install_subtargets: sub-src-install_subtargets FORCE +uninstall_subtargets: sub-src-uninstall_subtargets FORCE + +sub-src-check: src/$(MAKEFILE) + cd src/ && $(MAKE) check +check: sub-src-check + +mocclean: compiler_moc_header_clean compiler_moc_source_clean + +mocables: compiler_moc_header_make_all compiler_moc_source_make_all +install: install_subtargets FORCE + +uninstall: uninstall_subtargets FORCE + +FORCE: + diff --git a/debian/README b/debian/README new file mode 100644 index 0000000..036a37e --- /dev/null +++ b/debian/README @@ -0,0 +1,8 @@ +The Debian Package marketstoday +---------------------------- + +- Package depends on qt4-homescreen-loader to display Qt based widgets on Maemo's hildon desktop. +- Signal/Slots are extensively used to interact between Config and Main windows. As a result, qmlviewer may not be used. +- It is recommended to build/test this application in scratchbox. + + -- Sudheer Sat, 14 May 2011 00:00:00 -0800 diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..1a156e4 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,5 @@ +marketstoday (0.1-0) unstable; urgency=low + + * Initial Release. + + -- Sudheer K. Sat, 14 May 2011 00:00:00 -0800 diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..7ed6ff8 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +5 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..47a763c --- /dev/null +++ b/debian/control @@ -0,0 +1,122 @@ +Source: marketstoday +Section: user/desktop +Priority: optional +Maintainer: Sudheer K. +Build-Depends: debhelper (>= 5), libqt4-dev, libx11-dev +Standards-Version: 3.7.3 +Homepage: https://garage.maemo.org/projects/marketstoday +XSBC-Bugtracker: https://garage.maemo.org/tracker/?group_id=2110 +XB-Maemo-Display-Name: Markets Today - Desktop Stock Quotes Widget + +Package: marketstoday +Architecture: any +Depends: ${shlibs:Depends}, qt4-homescreen-loader +Description: A simple desktop widget for stock quotes with auto-update option. +XB-Maemo-Icon-26: + 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 + kc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE + 3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/8 + 7fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfIT + dyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxM + DUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8e + lQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zv + n//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vt + V5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmK + rhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N + 2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLd + tWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvtt + Xa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG + 4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+ + 0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO + 32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7 + nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+ + cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP + /pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV + 69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98P + T+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAD/AP8A/6C9 + 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 + AElFTkSuQmCC diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..3046325 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,35 @@ +This package was debianized by Sudheer K. on +Sat, 14 May 2011 00:00:00 -0800. + +It was downloaded from + +Upstream Author: Sudheer K. + +Copyright: 2011, Sudheer K. + +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) 2011, Sudheer K. and +is licensed under the GPL, see above. + +Icons used in this package include: +- Devine Icons by iPapun (http://ipapun.deviantart.com/art/Devine-Icons-137555756) +- Human o2 by Oliver Scholtz (and others) (http://schollidesign.deviantart.com/art/Human-O2-Iconset-105344123) +Please check the attached links for license information. diff --git a/debian/files b/debian/files new file mode 100644 index 0000000..87c218d --- /dev/null +++ b/debian/files @@ -0,0 +1 @@ +marketstoday_0.1-0_armel.deb user/desktop optional diff --git a/debian/marketstoday.substvars b/debian/marketstoday.substvars new file mode 100644 index 0000000..a1593b2 --- /dev/null +++ b/debian/marketstoday.substvars @@ -0,0 +1 @@ +shlibs:Depends=libc6 (>= 2.5.0-1), libgcc1 (>= 1:4.2.1), libqt4-core (>= 4.7.0~git20100909), libqt4-dbus (>= 4.7.0~git20100909), libqt4-declarative (>= 4.7.0~git20100909), libqt4-gui (>= 4.7.0~git20100909), libqt4-network (>= 4.7.0~git20100909), libqt4-opengl (>= 4.7.0~git20100909), libqt4-script (>= 4.7.0~git20100909), libqt4-sql (>= 4.7.0~git20100909), libqt4-svg (>= 4.7.0~git20100909), libqt4-xml (>= 4.7.0~git20100909), libqt4-xmlpatterns (>= 4.7.0~git20100909), libstdc++6 (>= 4.2.1), libx11-6 diff --git a/debian/marketstoday/DEBIAN/control b/debian/marketstoday/DEBIAN/control new file mode 100644 index 0000000..5b25842 --- /dev/null +++ b/debian/marketstoday/DEBIAN/control @@ -0,0 +1,119 @@ +Package: marketstoday +Version: 0.1-0 +Section: user/desktop +Priority: optional +Architecture: armel +Depends: libc6 (>= 2.5.0-1), libgcc1 (>= 1:4.2.1), libqt4-core (>= 4.7.0~git20100909), libqt4-dbus (>= 4.7.0~git20100909), libqt4-declarative (>= 4.7.0~git20100909), libqt4-gui (>= 4.7.0~git20100909), libqt4-network (>= 4.7.0~git20100909), libqt4-opengl (>= 4.7.0~git20100909), libqt4-script (>= 4.7.0~git20100909), libqt4-sql (>= 4.7.0~git20100909), libqt4-svg (>= 4.7.0~git20100909), libqt4-xml (>= 4.7.0~git20100909), libqt4-xmlpatterns (>= 4.7.0~git20100909), libstdc++6 (>= 4.2.1), libx11-6, qt4-homescreen-loader +Installed-Size: 208 +Maintainer: Sudheer K. +Description: A simple desktop widget for stock quotes with auto-update option. +Bugtracker: https://garage.maemo.org/tracker/?group_id=2110 +Maemo-Display-Name: Markets Today - Desktop Stock Quotes Widget +Maemo-Icon-26: + iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAKT2lDQ1BQaG90 + b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJC + i4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OI + isr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQu + QIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplc + AYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bT + AICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJ + V2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcq + AAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wA + AKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+z + GoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhK + xEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc + 5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+ + 3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//Ueg + JQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRC + JMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/ph + CJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgx + UopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQ + ZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNj + y7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0 + EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMy + J7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPk + G+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2h + tlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX + 6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgq + tip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtV + qp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gs + IWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0 + TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1F + u1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Y + nr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb + 8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN + 7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJ + suRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2 + qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7Ry + FDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJ + S4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nyme + WTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+ + 9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJ + gUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jO + kc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE + 3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/8 + 7fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfIT + dyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxM + DUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8e + lQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zv + n//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vt + V5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmK + rhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N + 2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLd + tWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvtt + Xa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG + 4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+ + 0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO + 32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7 + nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+ + cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP + /pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV + 69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98P + T+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAD/AP8A/6C9 + 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 + AElFTkSuQmCC diff --git a/debian/marketstoday/DEBIAN/md5sums b/debian/marketstoday/DEBIAN/md5sums new file mode 100644 index 0000000..890f447 --- /dev/null +++ b/debian/marketstoday/DEBIAN/md5sums @@ -0,0 +1,5 @@ +577012ec40cc31d35c931723e65041de opt/marketstoday/marketstoday +e1575c7633d95a9071bf511cdf6c7ba9 usr/share/doc/marketstoday/copyright +69e14451af3766e939881071ad799b70 usr/share/doc/marketstoday/changelog.Debian.gz +4f184c6853965ad3c45fe68506d64dd8 usr/share/icons/hicolor/48x48/apps/marketstoday.png +551bca229853538c376b80e4444c0bf7 usr/share/applications/hildon-home/marketstoday.desktop diff --git a/debian/marketstoday/DEBIAN/postrm b/debian/marketstoday/DEBIAN/postrm new file mode 100755 index 0000000..32f723b --- /dev/null +++ b/debian/marketstoday/DEBIAN/postrm @@ -0,0 +1,48 @@ +#!/bin/sh +# postrm script for vicar +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `purge' +# * `upgrade' +# * `failed-upgrade' +# * `abort-install' +# * `abort-install' +# * `abort-upgrade' +# * `disappear' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + purge) + echo "Deleting configuration database ..." + [[ -d /home/user/.marketstoday/OfflineStorage ]] && rm -rf /home/user/.marketstoday/OfflineStorage + echo "Removing logs ..." + [[ -x /home/user/.marketstoday/marketstoday.log ]] && rm -f /home/user/.marketstoday/marketstoday.log + ;; + + remove|abort-install|upgrade|failed-upgrade|abort-upgrade|disappear) + echo "Clearing logs ..." + [[ -x /home/user/.marketstoday/marketstoday.log ]] && cat /dev/null > /home/user/.marketstoday/marketstoday.log + ;; + + *) + echo "postrm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + + + +exit 0 + + diff --git a/debian/marketstoday/opt/marketstoday/marketstoday b/debian/marketstoday/opt/marketstoday/marketstoday new file mode 100755 index 0000000000000000000000000000000000000000..90bea1c8b92d8fb01faa185edc3129be05d30f30 GIT binary patch literal 127104 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 }-^t$w(lj7y7Q_fS%)6kXd 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

=EyC?O)8 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%0D%tB-y1)f3<$7njXnYOLz+&2XwOG`8<(t?u!$y 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 on +Sat, 14 May 2011 00:00:00 -0800. + +It was downloaded from + +Upstream Author: Sudheer K. + +Copyright: 2011, Sudheer K. + +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) 2011, Sudheer K. and +is licensed under the GPL, see above. + +Icons used in this package include: +- Devine Icons by iPapun (http://ipapun.deviantart.com/art/Devine-Icons-137555756) +- Human o2 by Oliver Scholtz (and others) (http://schollidesign.deviantart.com/art/Human-O2-Iconset-105344123) +Please check the attached links for license information. diff --git a/debian/marketstoday/usr/share/icons/hicolor/48x48/apps/marketstoday.png b/debian/marketstoday/usr/share/icons/hicolor/48x48/apps/marketstoday.png new file mode 100755 index 0000000000000000000000000000000000000000..246f0216e088e5bfa0f5a03e7c6fbee6db36ff0b GIT binary patch literal 4779 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 FV1m=35*7de literal 0 HcmV?d00001 diff --git a/debian/postrm b/debian/postrm new file mode 100755 index 0000000..e69ef12 --- /dev/null +++ b/debian/postrm @@ -0,0 +1,48 @@ +#!/bin/sh +# postrm script for vicar +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `purge' +# * `upgrade' +# * `failed-upgrade' +# * `abort-install' +# * `abort-install' +# * `abort-upgrade' +# * `disappear' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + purge) + echo "Deleting configuration database ..." + [[ -d /home/user/.marketstoday/OfflineStorage ]] && rm -rf /home/user/.marketstoday/OfflineStorage + echo "Removing logs ..." + [[ -x /home/user/.marketstoday/marketstoday.log ]] && rm -f /home/user/.marketstoday/marketstoday.log + ;; + + remove|abort-install|upgrade|failed-upgrade|abort-upgrade|disappear) + echo "Clearing logs ..." + [[ -x /home/user/.marketstoday/marketstoday.log ]] && cat /dev/null > /home/user/.marketstoday/marketstoday.log + ;; + + *) + echo "postrm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 + + diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..0ca482f --- /dev/null +++ b/debian/rules @@ -0,0 +1,73 @@ +#!/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 + +APPNAME := marketstoday +builddir: + mkdir -p builddir + +builddir/Makefile: builddir + cd builddir && qmake ../$(APPNAME).pro + +build: build-stamp + +build-stamp: builddir/Makefile + dh_testdir + + # Add here commands to compile the package. + cd builddir && $(MAKE) + #docbook-to-man debian/$(APPNAME).sgml > $(APPNAME).1 + + touch $@ + +clean: + dh_testdir + dh_testroot + rm -f build-stamp + + # Add here commands to clean up after the build process. + rm -rf builddir + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + # Add here commands to install the package into debian/marketstoday. + cd builddir && $(MAKE) INSTALL_ROOT=$(CURDIR)/debian/$(APPNAME) 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_installman + dh_link + dh_strip + dh_compress + dh_fixperms + dh_installdeb + dh_shlibdeps # Uncomment this line for publishing! + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install configure diff --git a/marketstoday.pro b/marketstoday.pro new file mode 100644 index 0000000..d97061d --- /dev/null +++ b/marketstoday.pro @@ -0,0 +1,8 @@ +QMAKEVERSION = $$[QMAKE_VERSION] +ISQT4 = $$find(QMAKEVERSION, ^[2-9]) +isEmpty( ISQT4 ) { +error("Use the qmake include with Qt4.4 or greater, on Debian that is qmake-qt4"); +} + +TEMPLATE = subdirs +SUBDIRS = src diff --git a/qtc_packaging/debian_fremantle/README b/qtc_packaging/debian_fremantle/README new file mode 100644 index 0000000..036a37e --- /dev/null +++ b/qtc_packaging/debian_fremantle/README @@ -0,0 +1,8 @@ +The Debian Package marketstoday +---------------------------- + +- Package depends on qt4-homescreen-loader to display Qt based widgets on Maemo's hildon desktop. +- Signal/Slots are extensively used to interact between Config and Main windows. As a result, qmlviewer may not be used. +- It is recommended to build/test this application in scratchbox. + + -- Sudheer Sat, 14 May 2011 00:00:00 -0800 diff --git a/qtc_packaging/debian_fremantle/changelog b/qtc_packaging/debian_fremantle/changelog new file mode 100644 index 0000000..1a156e4 --- /dev/null +++ b/qtc_packaging/debian_fremantle/changelog @@ -0,0 +1,5 @@ +marketstoday (0.1-0) unstable; urgency=low + + * Initial Release. + + -- Sudheer K. Sat, 14 May 2011 00:00:00 -0800 diff --git a/qtc_packaging/debian_fremantle/compat b/qtc_packaging/debian_fremantle/compat new file mode 100644 index 0000000..7ed6ff8 --- /dev/null +++ b/qtc_packaging/debian_fremantle/compat @@ -0,0 +1 @@ +5 diff --git a/qtc_packaging/debian_fremantle/control b/qtc_packaging/debian_fremantle/control new file mode 100644 index 0000000..7867f47 --- /dev/null +++ b/qtc_packaging/debian_fremantle/control @@ -0,0 +1,122 @@ +Source: marketstoday +Section: user/desktop +Priority: optional +Maintainer: Sudheer K. +Build-Depends: debhelper (>= 5), libqt4-dev +Standards-Version: 3.7.3 +Homepage: https://garage.maemo.org/projects/marketstoday +XSBC-Bugtracker: https://garage.maemo.org/tracker/?group_id=2110 +XB-Maemo-Display-Name: Markets Today - Desktop Stock Quotes Widget + +Package: marketstoday +Architecture: any +Depends: ${shlibs:Depends} +Description: A simple desktop widget for stock quotes with auto-update option. +XB-Maemo-Icon-26: + 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 + kc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE + 3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/8 + 7fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfIT + dyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxM + DUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8e + lQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zv + n//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vt + V5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmK + rhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N + 2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLd + tWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvtt + Xa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG + 4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+ + 0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO + 32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7 + nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+ + cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP + /pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV + 69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98P + T+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAD/AP8A/6C9 + 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 + AElFTkSuQmCC diff --git a/qtc_packaging/debian_fremantle/copyright b/qtc_packaging/debian_fremantle/copyright new file mode 100644 index 0000000..3046325 --- /dev/null +++ b/qtc_packaging/debian_fremantle/copyright @@ -0,0 +1,35 @@ +This package was debianized by Sudheer K. on +Sat, 14 May 2011 00:00:00 -0800. + +It was downloaded from + +Upstream Author: Sudheer K. + +Copyright: 2011, Sudheer K. + +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) 2011, Sudheer K. and +is licensed under the GPL, see above. + +Icons used in this package include: +- Devine Icons by iPapun (http://ipapun.deviantart.com/art/Devine-Icons-137555756) +- Human o2 by Oliver Scholtz (and others) (http://schollidesign.deviantart.com/art/Human-O2-Iconset-105344123) +Please check the attached links for license information. diff --git a/qtc_packaging/debian_fremantle/marketstoday.substvars b/qtc_packaging/debian_fremantle/marketstoday.substvars new file mode 100644 index 0000000..e7a7177 --- /dev/null +++ b/qtc_packaging/debian_fremantle/marketstoday.substvars @@ -0,0 +1 @@ +shlibs:Depends=libc6 (>= 2.5.0-1), libgcc1 (>= 1:4.2.1), libqt4-core (>= 4.7.0~git20100909), libqt4-dbus (>= 4.7.0~git20100909), libqt4-declarative (>= 4.7.0~git20100909), libqt4-gui (>= 4.7.0~git20100909), libqt4-network (>= 4.7.0~git20100909), libqt4-opengl (>= 4.7.0~git20100909), libqt4-script (>= 4.7.0~git20100909), libqt4-sql (>= 4.7.0~git20100909), libqt4-svg (>= 4.7.0~git20100909), libqt4-xml (>= 4.7.0~git20100909), libqt4-xmlpatterns (>= 4.7.0~git20100909), libstdc++6 (>= 4.2.1), libx11-6, qt4-homescreen-loader diff --git a/qtc_packaging/debian_fremantle/postrm b/qtc_packaging/debian_fremantle/postrm new file mode 100755 index 0000000..b891667 --- /dev/null +++ b/qtc_packaging/debian_fremantle/postrm @@ -0,0 +1,48 @@ +#!/bin/sh +# postrm script for vicar +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `purge' +# * `upgrade' +# * `failed-upgrade' +# * `abort-install' +# * `abort-install' +# * `abort-upgrade' +# * `disappear' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + purge) + echo "Deleting configuration database ..." + [[ -d /home/user/.marketstoday/OfflineStorage ]] && rm -rf /home/user/.marketstoday/OfflineStorage + echo "Removing logs ..." + [[ -x /home/user/.marketstoday/marketstoday.log ]] && rm -f /home/user/.marketstoday/marketstoday.log + ;; + + remove|abort-install|upgrade|failed-upgrade|abort-upgrade|disappear) + echo "Removing logs ..." + [[ -x /home/user/.marketstoday/marketstoday.log ]] && rm -f /home/user/.marketstoday/marketstoday.log + ;; + + *) + echo "postrm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 + + diff --git a/qtc_packaging/debian_fremantle/rules b/qtc_packaging/debian_fremantle/rules new file mode 100755 index 0000000..0ca482f --- /dev/null +++ b/qtc_packaging/debian_fremantle/rules @@ -0,0 +1,73 @@ +#!/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 + +APPNAME := marketstoday +builddir: + mkdir -p builddir + +builddir/Makefile: builddir + cd builddir && qmake ../$(APPNAME).pro + +build: build-stamp + +build-stamp: builddir/Makefile + dh_testdir + + # Add here commands to compile the package. + cd builddir && $(MAKE) + #docbook-to-man debian/$(APPNAME).sgml > $(APPNAME).1 + + touch $@ + +clean: + dh_testdir + dh_testroot + rm -f build-stamp + + # Add here commands to clean up after the build process. + rm -rf builddir + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + # Add here commands to install the package into debian/marketstoday. + cd builddir && $(MAKE) INSTALL_ROOT=$(CURDIR)/debian/$(APPNAME) 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_installman + dh_link + dh_strip + dh_compress + dh_fixperms + dh_installdeb + dh_shlibdeps # Uncomment this line for publishing! + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install configure diff --git a/src/cpp/configqmlview.cpp b/src/cpp/configqmlview.cpp new file mode 100644 index 0000000..7473bc6 --- /dev/null +++ b/src/cpp/configqmlview.cpp @@ -0,0 +1,34 @@ +/* +@version: 0.1 +@author: Sudheer K. +@license: GNU General Public License +*/ + +#include "configqmlview.h" +#include "marketstodayqmlview.h" +#include "logutility.h" +#include +#include +#include +#include +#include + +ConfigQMLView::ConfigQMLView(QWidget *parent, MarketsTodayQMLView *parentView) + : QDeclarativeView(parent), logUtility(new LogUtility(this)) +{ + // Setup QDeclarativeView + setAlignment(Qt::AlignCenter); + //setContentResizable(false); + this->stockQuotesView = parentView; + this->rootContext()->setContextProperty("logUtility",logUtility); +} + +void ConfigQMLView::configClosed(){ + logUtility->logMessage("Config window is closed"); + this->stockQuotesView->initialize(); + this->close(); +} + +ConfigQMLView::~ConfigQMLView(){ + qDebug() << "In destructor for ConfigQMLView object"; +} diff --git a/src/cpp/configqmlview.h b/src/cpp/configqmlview.h new file mode 100644 index 0000000..a452320 --- /dev/null +++ b/src/cpp/configqmlview.h @@ -0,0 +1,30 @@ +/* +@version: 0.1 +@author: Sudheer K. +@license: GNU General Public License +*/ + +#ifndef CONFIGQMLVIEW_H +#define CONFIGQMLVIEW_H + +#include +#include "marketstodayqmlview.h" +#include "logutility.h" + +class ConfigQMLView : public QDeclarativeView +{ + Q_OBJECT + +public: + ConfigQMLView(QWidget *parent = 0, MarketsTodayQMLView *parentView = 0); + ~ConfigQMLView(); + +public slots: + void configClosed(); + +private: + MarketsTodayQMLView *stockQuotesView; + LogUtility * const logUtility; +}; + +#endif // CONFIGQMLVIEW_H diff --git a/src/cpp/logutility.h b/src/cpp/logutility.h new file mode 100644 index 0000000..530ba96 --- /dev/null +++ b/src/cpp/logutility.h @@ -0,0 +1,48 @@ +/* +@version: 0.1 +@author: Sudheer K. +@license: GNU General Public License +*/ + +#ifndef LOGUTILITY_H +#define LOGUTILITY_H +#include +#include +#include +#include + +class LogUtility : public QObject +{ + Q_OBJECT + +public: + LogUtility(QObject *parent = 0) : + QObject(parent){ + + } + ~LogUtility(){ + qDebug() << "Markets Today: In LogUtility object destructor.."; + } + +public slots: + void logMessage(QString strMessage) { + + QString strTimeNow = QDateTime::currentDateTime().toString("dd-MMM-yyyy HH:mm:ss"); + qDebug() << QString("Markets Today: [%1] - %2").arg(strTimeNow,strMessage); + +#ifdef Q_WS_MAEMO_5 + //For maemo use a common path + QFile logFile("/home/user/.marketstoday/marketstoday.log"); +#else + QFile logFile("marketstoday.log"); +#endif + + if (!logFile.open(QIODevice::Append | QIODevice::WriteOnly | QIODevice::Text)) { return; } + + QTextStream logStream(&logFile); + logStream << QString("Markets Today: [%1] - %2").arg(strTimeNow,strMessage) << endl; + } +}; + +#endif // LOGUTILITY_H +; diff --git a/src/cpp/main.cpp b/src/cpp/main.cpp new file mode 100644 index 0000000..0c4fe71 --- /dev/null +++ b/src/cpp/main.cpp @@ -0,0 +1,45 @@ +/* +@version: 0.1 +@author: Sudheer K. +@license: GNU General Public License +*/ + +#include "qmaemo5homescreenadaptor.h" +#include "marketstodayqmlview.h" + +#include +#include +#include +#include "logutility.h" + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + + MarketsTodayQMLView widgetAdaptor; + QMaemo5HomescreenAdaptor *adaptor = new QMaemo5HomescreenAdaptor(&widgetAdaptor); + adaptor->setSettingsAvailable(false); //Don't use the standard widget settings button + +#ifdef Q_WS_MAEMO_5 + //For maemo use a common path + widgetAdaptor.engine()->setOfflineStoragePath("/home/user/.marketstoday/OfflineStorage"); +#else + widgetAdaptor.engine()->setOfflineStoragePath("qml/OfflineStorage"); +#endif + widgetAdaptor.setResizeMode(QDeclarativeView::SizeRootObjectToView); + widgetAdaptor.setFixedSize(400,325); + widgetAdaptor.setSource(QUrl("qrc:/qml/MarketsToday.qml")); + widgetAdaptor.setWindowTitle("Markets Today"); + + LogUtility logUtility; + logUtility.logMessage(widgetAdaptor.engine()->offlineStoragePath()); + + QObject *rootObject = dynamic_cast(widgetAdaptor.rootObject()); + //Signal to display config window when user clicks config icon + QObject::connect(rootObject, SIGNAL(showConfigInNewWindow()), &widgetAdaptor, SLOT(displayConfigWindow())); + //Signal to reload configuration and update quotes after config window is clicked + QObject::connect(&widgetAdaptor, SIGNAL(initializeWidget()), rootObject, SLOT(initialize())); + + widgetAdaptor.show(); + app.exec(); +} diff --git a/src/cpp/marketstodayqmlview.cpp b/src/cpp/marketstodayqmlview.cpp new file mode 100644 index 0000000..c087bb1 --- /dev/null +++ b/src/cpp/marketstodayqmlview.cpp @@ -0,0 +1,52 @@ +/* +@version: 0.1 +@author: Sudheer K. +@license: GNU General Public License +*/ + +#include "marketstodayqmlview.h" +#include "configqmlview.h" +#include +#include +#include "logutility.h" +#include + +MarketsTodayQMLView::MarketsTodayQMLView(QWidget *parent) : QDeclarativeView(parent), logUtility(new LogUtility(this)) +{ + // Setup QDeclarativeView + //setAttribute(Qt::WA_OpaquePaintEvent); + setAttribute(Qt::WA_TranslucentBackground); + setViewportUpdateMode(QGraphicsView::FullViewportUpdate); + setAlignment(Qt::AlignCenter); + this->rootContext()->setContextProperty("logUtility",logUtility); +} + +QSize MarketsTodayQMLView::sizeHint() const +{ + return QSize(400, 325); +} + +void MarketsTodayQMLView::displayConfigWindow() { + + ConfigQMLView *configView = new ConfigQMLView(this->parentWidget(),this); + +#ifdef Q_WS_MAEMO_5 + //For maemo use a common path + configView->engine()->setOfflineStoragePath("/home/user/.marketstoday/OfflineStorage"); +#else + configView->engine()->setOfflineStoragePath("qml/OfflineStorage"); +#endif + configView->setResizeMode(QDeclarativeView::SizeRootObjectToView); + configView->setSource(QUrl("qrc:/qml/Config.qml")); + configView->setWindowTitle("Configuration"); + QObject::connect((QObject*)configView->engine(), SIGNAL(quit()), configView, SLOT(configClosed())); + configView->showFullScreen(); +} + +void MarketsTodayQMLView::initialize(){ + emit initializeWidget(); +} + +MarketsTodayQMLView::~MarketsTodayQMLView(){ + qDebug() << "In destructor for MarketsTodayQMLView object"; +} diff --git a/src/cpp/marketstodayqmlview.h b/src/cpp/marketstodayqmlview.h new file mode 100644 index 0000000..6ec531b --- /dev/null +++ b/src/cpp/marketstodayqmlview.h @@ -0,0 +1,34 @@ +/* +@version: 0.1 +@author: Sudheer K. +@license: GNU General Public License +*/ + +#ifndef MARKETSTODAYQMLVIEW_H +#define MARKETSTODAYQMLVIEW_H + +#include +#include "logutility.h" + +class MarketsTodayQMLView: public QDeclarativeView +{ + Q_OBJECT + +public: + MarketsTodayQMLView(QWidget *parent = 0); + ~MarketsTodayQMLView(); + QSize sizeHint() const; + +public slots: + void displayConfigWindow(); + void initialize(); + +signals: + void initializeWidget(); + +private: + LogUtility * const logUtility; + +}; + +#endif // MARKETSTODAYQMLVIEW_H diff --git a/src/data/icons/marketstoday.png b/src/data/icons/marketstoday.png new file mode 100755 index 0000000000000000000000000000000000000000..246f0216e088e5bfa0f5a03e7c6fbee6db36ff0b GIT binary patch literal 4779 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 FV1m=35*7de literal 0 HcmV?d00001 diff --git a/src/data/icons/marketstoday.png.base64 b/src/data/icons/marketstoday.png.base64 new file mode 100644 index 0000000..8a272fd --- /dev/null +++ b/src/data/icons/marketstoday.png.base64 @@ -0,0 +1,109 @@ + begin-base64 777 marketstoday.png + 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 + kc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE + 3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/8 + 7fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfIT + dyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxM + DUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8e + lQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zv + n//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vt + V5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmK + rhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N + 2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLd + tWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvtt + Xa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG + 4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+ + 0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO + 32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7 + nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+ + cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP + /pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV + 69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98P + T+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAD/AP8A/6C9 + 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 + AElFTkSuQmCC + ==== diff --git a/src/data/marketstoday.desktop b/src/data/marketstoday.desktop new file mode 100644 index 0000000..e63ec2b --- /dev/null +++ b/src/data/marketstoday.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Name=Markets Today +Comment=A simple desktop widget for stock quotes +Type=qt +X-Path=/opt/marketstoday/marketstoday +X-Multiple-Instances=false +X-home-applet-minwidth=400 +X-home-applet-minheight=325 +Name[en_US]=Markets Today diff --git a/src/qmaemo5homescreenadaptor/qmaemo5homescreenadaptor.cpp b/src/qmaemo5homescreenadaptor/qmaemo5homescreenadaptor.cpp new file mode 100644 index 0000000..bc0f53d --- /dev/null +++ b/src/qmaemo5homescreenadaptor/qmaemo5homescreenadaptor.cpp @@ -0,0 +1,336 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, 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. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qmaemo5homescreenadaptor.h" + +#include +#include + +#include +#include +#include +#include + +#include +#include +#include + +static QCoreApplication::EventFilter oldEventFilter; +static QList allDesktopItems; + +static Atom atomByName(const char *name) +{ + Atom atom = XInternAtom(QX11Info::display(), name, False); + if (!atom) + qWarning("Unable to obtain %s atom. This class requires a running Hildon session.", name); + + return atom; +} + +enum HomescreenAtoms +{ + HildonAppletId = 0, + NetWmWindowType = 1, + Utf8String = 2, + HildonTypeHomeApplet = 3, + HildonAppletSettings = 4, + HildonAppletShowSettings = 5, + HildonAppletOnCurrentDesktop = 6, + EnumCount = 7 +}; + +static Atom hsAtoms[EnumCount] = { 0, 0, 0, 0, 0, 0, 0 }; + +static void initAtoms() +{ + hsAtoms[HildonAppletId] = atomByName("_HILDON_APPLET_ID"); + hsAtoms[NetWmWindowType] = atomByName("_NET_WM_WINDOW_TYPE"); + hsAtoms[Utf8String] = atomByName("UTF8_STRING"); + hsAtoms[HildonTypeHomeApplet] = atomByName("_HILDON_WM_WINDOW_TYPE_HOME_APPLET"); + hsAtoms[HildonAppletSettings] = atomByName("_HILDON_APPLET_SETTINGS"); + hsAtoms[HildonAppletShowSettings] = atomByName("_HILDON_APPLET_SHOW_SETTINGS"); + hsAtoms[HildonAppletOnCurrentDesktop] = atomByName("_HILDON_APPLET_ON_CURRENT_DESKTOP"); +} + +/*! \class QMaemo5HomescreenAdaptor + + \brief The QMaemo5HomescreenAdaptor flags a top-level QWidget as homescreen widget + + QMaemo5HomescreenAdaptor is used in conjunction with the Qt for Maemo homescreen + loader. It evaluates the two command line arguments "-plugin-id" and "-write-pipe" + to set up a Qt top-level widget as Maemo 5 homescreen widget. + + Note: By default, the widget will have a black background. In order to make the + widget transparent, set the Qt::WA_TranslucentBackground widget attribute. + + Example: + + \code + QLabel *label = new QLabel("Hello Homescreen"); + new QMaemo5HomescreenAdaptor(label); + label->show(); + \endcode + + Maemo 5 supports homescreen widgets with settings dialogs. To use it, set + the settingsAvailable() property and show a settings dialog when the + settingsRequested() signal is emitted. + + Maemo 5 supports more than one homescreen. In order to determine whether + the homescreen widget is on the currently visible homescreen, connect to + the homescreenChanged() signal. +*/ + +/*! \property QMaemo5HomescreenAdaptor::settingsAvailable + + Set this property to true if the widget can make use of a settings dialog, + otherwise to false. When this property is set to true, the Maemo 5 homescreen + renders a small settings icon on top of the homescreen widget when the + user enters the desktop menu. When the user clicks that settings icon, the + settingsRequested() signal is emitted. + + The default is false. + + \sa settingsRequested() + */ + +/*! \fn void settingsRequested() + + This signal is emitted every time the homescreen widget's settings icon is + invoked by the user. Note that this icon is only visible when the settingsAvailable() + property is set. + + \sa settingsAvailable() + */ + +/*! \fn void homescreenChanged(bool isOnCurrentHomescreen) + + This is signal is emitted when current homescreen changes and the homescreen + widget becomes visible or invisible. The \a isOnCurrentHomescreen argument + indicates whether the homescreen widget is on the current homescreen or not. + + This signal can be used to start/stop background processing in order to save + battery life. + */ + +/*! + Constructs a new QMaemo5HomescreenAdaptor for the given \a widget. + + Note: The widget must be a top-level widget, and must not be reparented + during the lifetime of this adaptor. + + Note: \a widget is also the parent of this class, if the widget is destroyed, + so is this adaptor. + */ +QMaemo5HomescreenAdaptor::QMaemo5HomescreenAdaptor(QWidget *widget) + : QObject(widget), + hasSettings(false) +{ + Q_ASSERT(widget->isWindow()); + + if (!hsAtoms[0]) + initAtoms(); + + Display *display = QX11Info::display(); + + const QStringList args = QApplication::arguments(); + + // parse the command line arguments. + int idx; + if ((idx = args.indexOf(QLatin1String("-plugin-id"))) != -1) { + appletId = args.value(idx + 1); + const QByteArray pluginId = appletId.toUtf8(); + if (!pluginId.isEmpty()) { + XChangeProperty(display, + widget->winId(), + hsAtoms[HildonAppletId], + hsAtoms[Utf8String], 8, PropModeReplace, + reinterpret_cast(pluginId.constData()), + pluginId.length()); + } + } + if ((idx = args.indexOf(QLatin1String("-write-pipe"))) != -1) { + bool ok; + int sockId = args.value(idx + 1).toInt(&ok); + if (ok) { + socketNotifier = new QSocketNotifier(sockId, QSocketNotifier::Exception, this); + connect(socketNotifier, SIGNAL(activated(int)), this, SLOT(socketException())); + } + } + + // set the X11 atoms to flag our widget as homescreen widget + if (!appletId.isEmpty()) { + XChangeProperty(display, + widget->winId(), + hsAtoms[NetWmWindowType], + XA_ATOM, 32, PropModeReplace, + reinterpret_cast(&hsAtoms[HildonTypeHomeApplet]), + 1); + + updateStatus(); + + // --- make this window a child of root + XSetTransientForHint(display, widget->winId(), + RootWindow(display, widget->x11Info().screen())); + + // --- add an x11 event filter + if (!oldEventFilter) + oldEventFilter = QCoreApplication::instance()->setEventFilter(applicationEventFilter); + + allDesktopItems.append(this); + + // --- set WM input hints indicating that we don't want focus events + XWMHints *h = XGetWMHints(display, widget->winId()); + XWMHints wm_hints; + if (!h) { + memset(&wm_hints, 0, sizeof(wm_hints)); // make valgrind happy + h = &wm_hints; + } + h->flags |= InputHint; + h->input = False; + + XSetWMHints(display, widget->winId(), h); + if (h != &wm_hints) + XFree(h); + + widget->setMouseTracking(true); + } +} + +QMaemo5HomescreenAdaptor::~QMaemo5HomescreenAdaptor() +{ + allDesktopItems.removeOne(this); +} + +/*! \internal */ +void QMaemo5HomescreenAdaptor::updateStatus() +{ + if (appletId.isEmpty()) + return; + + Display *display = QX11Info::display(); + + // Set or remove settings property + if (hasSettings) + XChangeProperty(display, + appletWidget()->winId(), + hsAtoms[HildonAppletSettings], + XA_CARDINAL, 32, PropModeReplace, + (const unsigned char *) &(hasSettings), 1); + else + XDeleteProperty(display, + appletWidget()->winId(), + hsAtoms[HildonAppletSettings]); +} + +/*! \internal */ +void QMaemo5HomescreenAdaptor::socketException() +{ + socketNotifier->setEnabled(false); + appletWidget()->close(); +} + +bool qt_sendSpontaneousEvent(QObject *receiver, QEvent *event) +{ + return QCoreApplication::sendSpontaneousEvent(receiver, event); +} + + + +/*! \internal */ +bool QMaemo5HomescreenAdaptor::applicationEventFilter(void *message, long *result) +{ + static QPointer lastMouseWidget; + bool retval = false; + + if (oldEventFilter) + retval = oldEventFilter(message, result); + + if (allDesktopItems.isEmpty()) + return retval; + + XEvent *ev = reinterpret_cast(message); + + // Generate a mouse release for a leave Notify (as we don't get the mouse release from X11) + if (ev->type == ButtonPress) { + QPoint globalPos( ev->xbutton.x_root, ev->xbutton.y_root); + QWidget *widget = QWidget::find((WId)ev->xany.window); + if (widget) { + lastMouseWidget = widget->childAt(widget->mapFromGlobal(globalPos)); + if (!lastMouseWidget) + lastMouseWidget = widget; + } + + } else if (ev->type == ButtonRelease) { + lastMouseWidget = 0; + + } else if (ev->type == LeaveNotify) { + if (lastMouseWidget) { + // create a mouse up event that lies in Nirvana. + QPoint pos(-1000, -1000); + QMouseEvent e(QEvent::MouseButtonRelease, pos, pos, Qt::LeftButton, Qt::NoButton, Qt::NoModifier); + qt_sendSpontaneousEvent(lastMouseWidget, &e); + lastMouseWidget = 0; + } + + } else if (ev->type == ClientMessage) { + XClientMessageEvent *cm = (XClientMessageEvent *)message; + if (cm->message_type == hsAtoms[HildonAppletShowSettings]) { + for (int i = 0; i < allDesktopItems.count(); ++i) { + if (allDesktopItems.at(i)->appletWidget()->winId() == ev->xproperty.window) { + emit allDesktopItems.at(i)->settingsRequested(); + retval = true; + } + } + } + } else if (ev->type == PropertyNotify) { + if (ev->xproperty.atom == hsAtoms[HildonAppletOnCurrentDesktop]) { + for (int i = 0; i < allDesktopItems.count(); ++i) { + if (allDesktopItems.at(i)->appletWidget()->winId() == ev->xproperty.window) { + emit allDesktopItems.at(i)->homescreenChanged(ev->xproperty.state == 0); + retval = true; + } + } + } + } + + return retval; +} + diff --git a/src/qmaemo5homescreenadaptor/qmaemo5homescreenadaptor.h b/src/qmaemo5homescreenadaptor/qmaemo5homescreenadaptor.h new file mode 100644 index 0000000..9270649 --- /dev/null +++ b/src/qmaemo5homescreenadaptor/qmaemo5homescreenadaptor.h @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, 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. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMAEMO5HOMESCREENADAPTOR_H +#define QMAEMO5HOMESCREENADAPTOR_H + +#include +#include +#include + +class QWidget; +class QSocketNotifier; + +class QMaemo5HomescreenAdaptor : public QObject +{ + Q_OBJECT + Q_PROPERTY(bool settingsAvailable READ settingsAvailable WRITE setSettingsAvailable) + +public: + QMaemo5HomescreenAdaptor(QWidget *widget); + ~QMaemo5HomescreenAdaptor(); + + inline void setSettingsAvailable(bool available) + { + hasSettings = available; + updateStatus(); + } + + inline bool settingsAvailable() const + { + return hasSettings; + } + +Q_SIGNALS: + void settingsRequested(); + void homescreenChanged(bool isOnCurrentHomescreen); + +private Q_SLOTS: + void socketException(); + +private: + inline QWidget *appletWidget() const { return static_cast(parent()); } + + void updateStatus(); + + static bool applicationEventFilter(void *message, long *result); + + bool hasSettings; + QString appletId; + QSocketNotifier *socketNotifier; +}; + +#endif diff --git a/src/qmaemo5homescreenadaptor/qmaemo5homescreenadaptor.pri b/src/qmaemo5homescreenadaptor/qmaemo5homescreenadaptor.pri new file mode 100644 index 0000000..73d41c3 --- /dev/null +++ b/src/qmaemo5homescreenadaptor/qmaemo5homescreenadaptor.pri @@ -0,0 +1,4 @@ +HEADERS += $$PWD/qmaemo5homescreenadaptor.h +SOURCES += $$PWD/qmaemo5homescreenadaptor.cpp + +INCLUDEPATH += $$PWD diff --git a/src/qml/Config.qml b/src/qml/Config.qml new file mode 100644 index 0000000..9ece6bf --- /dev/null +++ b/src/qml/Config.qml @@ -0,0 +1,79 @@ +/* +@version: 0.1 +@author: Sudheer K. +@license: GNU General Public License +*/ + +import Qt 4.7 +import "Library" as Library + +Rectangle { + id: screen + + width: 800; height: 480 + + property int componentWidth: screen.width + property int itemHeight: 50 + + function close(){ + Qt.quit(); + } + + function back(){ + configArea.sourceComponent = configParentComponent; + titleBar.buttonType = "Close"; + } + + Library.TitleBar { + id: titleBar; width: parent.width; height: 60; + anchors.top: parent.top + title: "Markets Today - Configuration" + buttonType: "Close" + onCloseClicked: close() + onBackClicked: back() + } + + Loader { + id: configArea + sourceComponent: configParentComponent + anchors.top: titleBar.bottom + anchors.bottom: parent.bottom + width: parent.width + } + + Component { + id: configParentComponent + ConfigOptionsComponent { + id: configOptionsComponent + onTickersOptionSelected: { + configArea.sourceComponent = tickersComponent; + titleBar.buttonType = "Back"; + } + onSettingsOptionSelected: { + configArea.sourceComponent = settingsComponent; + titleBar.buttonType = "Back"; + } + } + } + + Component { + id: tickersComponent + ConfigTickersComponent { + id: tickersTab + anchors.fill: parent + componentWidth: screen.componentWidth + itemHeight: screen.itemHeight + onLogRequest: logUtility.logMessage(strMessage) + + } + } + + Component { + id: settingsComponent + ConfigParametersComponent { + id: settingsTab + anchors.fill: parent + onLogRequest: logUtility.logMessage(strMessage) + } + } +} diff --git a/src/qml/ConfigOptionsComponent.qml b/src/qml/ConfigOptionsComponent.qml new file mode 100644 index 0000000..a81ec49 --- /dev/null +++ b/src/qml/ConfigOptionsComponent.qml @@ -0,0 +1,77 @@ +/* +@version: 0.1 +@author: Sudheer K. +@license: GNU General Public License +*/ + +import Qt 4.7 + +Rectangle { + id: configOptionsComponent + anchors.fill: parent; + color: "#343434" + clip: true + + signal tickersOptionSelected + signal settingsOptionSelected + + Rectangle { + id: iconTickersArea + width: 128 + height: 128 + border.width: 1 + border.color: "#BFBFBF" + color:"#2E2E2E" + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + anchors.horizontalCenterOffset: -0.25 * parent.width + radius: 15 + Image { + source: "Library/images/icon_stocks.png" + anchors.fill: parent + } + + MouseArea{ + id: iconTickersMouseArea + anchors.fill: parent + onClicked: { + configOptionsComponent.tickersOptionSelected(); + } + } + + states: State { + name: "pressed"; when: iconTickersMouseArea.pressed + PropertyChanges { target: iconTickersArea; color: "#9a9a9a"} + } + } + + Rectangle { + id: iconSettingsArea + width: 128 + height: 128 + border.width: 1 + border.color: "#BFBFBF" + color:"#2E2E2E" + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + anchors.horizontalCenterOffset: 0.25 * parent.width + radius: 15 + Image { + source: "Library/images/icon_settings.png" + anchors.fill: parent + } + + MouseArea{ + id: iconSettingsMouseArea + anchors.fill: parent + onClicked: { + configOptionsComponent.settingsOptionSelected(); + } + } + states: State { + name: "pressed"; when: iconSettingsMouseArea.pressed + PropertyChanges { target: iconSettingsArea; color: "#9a9a9a"} + } + } + +} diff --git a/src/qml/ConfigParametersComponent.qml b/src/qml/ConfigParametersComponent.qml new file mode 100644 index 0000000..8cf3482 --- /dev/null +++ b/src/qml/ConfigParametersComponent.qml @@ -0,0 +1,171 @@ +/* +@version: 0.1 +@author: Sudheer K. +@license: GNU General Public License +*/ + +import Qt 4.7 +import "Library/js/DBUtility.js" as DBUtility + +Item { + id: configParametersComponent + property bool updateFreqEnabled + property string updateFreqMin + property bool updateWeekdaysOnly + signal logRequest(string strMessage) + + Rectangle { + id: updateConfig + anchors.fill: parent + color:"#343434" + + Component.onCompleted: { + DBUtility.initialize(); + loadSettings(); + } + + Component.onDestruction:{ + logRequest("Saving settings"); + saveSettings(); + } + + function loadSettings(){ + var value; + value = DBUtility.getSetting("UpdateFreqency"); + if (!value || value == "0.0" || value == ""){ + configParametersComponent.updateFreqEnabled = false; + } + else{ + configParametersComponent.updateFreqEnabled = true; + configParametersComponent.updateFreqMin = parseInt(value); + } + value = DBUtility.getSetting("UpdateWeekdaysOnly"); + if (!value || value == "0.0" || value == ""){ + configParametersComponent.updateWeekdaysOnly = false; + } + else{ + configParametersComponent.updateWeekdaysOnly = true; + } + } + + function saveSettings(){ + DBUtility.setSetting("UpdateFreqency",configParametersComponent.updateFreqMin); + DBUtility.setSetting("UpdateWeekdaysOnly",(configParametersComponent.updateWeekdaysOnly?1:0)); + } + + Text { + id: autoUpdateSectionLabel + anchors.top: parent.top + //anchors.topMargin: 10 + anchors.left: parent.left + anchors.leftMargin: 45 + height: 50 + horizontalAlignment: Text.AlignLeft; verticalAlignment: Text.AlignVCenter + font.pixelSize: 22; font.bold: true; elide: Text.ElideRight; color: "#B8B8B8"; style: Text.Raised; styleColor: "black" + text: "Auto-Update" + } + + Rectangle { + id: autoUpdateSection + border.width: 1 + border.color: "#BFBFBF" + color:"#2E2E2E" + anchors.top: autoUpdateSectionLabel.bottom + anchors.topMargin: 10 + anchors.left: parent.left + anchors.leftMargin: 40 + anchors.right: parent.right + anchors.rightMargin: 40 + height: 120 + radius: 15 + + Row { + id: rowUpdateFreq + anchors.top: parent.top + anchors.topMargin: 5 + anchors.left: parent.left + anchors.leftMargin: 5 + anchors.right: parent.right + height: 50 + spacing: 5 + + Image { + id: checkboxUpdateFreqImg + source: configParametersComponent.updateFreqEnabled? "Library/images/checkbox_checked.png":"Library/images/checkbox_unchecked.png" + width: 32; height: 32 + MouseArea { + anchors.fill: parent; + onClicked: { + configParametersComponent.updateFreqEnabled = !configParametersComponent.updateFreqEnabled; + if (!configParametersComponent.updateFreqEnabled){ + txtUpdateFreqMin.text = ""; + configParametersComponent.updateWeekdaysOnly = false; + } + } + } + } + + Text{ + height:parent.height + horizontalAlignment: Text.AlignLeft; verticalAlignment: Text.AlignVCenter + font.pixelSize: 20; font.bold: false; elide: Text.ElideRight; style: Text.Raised; styleColor: "black" + text: "Every " + color: configParametersComponent.updateFreqEnabled? "#ffffff" :"#B8B8B8"; + } + Item { + height: 40 + width: 80 + BorderImage { source: "Library/images/lineedit.sci"; anchors.fill: parent } + TextInput{ + id: txtUpdateFreqMin + anchors.fill: parent + focus: true + text: configParametersComponent.updateFreqMin + horizontalAlignment: Text.AlignHCenter + inputMethodHints: Qt.ImhDigitsOnly | Qt.ImhNoPredictiveText + onTextChanged: { + configParametersComponent.updateFreqMin = txtUpdateFreqMin.text; + } + } + } + Text{ + height:parent.height + horizontalAlignment: Text.AlignLeft; verticalAlignment: Text.AlignVCenter + font.pixelSize: 20; font.bold: false; elide: Text.ElideRight; style: Text.Raised; styleColor: "black" + text: " minutes" + color: configParametersComponent.updateFreqEnabled? "#ffffff" :"#B8B8B8"; + } + } + Row { + id: rowUpdateDays + anchors.top: rowUpdateFreq.bottom + anchors.topMargin: 5 + anchors.left: parent.left + anchors.leftMargin: 5 + anchors.right: parent.right + height: 50 + spacing: 5 + + Image { + id: checkboxUpdateWeekdays + source: configParametersComponent.updateWeekdaysOnly? "Library/images/checkbox_checked.png":"Library/images/checkbox_unchecked.png" + width: 32; height: 32 + MouseArea { + anchors.fill: parent; + onClicked: { + configParametersComponent.updateWeekdaysOnly = !configParametersComponent.updateWeekdaysOnly; + } + } + } + + Text{ + height:parent.height + horizontalAlignment: Text.AlignLeft; verticalAlignment: Text.AlignVCenter + font.pixelSize: 20; font.bold: false; elide: Text.ElideRight; style: Text.Raised; styleColor: "black" + text: "Only on weekdays" + color: configParametersComponent.updateWeekdaysOnly? "#ffffff" :"#B8B8B8"; + } + } + } + } +} diff --git a/src/qml/ConfigTickersComponent.qml b/src/qml/ConfigTickersComponent.qml new file mode 100644 index 0000000..98ef112 --- /dev/null +++ b/src/qml/ConfigTickersComponent.qml @@ -0,0 +1,208 @@ +/* +@version: 0.1 +@author: Sudheer K. +@license: GNU General Public License +*/ + +import Qt 4.7 +import "Library/js/DBUtility.js" as DBUtility + +Item { + id: tickerTab + property int componentWidth + property int itemHeight + signal logRequest(string strMessage) + + Component.onCompleted: { + DBUtility.initialize(); + loadSymbols(); + } + + function loadSymbols(){ + var symbolsArray = DBUtility.getAllSymbols(); + if (symbolsArray && symbolsArray.length > 0){ + var i = 0; + for (i = 0; i< symbolsArray.length; i++) { + logRequest("Appending "+symbolsArray[i]+ " to ListModel"); + symbolsListModel.append({"symbol": symbolsArray[i]}); + } + logRequest("ListModel count is "+symbolsListModel.count); + } + } + + function removeSymbol(symbol,index){ + logRequest("Removing symbol "+symbol+" at index "+index); + + var result = DBUtility.removeSymbol(symbol); + if (result != "Error"){ + symbolsListModel.remove(index); + } + else{ + logRequest("Error: DB error while removing "+symbol+" at index "+index); + } + + } + + function addSymbol(symbol){ + if (symbol && symbol.length > 0){ + symbol = symbol.toUpperCase(); + logRequest("Adding symbol "+symbol); + var result = DBUtility.addSymbol(symbol); + logRequest("Result is "+result); + + if (result != "Error"){ + symbolsListModel.append({"symbol": symbol}); + } + else{ + logRequest("Error: DB error while adding "+symbol); + } + } + else{ + logRequest("Error: Invalid symbol "+symbol); + } + } + + ListModel { + id: symbolsListModel + } + + Component { + id: tickersListDelegate + + Item { + id: wrapper; width: componentWidth; height: itemHeight + Rectangle { id: listRecord; + color: "black"; + opacity: index % 2 ? 0.2 : 0.4; + height: parent.height - 2; + width: parent.width; y: 1 } + + Text { + text: symbol; + anchors.left: parent.left + anchors.leftMargin: 30 + anchors.verticalCenter: parent.verticalCenter + verticalAlignment: Text.AlignVCenter + width: parent.width - 120; + height: parent.height + font.pixelSize: 18; + font.bold: true; + elide: Text.ElideRight; + color: "white"; + style: Text.Raised; + styleColor: "black" + } + + Rectangle { + id: removeButtonArea + width: 120 + height: parent.height + anchors.right: parent.right + color: "#00000000"; + + Image { + source: "Library/images/remove.png" + anchors.centerIn: parent + width: 32; height: 32 + } + + MouseArea{ + id:removeButtonMouseArea + anchors.fill: parent + onClicked: { + removeSymbol(symbol,index) + } + } + + states: State { + name: "pressed"; when: removeButtonMouseArea.pressed + PropertyChanges { target: removeButtonArea; color: "#9a9a9a"} + } + } + } + } + + Rectangle { + id: newSymbolRow + //width: parent.width + width: componentWidth + height: itemHeight; + anchors.top: parent.top + color: "#343434" + + Item { + id: lineEditItem + width: parent.width - 120 + height: parent.height + anchors.verticalCenter: parent.verticalCenter + anchors.left: parent.left + BorderImage { source: "Library/images/lineedit.sci"; anchors.fill: parent } + TextInput{ + id: newSymbol + width: parent.width + height: parent.height + anchors.left: parent.left + anchors.leftMargin: 5 + anchors.verticalCenter: parent.verticalCenter + maximumLength:25 + font.pixelSize: 18 + font.bold: true + font.capitalization: Font.AllUppercase + color: "#151515"; selectionColor: "green" + KeyNavigation.tab: addButton + Keys.onReturnPressed: { + logRequest("Return pressed"); + addSymbol(newSymbol.text.trim()); + newSymbol.text = ""; + } + Keys.onEnterPressed: { + logRequest("Enter pressed"); + addSymbol(newSymbol.text.trim()); + newSymbol.text = ""; + } + focus: true + } + } + + Rectangle { + id: addButtonArea + anchors.verticalCenter: parent.verticalCenter + anchors.right: parent.right + width: 120 + height: parent.height + color:"#343434" + Image { + id: addButton + source: "Library/images/add.png" + width: 32; height: 32 + anchors.centerIn: parent + } + MouseArea{ + id:addButtonMouseArea + anchors.fill: parent + onClicked: { + addSymbol(newSymbol.text.trim()); + newSymbol.text = ""; + } + } + states: State { + name: "pressed"; when: addButtonMouseArea.pressed + PropertyChanges { target: addButtonArea; color: "#9a9a9a"} + } + } + } + Rectangle{ + anchors.top: newSymbolRow.bottom + anchors.bottom: parent.bottom + width: parent.width; + + color:"#343434" + ListView{ + id: symbolsListView + anchors.fill: parent + model: symbolsListModel + delegate: tickersListDelegate + } + + } +} diff --git a/src/qml/Library/TitleBar.qml b/src/qml/Library/TitleBar.qml new file mode 100644 index 0000000..f6dff31 --- /dev/null +++ b/src/qml/Library/TitleBar.qml @@ -0,0 +1,170 @@ +/* +@version: 0.1 +@author: Sudheer K. +@license: GNU General Public License + +Based on Nokia Qt Quick Demos with copyright notice below. + +Source: http://doc.qt.nokia.com/4.7-snapshot/demos-declarative-twitter-twittercore-titlebar-qml.html +*/ + +/**************************************************************************** +** +** Copyright (C) 2010 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$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, 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. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import Qt 4.7 + +Item { + id: titleBar + property string title: "Markets Today" + property string buttonType: "Config" + signal settingsClicked + signal closeClicked + signal backClicked + + BorderImage { source: "images/titlebar.sci"; width: parent.width; height: parent.height + 14; y: -7 } + + Item { + id: container + width: parent.width; height: parent.height + + Text { + id: categoryText + anchors { + leftMargin: 5; rightMargin: 10 + verticalCenter: parent.verticalCenter + horizontalCenter: parent.horizontalCenter + } + elide: Text.ElideMiddle + text: title + font.bold: true; color: "White"; style: Text.Raised; styleColor: "Black" + font.pixelSize: 18 + } + + Component { + id: configButton + + Rectangle { + id: configButtonArea + anchors.fill: parent + color: "#00000000" + + Image { + source: "images/config.png" + width: 40; height: 40 + anchors.centerIn: parent + } + + MouseArea{ + id: configButtonMouseArea + anchors.fill: parent + onClicked: { + titleBar.settingsClicked(); + } + } + + states: State { + name: "pressed"; when: configButtonMouseArea.pressed + PropertyChanges { target: configButtonArea; color: "#9a9a9a"} + } + } + } + + Component { + id: closeButton + + Rectangle { + id: closeButtonArea + anchors.fill: parent + color: "#00000000" + + Image { + source: "images/close.png" + width: 32; height: 32 + anchors.centerIn: parent + } + + MouseArea{ + id: closeButtonMouseArea + anchors.fill: parent + onClicked: titleBar.closeClicked(); + } + + states: State { + name: "pressed"; when: closeButtonMouseArea.pressed + PropertyChanges { target: closeButtonArea; color: "#9a9a9a"} + } + } + } + + Component { + id: backButton + + Rectangle { + id: backButtonArea + anchors.fill: parent + color: "#00000000" + + Image { + source: "images/back.png" + width: 32; height: 32 + anchors.centerIn: parent + } + MouseArea{ + id: backButtonMouseArea + anchors.fill: parent + onClicked: titleBar.backClicked(); + } + + states: State { + name: "pressed"; when: backButtonMouseArea.pressed + PropertyChanges { target: backButtonArea; color: "#9a9a9a"} + } + } + } + + Loader { + width: 80 + height: parent.height + anchors.right: parent.right + sourceComponent: buttonType == "Config" ? configButton : (buttonType == "Close"? closeButton: backButton) + } + } +} diff --git a/src/qml/Library/ToolBar.qml b/src/qml/Library/ToolBar.qml new file mode 100644 index 0000000..c977d93 --- /dev/null +++ b/src/qml/Library/ToolBar.qml @@ -0,0 +1,135 @@ +/* +@version: 0.1 +@author: Sudheer K. +@license: GNU General Public License +*/ + +import Qt 4.7 + +Item { + id: toolbar + property bool updatePending: false + + signal reloadButtonClicked + signal downButtonClicked + signal upButtonClicked + signal newsButtonClicked + + BorderImage { source: "images/toolbar.sci"; width: parent.width; height: parent.height + 14; y: -7 } + + Rectangle { + id: reloadButtonArea + width: 60 + height: parent.height + anchors.left: parent.left + color: "#00000000" + + Image { + id: reloadButton + source: "images/reload.png" + width: 32; height: 32 + anchors.centerIn: parent + + NumberAnimation on rotation { + from: 0; to: 360; running: toolbar.updatePending == true; loops: Animation.Infinite; duration: 900 + } + } + + MouseArea{ + id: reloadButtonMouseArea + anchors.fill: parent + onClicked: { + toolbar.updatePending = true; + toolbar.reloadButtonClicked(); + } + } + + states: State { + name: "pressed"; when: reloadButtonMouseArea.pressed + PropertyChanges { target: reloadButtonArea; color: "#9a9a9a"} + } + } + + Rectangle { + id: downButtonArea + width: 60 + height: parent.height + anchors.right: parent.horizontalCenter; anchors.horizontalCenterOffset: -60; + color: "#00000000" + + Image { + id: downButton + source: "images/down.png" + width: 32; height: 32 + anchors.verticalCenter: parent.verticalCenter + anchors.right: parent.right + anchors.rightMargin: 5 + } + + MouseArea{ + id: downButtonMouseArea + anchors.fill: parent + onClicked: toolbar.downButtonClicked() + } + + states: State { + name: "pressed"; when: downButtonMouseArea.pressed + PropertyChanges { target: downButtonArea; color: "#9a9a9a"} + } + } + + + Rectangle { + id: upButtonArea + width: 60 + height: parent.height + anchors.left: parent.horizontalCenter; anchors.horizontalCenterOffset: 60; + color: "#00000000" + + Image { + id: upButton + source: "images/up.png" + width: 32; height: 32 + anchors.verticalCenter: parent.verticalCenter + anchors.left: parent.left + anchors.leftMargin: 5 + } + + MouseArea{ + id: upButtonMouseArea + anchors.fill: parent + onClicked: toolbar.upButtonClicked() + } + + states: State { + name: "pressed"; when: upButtonMouseArea.pressed + PropertyChanges { target: upButtonArea; color: "#9a9a9a"} + } + } + + Rectangle { + id: newsButtonArea + width: 60 + height: parent.height + anchors.right: parent.right + color: "#00000000" + + Image { + id: newsButton + source: "images/news.png" + width: 32; height: 32 + anchors.centerIn: parent + } + + MouseArea{ + id: newsButtonMouseArea + anchors.fill: parent + onClicked: toolbar.newsButtonClicked() + } + + states: State { + name: "pressed"; when: newsButtonMouseArea.pressed + PropertyChanges { target: newsButtonArea; color: "#9a9a9a"} + } + } +} diff --git a/src/qml/Library/images/add.png b/src/qml/Library/images/add.png new file mode 100644 index 0000000000000000000000000000000000000000..302b60c2d5aa9b2f36fdb26b53a3a1b892e9c4c8 GIT binary patch literal 960 zcmV;x13&zUP)l!@=Taoc9!il?^w2|#q|qu%Ta21)va=ayXWn_=9+HVM znVFrXD<1s9Uf!4YdA`s0`86wyF}zM#uhlys0Y1HWu?~C#oB^g@vCqGOpMWpEzj^Z? z@yUe??*P96HGpch%CYHbENighXsvnp=nUcjM zHk*9Cuz>ITHDJMh@5G63fsxDe^Ss+=ptXLbzl!HEGc&`_w{HU+lE8%Px=c43bmN$A z9HW$C(7ho5DJ5??4%3YWuImy6!Gr{us@Dml2!CsfMC(FBtB)VEw6v6Y_tDw2OxEj# z?`_M%8y;q=Ugyu1mF+GtK)cgHB}van!XRMf{{76mGeLmv5rEd3cBiweump&rh*+tf z&Qr2U4pCzaWd>WU6j2ntAfS}$$vj0`OnC&#+EF_J%e{un63A1ah+H1FYaoNUHiico zxqiC3noFSBY|@S61Lrfxk7Eh((pj3STm=%PSX^8z6-A04Zr#c}|LV#WkTUbGP=UNi z`-L_JvCn>Q1qyQAFA}X0`%;i%m%#q^>8GN5p{PCcQ!qdUwASc;i_i>^fXN_`B3A)R z2yR@ze&E6K@-kPiUCT6fd48VvXJ-$bw|xI#fV~s|c=qDsVHaT(`j4XS=+;+41od#jMk;Lq1o{XAZ^=5*f!6DfT5wGo{taJ zYJ7J7eCFNw_;@J=!Z5_LZ5%0)70)wTDY4mZ6NVwK>tfq>?&KOC8R6q|=Q8g$+HInY zWdz&lNs@#h2{3 z<<6bM8*6Jw$AO&42k0H6HDjZroSvKeOZ;)~-dt;A2P)OXYGIs8lNR{{}EzH@vW7 z`qb~=Y}{I`9hwDxzYnA`X|CRoJzJyEJEb`P-H+UuKZY6%cKvexh6z0C|M?Pb3n7-m6~t{L|g-?vtl>pK_nx zIUoR=-TKCgl~o(&&YhPfl}6Kphye&~#DSYQoj6~QMg%zkA^k?oB;4*q`d&^#jY zB>(^b<0!I!wfXf;l_kznIbv)oPAV4cCufgcDbsNWxA3M`xw#WtA+{6i)2ACiijR-G}7!?nPS@8L9Ly+wQLoYqs_}VWh#d#Ik9-g#o>~KpA!!T z0}$xD3k<^xBOo#{2yNC-#-P_1F0Nd1uD-s$Js}6U6^l@ZL9R6wVzH%a>gq@Ixt^mL) zMAWppj%{%`Y_nFbUSS_?%44KbX)F_5uGa3azx;LrA~JgvieihkV2;UTn!kQSeW_lr z!*l?3Yipes{<`=A0DO{kD<+~_0MLMlTiou`>#T*A%IfN6;~YiBGMP*U27^(Hh)N>5 z0|0ISa3f+fB+;208NOv^K4uDQnR_> zxrLProTE%RS^yXg0BwT4EC9UZD6${XW$QjFE1#qhzJDPMBEqDyi55gOr92B#*(g)) zG^5eb*wNAX{*CK5_9g36KBertk3ZYBNTpIIO-4in-)$c(eWrTHpaFP8M5Gjh5mEbm zUCrT!%^Pj^%7wLc^}i1IMkKaW;#}JekEiEMe8s}m3qDJ&cIbTrq%*I_dy)Sv@EN#9nTev6m{}Nc1Wgi-V!C-hSC+CrV z+0T~%0C(=(y*Zd``JgOYuN$50y$erUzt4ZGAAn#EM&J^NUg0I2OF5UN^0qT)_te&` zbsal;JirU1=(zQGyuC<7fbkY#iJT}7(1qh;R$wkz;&9kj)zq#U^Y{}}GWg3*$GP*7 zWzVjt76OPx8G(zR#ch1McoFOz@Z0f2-7z;ux~O9+4z06=<WDR*FRcSTFz- zW=q650N5=6FiBTtNC2?60Km==3$g$R3;-}uh=nNt1bYBr$Ri_o0EC$U6h`t_Jn<{8 z5a%iY0C<_QJh>z}MS)ugEpZ1|S1ukX&Pf+56gFW3VVXcL!g-k)GJ!M?;PcD?0HBc- z5#WRK{dmp}uFlRjj{U%*%WZ25jX z{P*?XzTzZ-GF^d31o+^>%=Ap99M6&ogks$0k4OBs3;+Bb(;~!4V!2o<6ys46agIcq zjPo+3B8fthDa9qy|77CdEc*jK-!%ZRYCZvbku9iQV*~a}ClFY4z~c7+0P?$U!PF=S z1Au6Q;m>#f??3%Vpd|o+W=WE9003S@Bra6Svp>fO002awfhw>;8}z{#EWidF!3EsG z3;bXU&9EIRU@z1_9W=mEXoiz;4lcq~xDGvV5BgyU zp1~-*fe8db$Osc*A=-!mVv1NJjtCc-h4>-CNCXm#Bp}I%6j35eku^v$Qi@a{RY)E3 zJ#qp$hg?Rwkvqr$GJ^buyhkyVfwECO)C{#lxu`c9ghrwZ&}4KmnvWKso6vH!8a<3Q zq36)6Xb;+tK10Vaz~~qUGsJ8#F2=(`u{bOVlVi)VBCHIn#u~6ztOL7=^<&SmcLWlF zMZgI*1b0FpVIDz9SWH+>*hr`#93(Um+6gxa1B6k+CnA%mOSC4s5&6UzVlpv@SV$}* z))J2sFA#f(L&P^E5{W}HC%KRUNwK6<(h|}}(r!{C=`5+6G)NjFlgZj-YqAG9lq?`C z$c5yc>d>VnA`E_*3F2Qp##d8RZb=H01_mm@+|Cqnc9PsG(F5HIG_C zt)aG3uTh7n6Et<2In9F>NlT@zqLtGcXcuVrX|L#Xx)I%#9!{6gSJKPrN9dR61N3(c z4Tcqi$B1Vr8Jidf7-t!G7_XR2rWwr)$3XQ?}=hpK0&Z&W{| zep&sA23f;Q!%st`QJ}G3cbou<7-yIK2z4nfCCCtN2-XOGSWo##{8Q{ATurxr~;I`ytDs%xbip}RzP zziy}Qn4Z2~fSycmr`~zJ=lUFdFa1>gZThG6M+{g7vkW8#+YHVaJjFF}Z#*3@$J_By zLtVo_L#1JrVVB{Ak-5=4qt!-@Mh}c>#$4kh<88)m#-k<%CLtzEP3leVno>={htGUuD;o7bD)w_sX$S}eAxwzy?UvgBH(S?;#HZiQMoS*2K2 zT3xe7t(~nU*1N5{rxB;QPLocnp4Ml>u<^FZwyC!nu;thW+pe~4wtZn|Vi#w(#jeBd zlf9FDx_yoPJqHbk*$%56S{;6Kv~mM9!g3B(KJ}#RZ#@)!hR|78Dq|Iq-afF%KE1Brn_fm;Im z_u$xr8UFki1L{Ox>G0o)(&RAZ;=|I=wN2l97;cLaHH6leTB-XXa*h%dBOEvi`+x zi?=Txl?TadvyiL>SuF~-LZ;|cS}4~l2eM~nS7yJ>iOM;atDY;(?aZ^v+mJV$@1Ote z62cPUlD4IWOIIx&SmwQ~YB{nzae3Pc;}r!fhE@iwJh+OsDs9zItL;~pu715HdQEGA zUct(O!LkCy1<%NCg+}G`0PgpNm-?d@-hMgNe6^V+j6x$b<6@S<$+<4_1hi}Ti zncS4LsjI}fWY1>OX6feMEuLErma3QLmkw?X+1j)X-&VBk_4Y;EFPF_I+q;9dL%E~B zJh;4Nr^(LEJ3myURP{Rblsw%57T)g973R8o)DE9*xN#~;4_o$q%o z4K@u`jhx2fBXC4{U8Qn{*%*B$Ge=nny$HAYq{=vy|sI0 z_vss+H_qMky?OB#|JK!>IX&II^LlUh#rO5!7TtbwC;iULyV-Xq?ybB}ykGP{?LpZ? z-G|jbTmIbG@7#ZCz;~eY(cDM(28Dyq{*m>M4?_iynUBkc4TkHUI6gT!;y-fz>HMcd z&t%Ugo)`Y2{>!cx7B7DI)$7;J(U{Spm-3gBzioV_{p!H$8L!*M!p0uH$#^p{Ui4P` z?ZJ24cOCDe-w#jZd?0@)|7iKK^;6KN`;!@ylm7$*nDhK&GcDTy000JJOGiWi{{a60 z|De66lK=n!32;bRa{vGf6951U69E94oEQKA00(qQO+^RW0~iMg0!6sKO#lD__DMuR zR9M5sS6xc$KotJYp-Nv$tfg2=C4C7#2sXtHbO~_>-W}Y#gSZ2Cpi8Jbhzk&#Ac{y! zM8roUeJN^l?t_V>Y5p3^y$9xHGBe*d-<)qwhC~GaGb#W;L;!%Rt1A_N3BUlbwZb~1 z!^6Y=s^B8>MF0Sxhz;PTkSf~_uzu$k$8f4qH5^T=x^?FB9 z1voeYlZdvM87s6A5#@qAj-wEfMMOFg8II#9OF6*IM#9{oh@58a{@~ys6a41pCfvCm z=^g;Mh$mrO`r-cm{?Sje`}X!$0bq%U9{Z#(5n$%{{L`O+-`(AP?>ux^5MEr>L;@n> zmIc4RzfY1qjN`q%y|-Kfnx;L*XFfbUC;-j@n3|^9N#MblH1JbR(=Otjp$isTJjUa( z!ps&C8O&^r$73~Pj2>T)h%8Oh{v?s+P=RQR#$+=2wh=Rfh_;AmIGIe8v@x;f5s{I3 z6(=Mi0Kj$KG)Z*;mg~CV!ow8V0l?^XyKjYR!IC`8!vq^eN#rG~sjBK_ZZS$zAdtJP zA*|iq-IJsbPft&wvi&>)$3#@7KzSmPc<#^7&kM(z>4HwDV-wMUh`fZ%&T2-d(^)$A zmzS3XrxbEQyWO^#dBDtG!6Ie0+wIE~MHie>hyVbzS}mK1ijc5ct=37}xiGUH$0 zM@gL5>-Cc&-b}(F5y5mim6%lBTCMiD&fo9pbgGDm7wxOnYLs>nbpfoEK-BxW)sUHg zuloTK+$G6JFq_R@($5%bMG(@B3%-`CN@Y&FFtW&;J5csd4p4EuxA50000Oz@Z0f2-7z;ux~O9+4z06=<WDR*FRcSTFz- zW=q650N5=6FiBTtNC2?60Km==3$g$R3;-}uh=nNt1bYBr$Ri_o0EC$U6h`t_Jn<{8 z5a%iY0C<_QJh>z}MS)ugEpZ1|S1ukX&Pf+56gFW3VVXcL!g-k)GJ!M?;PcD?0HBc- z5#WRK{dmp}uFlRjj{U%*%WZ25jX z{P*?XzTzZ-GF^d31o+^>%=Ap99M6&ogks$0k4OBs3;+Bb(;~!4V!2o<6ys46agIcq zjPo+3B8fthDa9qy|77CdEc*jK-!%ZRYCZvbku9iQV*~a}ClFY4z~c7+0P?$U!PF=S z1Au6Q;m>#f??3%Vpd|o+W=WE9003S@Bra6Svp>fO002awfhw>;8}z{#EWidF!3EsG z3;bXU&9EIRU@z1_9W=mEXoiz;4lcq~xDGvV5BgyU zp1~-*fe8db$Osc*A=-!mVv1NJjtCc-h4>-CNCXm#Bp}I%6j35eku^v$Qi@a{RY)E3 zJ#qp$hg?Rwkvqr$GJ^buyhkyVfwECO)C{#lxu`c9ghrwZ&}4KmnvWKso6vH!8a<3Q zq36)6Xb;+tK10Vaz~~qUGsJ8#F2=(`u{bOVlVi)VBCHIn#u~6ztOL7=^<&SmcLWlF zMZgI*1b0FpVIDz9SWH+>*hr`#93(Um+6gxa1B6k+CnA%mOSC4s5&6UzVlpv@SV$}* z))J2sFA#f(L&P^E5{W}HC%KRUNwK6<(h|}}(r!{C=`5+6G)NjFlgZj-YqAG9lq?`C z$c5yc>d>VnA`E_*3F2Qp##d8RZb=H01_mm@+|Cqnc9PsG(F5HIG_C zt)aG3uTh7n6Et<2In9F>NlT@zqLtGcXcuVrX|L#Xx)I%#9!{6gSJKPrN9dR61N3(c z4Tcqi$B1Vr8Jidf7-t!G7_XR2rWwr)$3XQ?}=hpK0&Z&W{| zep&sA23f;Q!%st`QJ}G3cbou<7-yIK2z4nfCCCtN2-XOGSWo##{8Q{ATurxr~;I`ytDs%xbip}RzP zziy}Qn4Z2~fSycmr`~zJ=lUFdFa1>gZThG6M+{g7vkW8#+YHVaJjFF}Z#*3@$J_By zLtVo_L#1JrVVB{Ak-5=4qt!-@Mh}c>#$4kh<88)m#-k<%CLtzEP3leVno>={htGUuD;o7bD)w_sX$S}eAxwzy?UvgBH(S?;#HZiQMoS*2K2 zT3xe7t(~nU*1N5{rxB;QPLocnp4Ml>u<^FZwyC!nu;thW+pe~4wtZn|Vi#w(#jeBd zlf9FDx_yoPJqHbk*$%56S{;6Kv~mM9!g3B(KJ}#RZ#@)!hR|78Dq|Iq-afF%KE1Brn_fm;Im z_u$xr8UFki1L{Ox>G0o)(&RAZ;=|I=wN2l97;cLaHH6leTB-XXa*h%dBOEvi`+x zi?=Txl?TadvyiL>SuF~-LZ;|cS}4~l2eM~nS7yJ>iOM;atDY;(?aZ^v+mJV$@1Ote z62cPUlD4IWOIIx&SmwQ~YB{nzae3Pc;}r!fhE@iwJh+OsDs9zItL;~pu715HdQEGA zUct(O!LkCy1<%NCg+}G`0PgpNm-?d@-hMgNe6^V+j6x$b<6@S<$+<4_1hi}Ti zncS4LsjI}fWY1>OX6feMEuLErma3QLmkw?X+1j)X-&VBk_4Y;EFPF_I+q;9dL%E~B zJh;4Nr^(LEJ3myURP{Rblsw%57T)g973R8o)DE9*xN#~;4_o$q%o z4K@u`jhx2fBXC4{U8Qn{*%*B$Ge=nny$HAYq{=vy|sI0 z_vss+H_qMky?OB#|JK!>IX&II^LlUh#rO5!7TtbwC;iULyV-Xq?ybB}ykGP{?LpZ? z-G|jbTmIbG@7#ZCz;~eY(cDM(28Dyq{*m>M4?_iynUBkc4TkHUI6gT!;y-fz>HMcd z&t%Ugo)`Y2{>!cx7B7DI)$7;J(U{Spm-3gBzioV_{p!H$8L!*M!p0uH$#^p{Ui4P` z?ZJ24cOCDe-w#jZd?0@)|7iKK^;6KN`;!@ylm7$*nDhK&GcDTy000JJOGiWi{{a60 z|De66lK=n!32;bRa{vGf6951U69E94oEQKA00(qQO+^RW0~iJ{476QEh5!Homq|oH zR9M69mr;t^U=)SF`x7OP=?XHB0l^t@1G5CXgU$|If=h4*b_aC{?E=IZ!FRI)g}ekc z|LMb+AR#TK#7vi{f)*?2ro0VH9P zFf-Qc^&{~82E16;+wHen6A^&BC{V9?+nPJ)=5?OxH!MF& zNZQ?C@per+)~G;|Bx&0XBuSF~Qh~0vzlo>Of?J`9=ig}HZo%Dxy9M_h_^&N+r8L)- zWm()dd6s2yo#%H7JOF9S{y+TjJ>Z<1-a!6o(>-94$n$((&jV(*1m?gl48y-tBhT~r zqUKam{U|+zVfe`;aXcOuz?Y6w+1Gx*|6-Cjoldcty>^g_s_7*?^?JRuie~5Y`O(Ze ziDr_XgCKa5^d1mP6h#qx?-$Oz@Z0f2-7z;ux~O9+4z06=<WDR*FRcSTFz- zW=q650N5=6FiBTtNC2?60Km==3$g$R3;-}uh=nNt1bYBr$Ri_o0EC$U6h`t_Jn<{8 z5a%iY0C<_QJh>z}MS)ugEpZ1|S1ukX&Pf+56gFW3VVXcL!g-k)GJ!M?;PcD?0HBc- z5#WRK{dmp}uFlRjj{U%*%WZ25jX z{P*?XzTzZ-GF^d31o+^>%=Ap99M6&ogks$0k4OBs3;+Bb(;~!4V!2o<6ys46agIcq zjPo+3B8fthDa9qy|77CdEc*jK-!%ZRYCZvbku9iQV*~a}ClFY4z~c7+0P?$U!PF=S z1Au6Q;m>#f??3%Vpd|o+W=WE9003S@Bra6Svp>fO002awfhw>;8}z{#EWidF!3EsG z3;bXU&9EIRU@z1_9W=mEXoiz;4lcq~xDGvV5BgyU zp1~-*fe8db$Osc*A=-!mVv1NJjtCc-h4>-CNCXm#Bp}I%6j35eku^v$Qi@a{RY)E3 zJ#qp$hg?Rwkvqr$GJ^buyhkyVfwECO)C{#lxu`c9ghrwZ&}4KmnvWKso6vH!8a<3Q zq36)6Xb;+tK10Vaz~~qUGsJ8#F2=(`u{bOVlVi)VBCHIn#u~6ztOL7=^<&SmcLWlF zMZgI*1b0FpVIDz9SWH+>*hr`#93(Um+6gxa1B6k+CnA%mOSC4s5&6UzVlpv@SV$}* z))J2sFA#f(L&P^E5{W}HC%KRUNwK6<(h|}}(r!{C=`5+6G)NjFlgZj-YqAG9lq?`C z$c5yc>d>VnA`E_*3F2Qp##d8RZb=H01_mm@+|Cqnc9PsG(F5HIG_C zt)aG3uTh7n6Et<2In9F>NlT@zqLtGcXcuVrX|L#Xx)I%#9!{6gSJKPrN9dR61N3(c z4Tcqi$B1Vr8Jidf7-t!G7_XR2rWwr)$3XQ?}=hpK0&Z&W{| zep&sA23f;Q!%st`QJ}G3cbou<7-yIK2z4nfCCCtN2-XOGSWo##{8Q{ATurxr~;I`ytDs%xbip}RzP zziy}Qn4Z2~fSycmr`~zJ=lUFdFa1>gZThG6M+{g7vkW8#+YHVaJjFF}Z#*3@$J_By zLtVo_L#1JrVVB{Ak-5=4qt!-@Mh}c>#$4kh<88)m#-k<%CLtzEP3leVno>={htGUuD;o7bD)w_sX$S}eAxwzy?UvgBH(S?;#HZiQMoS*2K2 zT3xe7t(~nU*1N5{rxB;QPLocnp4Ml>u<^FZwyC!nu;thW+pe~4wtZn|Vi#w(#jeBd zlf9FDx_yoPJqHbk*$%56S{;6Kv~mM9!g3B(KJ}#RZ#@)!hR|78Dq|Iq-afF%KE1Brn_fm;Im z_u$xr8UFki1L{Ox>G0o)(&RAZ;=|I=wN2l97;cLaHH6leTB-XXa*h%dBOEvi`+x zi?=Txl?TadvyiL>SuF~-LZ;|cS}4~l2eM~nS7yJ>iOM;atDY;(?aZ^v+mJV$@1Ote z62cPUlD4IWOIIx&SmwQ~YB{nzae3Pc;}r!fhE@iwJh+OsDs9zItL;~pu715HdQEGA zUct(O!LkCy1<%NCg+}G`0PgpNm-?d@-hMgNe6^V+j6x$b<6@S<$+<4_1hi}Ti zncS4LsjI}fWY1>OX6feMEuLErma3QLmkw?X+1j)X-&VBk_4Y;EFPF_I+q;9dL%E~B zJh;4Nr^(LEJ3myURP{Rblsw%57T)g973R8o)DE9*xN#~;4_o$q%o z4K@u`jhx2fBXC4{U8Qn{*%*B$Ge=nny$HAYq{=vy|sI0 z_vss+H_qMky?OB#|JK!>IX&II^LlUh#rO5!7TtbwC;iULyV-Xq?ybB}ykGP{?LpZ? z-G|jbTmIbG@7#ZCz;~eY(cDM(28Dyq{*m>M4?_iynUBkc4TkHUI6gT!;y-fz>HMcd z&t%Ugo)`Y2{>!cx7B7DI)$7;J(U{Spm-3gBzioV_{p!H$8L!*M!p0uH$#^p{Ui4P` z?ZJ24cOCDe-w#jZd?0@)|7iKK^;6KN`;!@ylm7$*nDhK&GcDTy000JJOGiWi{{a60 z|De66lK=n!32;bRa{vGf6951U69E94oEQKA00(qQO+^RW10Dqs0eD6H8~^|X*hxe| zR9M5!mt9C(XBfwyBsJ$NCfdc%$kB9e4E1J$7ahW2Pzt4#PEi;wSURaK(qeXVinxVI zc2Vd$24!0>HW*vV+KWM1yRA2~Zq{0pE*}bhAT2Ci;;ANTzGKdLpWS$}B<90*z1Ry6 z=e>CH{(sN&zWJZ?0{kDx{QSIjVq#+7%UsjxbXGW>&We&rZnwKO7K@D}5{Vz;@%Yz~ zNaQ^LQ2iHStJO+xY;3$AiA25)hr{28!{MQci3#1V#LJg28zYg(H;5<`LXZ%G>2x|0 zkH^QXR;&6bxghHWDlgZ?EDwV=iDuszeLfYKi{OsnMLXspRNfJtugz0oT z6NyA36^%ys3?T@DK@`O+@pv3#u~;Ue(I`fvQ4EK}vM7oJ007E@n#YeHt7KV5LI~uC zN~O}ORH_dx7RzWk2tg1GBO@bLj^iw{ECV3~WLeG+DV0iv0RS|aJy5Ib+uGXRG#ZV1 zM1=fMsZ<&O=k2Kf1Ki!!)rAbhgCoJ2to48z02R)%3Lg(_B_fk43V z=+UE3PM$pZ3jmOO004ls2M-?jSeE6QnwoY&WWi_vpu4lP6OBgW+`z!VM=Z-)3gl(x zfk43FcDrq-PMx{~0J0*O4}bu$HZwEhV_7!Si9*#Vo#^Q3c$=cA{!(oZ1Og71%Vj%# z`gD$XA%GkRhG969$;2BBhN7KNtJQolVL}LqqUi8=Jhs8X!Cm6T05T8{A3pTaG|e?O zHu8GCURSEhV&ZPM+ji#6nS$b_05TA>v$H;iVYtS|M&4jB=t>D@&!0Ve=J0yGwxOY+ zqT=NMG7t`j!^d$P*U-?w>-BnFx#~qxba=g9+qrY+N{VMYVW~j?VD9$q+uuc_(Z3~0 zLRpqUk|ZefOsCUCtyV8xy?XW6a^idGfMPQG@$vEDy1Ke|2_dRdtw%&vMMcFM$B!SE z8yXr4I_7f$2!def?d`QP3}e~r0YpR%B6hd7wxY>oDhZ(}C*IT3W2I@@@;s+MAEK$L zsVIb|l=!h@$E*}ZmGt&xGMQAX)%%K>6(OYCY&Ij$^93O^#l(*uJz7@W@ArGBr>C71 zMOEu`I$fzwn9XKvZf@QMp(!MO+9=|#l=ONAP9E=VAbRC_!x%aYHDiua-HCL9uFKi zkb%em^!4>I{r&wPQxx?th&(tF5i&IgZm6c`IrVvD;)a$#%Q_ zk8A+d#fukvtE;QW5m8$VAQ%ifR#sNB#d92UZf?%UvTP1SKFAJ4+ldn=?%VD5r^@An zj>TdJ2_Y;10OG&rM45*|A;-$fifwdsw3xjT0GPAe?bi?y4jnqwQ(s?SS7K#Dgb!3rKRPq_V)JI zIgSha{r>w?Q&SEA*oGn(PYM9EI|-?mbUD`Utef6hGjkgM0lw1e4aC-TQvd(}07*qo IM6N<$f}Q0FXaE2J literal 0 HcmV?d00001 diff --git a/src/qml/Library/images/config.png b/src/qml/Library/images/config.png new file mode 100755 index 0000000000000000000000000000000000000000..96d0c6985e34f4331ed5d38ee77fb568d7816971 GIT binary patch literal 2192 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 literal 0 HcmV?d00001 diff --git a/src/qml/Library/images/lineedit.png b/src/qml/Library/images/lineedit.png new file mode 100644 index 0000000000000000000000000000000000000000..2cc38dc35b38a6e5b4b244f8165cc093221cf419 GIT binary patch literal 1415 zcmV;21$g?2P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXW1 z1sp18KZTY6000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}000EyNkl^_M)OMqYwHdLJ>s}eN&%{;FDDU1^oxa z7nPzff|n{76#7tuptM>qwY6%kY0}0t>Ez5g`}=&DOiXMwNlBU%`@!bG%sywZNPmU@yB5~XvhKv!26k>*eX&bbw5aXw&G#TbLC zA|i}k8f7#)N6$bH1z+HgV`usG{a=Q?E!s!7KC!vxy=C(31Wd&|ecvMJ3*;m7aD5HC*jIC@bW7P5Ig-Q0^y^q_fw-J0m zj6kelw5houE82_#qG*u0YpWrOL||gWgF7E!_uyWV$r+*^k1tf(Nzyug%&@zEC#Vp+ z-0V1`zZa3St15$kvK(nl2r0Q-Ol?bzPe1yE_Wn-16qKwXbQZd~X=oG9`UMY4vl+b0 zEnCN`x?~q=^<8j}D4GBshPtXa^+Ya*&qxsw>eJKYeXeO|nvjp$2uVtm%P$GQ)!16A z-IodyiE^a&f9@ zg^NzDgk`h4nq^mljWq?lp1@rd!^XPn3-G$v@IS#B>(;l1*FD3=7z6=p7QBqiqj*h# z&EKk9S5?Jwoz)G%Hvs=H0AE)=yzUq_#^Q+=c-?wn*BH}0|MpiYT>j7{ndOr+G4IzOEFes*|GuptD@Dn(UGS#&L;j-B|1 zsH2&U*y-tMthY=|O)&E12&puhdPbUwrL2)l&@_WansDUHBbW#pjRtn=iwR<%r@Xbo z>xbXq$gvR+AQ*y%t9FW(r2eak2q6SQ2y>BZ>oaQ{Si`}O4l?}XFokNK^g@Dj-o4ke zx%6ClbA{3AKREpPVMralr3&30T?m4~tjYp3#x%Xv+RLJ=pMU$6*WP`Vw?2HE(vDvG zH&!`)=oDr{dBY=Z1JVB4{)cKwd%}h9#u+~`PH(A~qAgOS0~=d(nRpiqz_Tp7ET(F) ztO{e7&NJ@D=)I{#d25;Rqi31?qW*%Z4h)(!4G(v0E53Nwle=ndLj^P#M$e4Wn3_Q* zQyOG=?^iU63Yz`vea1jnUk`=u9Qi_#^Iu=!_@Se(6#5Gc0r98Q=HtI=(yw9^-MaUwHRW)2O7;H&o=HewTo|>XD7CtH6S$fJB{J3#O{sI^e VqK)QbrHcRn002ovPDHLkV1mrKo*@7L literal 0 HcmV?d00001 diff --git a/src/qml/Library/images/lineedit.sci b/src/qml/Library/images/lineedit.sci new file mode 100644 index 0000000..054bff7 --- /dev/null +++ b/src/qml/Library/images/lineedit.sci @@ -0,0 +1,5 @@ +border.left: 10 +border.top: 10 +border.bottom: 10 +border.right: 10 +source: lineedit.png diff --git a/src/qml/Library/images/loading.png b/src/qml/Library/images/loading.png new file mode 100644 index 0000000000000000000000000000000000000000..47a1589c5d42b913859b4e2e061455cb60689d56 GIT binary patch literal 813 zcmV+|1JeA7P)5wzp}e};K9B-v-g}gb7$_o zGBY}Xq#@umFa?x>5nvdo0&Bo;U7R#Bpm~;0~Y`R+Z{ZAfO+7nnQgW5 zUuZ!*4BP;&MpNB+Cl~@IfKf@`frVx(k}E*cao|2M-X*a|7JU>Y&6-)YtpG`rz(e2& zVShc=fzQBF{9Pl&LkTz$Nj-|dl%$3&*(X3!8F&=Q{a4QduYmbxaU%&rfSv)4y5Rya zA!*Lcc6R?$cP42Bm;ol)TlQ-F%BN=bA(yoYB#jYHOpW~kx(@ubNSv;~ZNf22zkC&V zY-T^YAqOzCMM)LlEaCLjF+y0KUl8|8(kO7#`Pe!rc_N}hh!=kXN|Lf&0l=N8EX9*v z$P*D8z??IS5SV1~ykBz@KAPFvUda;?t3bt>4@n{eE&+$#;ER5dCs=gv0ty*$#SN?y zj$FU70qi(iAp=f1<9q8gLv?}Z(r?3128=pm&wEY2LWcb z47_xcMu2<0h>%nQ&e2#WR_ax9I`AC$;wF}X2a=`_Kt2Xc(^zM05t^7VFU>n~uV&aQ zN~`SEa-ZnFDD@4?29RHrCQf`=?wzdAzAX3R>*Nh(d2Vagq%rCCNd>F{xs6HF-mpb$ r){THopk-_J-<#960umtuY0v)xw2egk7RCwCNmwRZ{Wf;fbv+bPCZR~39 z;%2+rF3hxCO=G4mK@!9)VTDA5k`+Z1{XIv45rIMCqKN2^r2Y^iq6`O$)xv)?H@3C0 ztGm1V^=xyOKHp#GH-4UuZeGF{9^T*iz0do+-{*P0&-4C{YjJVWJjfAZKa`i3Z(w=? z89>I6exwr_zFXsEWo0V|z$o6hapQ@Rkr6XIJUlx;KR+=$JKKTOv-XEisxdnMzeIpB z$6+QvKVQ!tQWG~fHy7vidLJDa7$|LTZ(rc~Dv|nu_3r`Fa6bUJYz|=fwcOm?&sVKl zWn3b*wb5vDCjIPx%(Mk+RN zaOS#o>)c66NfwCl@o`JEPpOKEin1cp*4Ad4o14F3-#bKOf0+zd;^X73ceS;(mr30LK(yR5fB=9Lp~C<urUh_&0P**oq(I(=A~S59T?WXLOh?zRU%y+a>F@8ih^wJAiKKvN2Sf?B znpXSY?);o^BEo6Rk)nA_6ixI%>rJtgNgu8qpbyMms>XOifLd(hH`vU(QHG z(6qF)2vj~=jst~E`;a6gn@DUT>=9zQ^4izeXL%)nYu2o>yyQ-(f-ifVB*V@jQun2Z zI5sx6RGvh15l*Qp&abEsU`XBYSq?mul9KWmU`$U>kJXMfe4!PHN-AeBhP{rxXL53K z_Bnfm$lcJ;@GE+|ZA%QJl+zzG+m`~(o8jx8syU%&2EX-dz&;^_^0(Tln*02I=Z zVkE~8L=PV#FLZWx4vUC3)0Jy}Z$jlcXH`&|KdCR+dWr(zlUd#x5C8{;BNcS9YVvoH z`7eH-MiLx`>qy62DoK4k$vbgDX<@vHuFGNalt^nwOV8pEW9NSWu#u7vIZo#~!X*<4 zxeRk?c6RoD!uu`jZl__wdy%HJ5j~AsuS#DHZ&FO3wO6ppbffMg6?4 zuFewfb}PJ)r-bz)M-)`MpOTKH)~oOWD46#p4!uEo$YtFLb~VU8<(uRC=(!0%K7{e8 z1&b^;S^*G|7Z3T{_a0aUbi8{q(M?o7xc&XaK2$ruqYDBS-Vjuu7C?ZPL0Q zA;;;0Rr1c(RgOtlu3x(9)3sP5r0zz@MsEjhp6id%9C>IyPj)ENh#}-0RRlz z_r64X04>8Y4jr$mz}AuIZeYX)ybB1Q7WV2wLb{M2eRH7kIPwx=|6NlF%Dv-Aul^fi yFN0@&4=nmbLn)|a{TJ7R{&yT?9`N`_fB^ullb!J)iNnbN0000Oz@Z0f2-7z;ux~O9+4z06=<WDR*FRcSTFz- zW=q650N5=6FiBTtNC2?60Km==3$g$R3;-}uh=nNt1bYBr$Ri_o0EC$U6h`t_Jn<{8 z5a%iY0C<_QJh>z}MS)ugEpZ1|S1ukX&Pf+56gFW3VVXcL!g-k)GJ!M?;PcD?0HBc- z5#WRK{dmp}uFlRjj{U%*%WZ25jX z{P*?XzTzZ-GF^d31o+^>%=Ap99M6&ogks$0k4OBs3;+Bb(;~!4V!2o<6ys46agIcq zjPo+3B8fthDa9qy|77CdEc*jK-!%ZRYCZvbku9iQV*~a}ClFY4z~c7+0P?$U!PF=S z1Au6Q;m>#f??3%Vpd|o+W=WE9003S@Bra6Svp>fO002awfhw>;8}z{#EWidF!3EsG z3;bXU&9EIRU@z1_9W=mEXoiz;4lcq~xDGvV5BgyU zp1~-*fe8db$Osc*A=-!mVv1NJjtCc-h4>-CNCXm#Bp}I%6j35eku^v$Qi@a{RY)E3 zJ#qp$hg?Rwkvqr$GJ^buyhkyVfwECO)C{#lxu`c9ghrwZ&}4KmnvWKso6vH!8a<3Q zq36)6Xb;+tK10Vaz~~qUGsJ8#F2=(`u{bOVlVi)VBCHIn#u~6ztOL7=^<&SmcLWlF zMZgI*1b0FpVIDz9SWH+>*hr`#93(Um+6gxa1B6k+CnA%mOSC4s5&6UzVlpv@SV$}* z))J2sFA#f(L&P^E5{W}HC%KRUNwK6<(h|}}(r!{C=`5+6G)NjFlgZj-YqAG9lq?`C z$c5yc>d>VnA`E_*3F2Qp##d8RZb=H01_mm@+|Cqnc9PsG(F5HIG_C zt)aG3uTh7n6Et<2In9F>NlT@zqLtGcXcuVrX|L#Xx)I%#9!{6gSJKPrN9dR61N3(c z4Tcqi$B1Vr8Jidf7-t!G7_XR2rWwr)$3XQ?}=hpK0&Z&W{| zep&sA23f;Q!%st`QJ}G3cbou<7-yIK2z4nfCCCtN2-XOGSWo##{8Q{ATurxr~;I`ytDs%xbip}RzP zziy}Qn4Z2~fSycmr`~zJ=lUFdFa1>gZThG6M+{g7vkW8#+YHVaJjFF}Z#*3@$J_By zLtVo_L#1JrVVB{Ak-5=4qt!-@Mh}c>#$4kh<88)m#-k<%CLtzEP3leVno>={htGUuD;o7bD)w_sX$S}eAxwzy?UvgBH(S?;#HZiQMoS*2K2 zT3xe7t(~nU*1N5{rxB;QPLocnp4Ml>u<^FZwyC!nu;thW+pe~4wtZn|Vi#w(#jeBd zlf9FDx_yoPJqHbk*$%56S{;6Kv~mM9!g3B(KJ}#RZ#@)!hR|78Dq|Iq-afF%KE1Brn_fm;Im z_u$xr8UFki1L{Ox>G0o)(&RAZ;=|I=wN2l97;cLaHH6leTB-XXa*h%dBOEvi`+x zi?=Txl?TadvyiL>SuF~-LZ;|cS}4~l2eM~nS7yJ>iOM;atDY;(?aZ^v+mJV$@1Ote z62cPUlD4IWOIIx&SmwQ~YB{nzae3Pc;}r!fhE@iwJh+OsDs9zItL;~pu715HdQEGA zUct(O!LkCy1<%NCg+}G`0PgpNm-?d@-hMgNe6^V+j6x$b<6@S<$+<4_1hi}Ti zncS4LsjI}fWY1>OX6feMEuLErma3QLmkw?X+1j)X-&VBk_4Y;EFPF_I+q;9dL%E~B zJh;4Nr^(LEJ3myURP{Rblsw%57T)g973R8o)DE9*xN#~;4_o$q%o z4K@u`jhx2fBXC4{U8Qn{*%*B$Ge=nny$HAYq{=vy|sI0 z_vss+H_qMky?OB#|JK!>IX&II^LlUh#rO5!7TtbwC;iULyV-Xq?ybB}ykGP{?LpZ? z-G|jbTmIbG@7#ZCz;~eY(cDM(28Dyq{*m>M4?_iynUBkc4TkHUI6gT!;y-fz>HMcd z&t%Ugo)`Y2{>!cx7B7DI)$7;J(U{Spm-3gBzioV_{p!H$8L!*M!p0uH$#^p{Ui4P` z?ZJ24cOCDe-w#jZd?0@)|7iKK^;6KN`;!@ylm7$*nDhK&GcDTy000JJOGiWi{{a60 z|De66lK=n!32;bRa{vGf6951U69E94oEQKA00(qQO+^RW10Dq!G7n4_0ssI8a!Eu% zR9M61S6ysV$rb+QUSGw;P8^)FGzJtQEN4?%soSPS6-rC13JLa+hE>Zh)lyYzRk|t? zeTe!%^H?cVLZVQ#R4LU)NOaSsyMPuuO_Naa<7^VvNt}|z!AXd{B)+y2=i0eHGp7%= zw+Ue>Ub21ZNF$Bz%$@H$Gv|Eg4DkQnSh4HV>GUg-BsmPj7)vITVV}>p{6AwGjYg|9 zO&c-{gX_AU$Y!(eXEK?S*4F;Cv$ONf;o;$U zV`Jl=02~JJ0sy)2|NQ*?FEW{oSXo&iP19&`aq<0NF!<7wu;j--+`4tEWY?};XB0(w zm54w@2m}Hn=gysLxqSKZn~6l?Z`IY+WDAbxtr6`?Fld7uv=;-Lr07##B0{#8{l}@Mg*Nm|ji3s6vc;>=|3%?HrgKq;^ zd#PbW;%?6NG2IOlLU9A7$k@Zje+5O6pgWt{WvoO2k4Vb0FZjsaNM3^mnt zeb}EpPcy??c5DW%WOG`_=xm+$cGBOhF>+1^v&^LpCVHh732mr9#Y_`fm z1br;UCr_SSIdbI4Z_3Kb?hOqMr9+|6KLA*plJgm}IOl?hz&U5SuG{kjXk9L7Yik<= zFbzO#mi2voedUrQxrGoVLK+RlVeAZ9xXZ?iD;2?o*|;o6;ik?%Vlo2`?X*& zI1C`N&O#xCY+06#a}FUyg(OL*B}r=Awr$&mmX?+mizOh0AkH~imW8~&fOBs7{r(Tm zoH;YK!3izPGG$rTiKtL;FvgfS5{b~wn>XJ9Fp+oAXKIopZRMOh8Dn6K!8Fa4j*gCj zvuDr#j&t4%fUhHv&1P3@HrpdflJ*vkjEF2<*JtnFzdu_Hc>W6Za?ZC(lEfc8co6ID z?Y(pH;>EWBbOX>f_`ulMShlXNZcI^>@2rVoo7d|-(A?boOCdzdz`#IHQ&ZCu_2JsJ zYqHbnbR0f>co_h4xg0%u^k{N)bTr!D-hMk23UvVZ=URQ)kk8xN+K$=n_CKUjsZ2>p z33oUg+Y9v{5zPY#0JtNB7$c&jqA0{UuaIT=3yiUP0M$Z>zZ^Pr=n{ZZpU?Nw#Kc58 zpVU_VYelqY&z_G|Rka5KfuU3?<#)MUTeoc4;>nXOXN-NBh+dW?>3fW^9{~8FBuTFW zXaMjv0DCy+H6D-WPESwIoT{pG`J7@D^D^3&*ML+*L&Mki?b~-^$BrEbola*JV@z6e zJ$S-cOifLNuUxtElfl8kp0%agGu4Czf6O}x4~N5Ze!stuh{C36W-QBMj4_!pRtPh0 znx>&?T4ru;?%}||zy~*O+_*M4IC$qtNB%r-Lm9xt-EQ|TMN!-UY?`L6 zs;asejYelwRh1jrT$?H2Yr&g%MC1XTeYDAkWoMu zNcg_bqsd7I`uZXzK8clFj>p+7#bPl5WaW*ap{Kx=2NM%qPp2`)wDgJjK7)gUynOWv z;HmvfZkM!N)S-o*`aDo#MH+j z9S6U?o!(T64@*n?RbYYbQVCtHwv-(9lX1ILI&@e81VKQkb<4?X2(=~%f}aAk)|eJs ze-ip2U{xD9Zvi#z=YX|!0<5)sU0aKUq$`<32vN8Gp#Z3NKx<8QdO8vTQ&UqYr5eti z>VPqZYD860JA{tnmkzXAKn;fiPTmU|x$?KL*4C|mOu+vwXykx&9Oh-h$6F^BR5mK^SF4NZ5b}j-c zl?slOxJsd7zHg1zVrzSwN~MD5c}OYin#WmTt)*J6QZAR-3j(Y$#9}e4dXmZYZ~1&z zsZ?S|2nrh;krJOKMgTqC-Ro*}c=+S%`T4HRd>-Yx5OL%U*s;dY+0nshCbKNwFD_;_ zHaDNYSy)JDtvC&kWTPVfR7y*Ol^1%=hnic6PoK|NP(a4{NNa_H03I^Z)<=07*qoM6N<$g58B! AEC2ui literal 0 HcmV?d00001 diff --git a/src/qml/Library/images/stripes.png b/src/qml/Library/images/stripes.png new file mode 100644 index 0000000000000000000000000000000000000000..9f36727ea424cd0da94bd5a7cee4082447275eeb GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqjKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgga4pBxq@gGdLS%5-~o-U3d5|`(m z-N<{$K*aT;^vADLPxXoJET5>DG2xP-Q1*siVN6aag0$kQzm$|0%E+I; z#Y!4I)=g1)z4*}Q$iB}`v_QR literal 0 HcmV?d00001 diff --git a/src/qml/Library/images/tab_schedule.png b/src/qml/Library/images/tab_schedule.png new file mode 100755 index 0000000000000000000000000000000000000000..9f223d49ffe1597bf15c986551b0958beb6f4406 GIT binary patch literal 4783 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 JPDHLkV1lc`DaQZ+ literal 0 HcmV?d00001 diff --git a/src/qml/Library/images/tab_settings.png b/src/qml/Library/images/tab_settings.png new file mode 100755 index 0000000000000000000000000000000000000000..3ab3c5a40c18f401e3f6296a96b5c58ce3297d9f GIT binary patch literal 5164 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 literal 0 HcmV?d00001 diff --git a/src/qml/Library/images/toolbar.sci b/src/qml/Library/images/toolbar.sci new file mode 100644 index 0000000..879aee1 --- /dev/null +++ b/src/qml/Library/images/toolbar.sci @@ -0,0 +1,5 @@ +border.left: 10 +border.top: 12 +border.bottom: 12 +border.right: 10 +source: toolbar.png diff --git a/src/qml/Library/images/toolbutton.png b/src/qml/Library/images/toolbutton.png new file mode 100644 index 0000000000000000000000000000000000000000..11310013eedc808ca278e3068d7779e708422726 GIT binary patch literal 2550 zcmVe zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00~}6L_t(&-kn;@Ze&RjJrQ}U z%I)@yx>vMhM)Vd??@(_*@_Yb7zz49M58wmf14gXj57@F~Rl)u9qI_Ld^LrWu%xs>-#eH7mxJ+t3r+Iu8>W-a$yaW&t9&L`W+wBlS zfLl#pt~TpGtyZfqA$po-jn!)P$DjWACx19QJHykbPjPf~R4mp`GJ`_tnt(B$NSb8* zzQ_XH0$@3QS~Nt>JtdI!X60wP2}Fdu54Tva*SNgA#6MqugMWPW6^@UOzjlnD5dfT= zoc#X9ix;2&_Se6`#l;1#uCB2Ehi68#3$>GQ&EiUM!f+9^cl;4}c5EU-m|w1^6+#F& zK0e0jCqKliSFiB*FTTLXA3grv1OS`O=JT_&Gn}8F-8ETgyHgg=*R!L*lAJU z{d}G_7_K?rx!~xVyW<`}gnh^5si>^ZGTuyS(`M1OQK- zJi%tO!GCt&#n|)yL5pugLm^OmbDx@NlF)fEk><<7FboZW0t6@k(*1ymcxVtz(*#lg z>~M2)joaHB{OI{7`1arb`fLJ#^?IFS*aF2~Q>LCE71Q5IL$F-wUE-g~UqYuw-8W91xn+bx`P@ZMvZCNMK50N8G~P*pH9 zL^DqZ&ENt)LYaKi!;NQmGju%+0H$cKFZvjcX1 z3lfFb0OuH6e~;a63r9c*Ap$T>6TJ5j5$txmIfa;AP=S|S+yPBAj$oxZdvWW^Iga8uDf^wmPB@BB2s9<3e0NHtnC{zg|fO9SapsENVl)F#7d{_lx z-pvfaKzx?e2qF=uH4{adCkVLNp4_%?~t) zssKzS1E{~dcBd==y(}PTb9-<6EPnMkiUV1u74Wpq1j3YavSEM~xjDL{X3rBWDBq-> z<#R!#$?=6sL)*oQ4jItoebN65fQA9dSR|Tcb;siL5&)1=rR%hnCY8XlW7Txs2S9yq z0>A>#1BT^|;r6*U%nJZ|3@{&s&I^ZKU`=15OjQd~&kxk8G&4!G%Nngd3jkWw5uHpE zTE8-6K)Mh@i0G<9c`0x*wPo3Hi)5_megz#P>d zGxL=RL<$L!9Z94{MURcu-u1mZwpfV5?^^&0uOC9kjvofVUN1CY7d*fO<_XGa!O?dX zf~O3E191T9VoOx!Qh2aqDbFv(5YJLB(Cq5i_6u~3_ zwbCyDnC{Q~z#ImH9Be7Nq`|V2l%*Shs$cX-%JG%P28av*JeS*c9o7gn09Yqz84w3| zb2gJQ?adRETCugS_ytATwLZdBc$unVohIe{UT2{?1jH|FOJI8M;l1ytLGS$x0D06;<&KZf=^ zKY%!<#cH>~WXj~R2rdiYS@o08_Vcb{k)!l zS%IomIEvfYl$2q$^oEvSqYJt8Ub;xAvQZ7f=$f^{T^~S1nApJ)gE(4Rs=Ri5z0j3J zn$D49XHcjugx68ww7}X05jM&teE*hOT_2dK$1M0UOh0GN9i%v`kmmx6Dg0nD7!gpI3_$P_2Y zXj^4Hpb~@jABRyBv#xkv7@Q)ZX^GWhn9R`BTRahgC%42QakQgUs;|?9;zFSmM@zL% zV}$49@j^}607?MEnUtDLmgEhg>NvdsL1X{l?miLb6QL>F?fCeFO zsI4~A0h=mq2wEVgUjNPZ_SA?HcRhSr0ghPFZG_VDS?VlMl^)zw?WNM5^V=(e&bbVP zRz3Tk4%(EbBtv=*8={Q8u2YKVQik-7Z#x$-NEQ+htR;Wx&Yp9`fu<B652VFZWs1RLPz+Io`c{_x1PR z|MypJ{*KUJFE1~D@&5Yy`QyirvDs{LOy>%5{%%hECFmYHFNM)una#u=iB$nYl{xCd z>`+x%o@f%LY03<`ySu}iH*fIv?OUwZ>tEj9e)yIE;PmwL*>=1AaDTV`n{)0{=Nx!) z-Lt<3#d3W%kV<5&zUl_us};i&=sgCA%~?Pyr_&~;w%^s&Ri4EE09*nYhh&1)L;wH) M07*qoM6N<$g3{N*E&u=k literal 0 HcmV?d00001 diff --git a/src/qml/Library/images/toolbutton.sci b/src/qml/Library/images/toolbutton.sci new file mode 100644 index 0000000..9e4f965 --- /dev/null +++ b/src/qml/Library/images/toolbutton.sci @@ -0,0 +1,5 @@ +border.left: 15 +border.top: 4 +border.bottom: 4 +border.right: 15 +source: toolbutton.png diff --git a/src/qml/Library/images/up.png b/src/qml/Library/images/up.png new file mode 100755 index 0000000000000000000000000000000000000000..05f05aad1eb024775bc7f83c8276bf2f2c9e552c GIT binary patch literal 3921 zcmV-X53cZuP)Oz@Z0f2-7z;ux~O9+4z06=<WDR*FRcSTFz- zW=q650N5=6FiBTtNC2?60Km==3$g$R3;-}uh=nNt1bYBr$Ri_o0EC$U6h`t_Jn<{8 z5a%iY0C<_QJh>z}MS)ugEpZ1|S1ukX&Pf+56gFW3VVXcL!g-k)GJ!M?;PcD?0HBc- z5#WRK{dmp}uFlRjj{U%*%WZ25jX z{P*?XzTzZ-GF^d31o+^>%=Ap99M6&ogks$0k4OBs3;+Bb(;~!4V!2o<6ys46agIcq zjPo+3B8fthDa9qy|77CdEc*jK-!%ZRYCZvbku9iQV*~a}ClFY4z~c7+0P?$U!PF=S z1Au6Q;m>#f??3%Vpd|o+W=WE9003S@Bra6Svp>fO002awfhw>;8}z{#EWidF!3EsG z3;bXU&9EIRU@z1_9W=mEXoiz;4lcq~xDGvV5BgyU zp1~-*fe8db$Osc*A=-!mVv1NJjtCc-h4>-CNCXm#Bp}I%6j35eku^v$Qi@a{RY)E3 zJ#qp$hg?Rwkvqr$GJ^buyhkyVfwECO)C{#lxu`c9ghrwZ&}4KmnvWKso6vH!8a<3Q zq36)6Xb;+tK10Vaz~~qUGsJ8#F2=(`u{bOVlVi)VBCHIn#u~6ztOL7=^<&SmcLWlF zMZgI*1b0FpVIDz9SWH+>*hr`#93(Um+6gxa1B6k+CnA%mOSC4s5&6UzVlpv@SV$}* z))J2sFA#f(L&P^E5{W}HC%KRUNwK6<(h|}}(r!{C=`5+6G)NjFlgZj-YqAG9lq?`C z$c5yc>d>VnA`E_*3F2Qp##d8RZb=H01_mm@+|Cqnc9PsG(F5HIG_C zt)aG3uTh7n6Et<2In9F>NlT@zqLtGcXcuVrX|L#Xx)I%#9!{6gSJKPrN9dR61N3(c z4Tcqi$B1Vr8Jidf7-t!G7_XR2rWwr)$3XQ?}=hpK0&Z&W{| zep&sA23f;Q!%st`QJ}G3cbou<7-yIK2z4nfCCCtN2-XOGSWo##{8Q{ATurxr~;I`ytDs%xbip}RzP zziy}Qn4Z2~fSycmr`~zJ=lUFdFa1>gZThG6M+{g7vkW8#+YHVaJjFF}Z#*3@$J_By zLtVo_L#1JrVVB{Ak-5=4qt!-@Mh}c>#$4kh<88)m#-k<%CLtzEP3leVno>={htGUuD;o7bD)w_sX$S}eAxwzy?UvgBH(S?;#HZiQMoS*2K2 zT3xe7t(~nU*1N5{rxB;QPLocnp4Ml>u<^FZwyC!nu;thW+pe~4wtZn|Vi#w(#jeBd zlf9FDx_yoPJqHbk*$%56S{;6Kv~mM9!g3B(KJ}#RZ#@)!hR|78Dq|Iq-afF%KE1Brn_fm;Im z_u$xr8UFki1L{Ox>G0o)(&RAZ;=|I=wN2l97;cLaHH6leTB-XXa*h%dBOEvi`+x zi?=Txl?TadvyiL>SuF~-LZ;|cS}4~l2eM~nS7yJ>iOM;atDY;(?aZ^v+mJV$@1Ote z62cPUlD4IWOIIx&SmwQ~YB{nzae3Pc;}r!fhE@iwJh+OsDs9zItL;~pu715HdQEGA zUct(O!LkCy1<%NCg+}G`0PgpNm-?d@-hMgNe6^V+j6x$b<6@S<$+<4_1hi}Ti zncS4LsjI}fWY1>OX6feMEuLErma3QLmkw?X+1j)X-&VBk_4Y;EFPF_I+q;9dL%E~B zJh;4Nr^(LEJ3myURP{Rblsw%57T)g973R8o)DE9*xN#~;4_o$q%o z4K@u`jhx2fBXC4{U8Qn{*%*B$Ge=nny$HAYq{=vy|sI0 z_vss+H_qMky?OB#|JK!>IX&II^LlUh#rO5!7TtbwC;iULyV-Xq?ybB}ykGP{?LpZ? z-G|jbTmIbG@7#ZCz;~eY(cDM(28Dyq{*m>M4?_iynUBkc4TkHUI6gT!;y-fz>HMcd z&t%Ugo)`Y2{>!cx7B7DI)$7;J(U{Spm-3gBzioV_{p!H$8L!*M!p0uH$#^p{Ui4P` z?ZJ24cOCDe-w#jZd?0@)|7iKK^;6KN`;!@ylm7$*nDhK&GcDTy000JJOGiWi{{a60 z|De66lK=n!32;bRa{vGf6951U69E94oEQKA00(qQO+^RW10DqnFAb$SNdN!@gGod| zR9M69S8YgJR~UXyZfv{~8lw`m;vA0R9E|D;tFSTVN@*Evvw~|Utm}%{Ki$90!Ll)J z%cei{M>nKJg&3=(eo)C`XYSR;s#qe(P*&5A=xV5jMn#d^M(@4np8Z%IZP#iNE&J04 z?w@<#kLSMUJsmqry4-5?rHRb2$TX>%TC@(K>P7nlt zER~2Dw{G3~#^>|RpFVxs31B~fIJeuKH!?Ef>gnmZUR_;%FxJX$im9ooQ+Mv%xnEOL zBLMgifMNZcAP5D+!^3?}r_*D#THo7Be?1d{K;X-}ckj-gJ9ln~HXi|Ce4ec!2p?a&c5TApaC8(G7r(w8 z$v>H!o13uP?cVI{>{0-x&3r^rJmT?qZnw6!+V||)^J>h=gTdejp-{+s@#4kN^z`)4 z0PKv^R}{q){r&xO&CSgh5)u;9V_EaJ7Z(>rr_=doZf@=g0On{#uD7@MD^V0fO-)U; z08*k!{^rusl5=2SV7j!lv;u%7#v$LQ$jz2nD^ z{|q2|i*3a9^z>A@T&{)s`ugvlZr~@B(C_zKQd3iZoSB(9Xt&!t&!0cv1i-&V0&Ms0 z-J=;98D^g6%L)n#9=P4^2>|L7R_*QWCP|WhnVy~wS*_L!0P?m|OloUulUy!WeOFi4 zbX{Ft+2bMx#uy2Q!)JoQ;8ImpRSST9FG5ajHd}_%>9n=AwcV_!s3-=&=^t&kSIlN} z$^88Myv1T!3Iqag7z~CSN+|%awY4?L@Ar=%IB?)E0Bo~FSFT(!7>&kv8DnX(EOU?I zfKm!YQRa+B<4ypF0bD2R$Lrp`d(X@p=lcQdc9tj<=cIIebpyV zo)iGkjgluOCjKPL@-a!06vh~RJRV~V%gf7>D2l(ex3|~n0idw3aJ8hQ +@license: GNU General Public License +*/ + +function isTodayAWeekDay(){ + var dayOfWeek = (new Date()).getDay(); + var isWeekDay = (dayOfWeek == 0 || dayOfWeek == 6)? false : true; + return isWeekDay; +} diff --git a/src/qml/Library/js/DBUtility.js b/src/qml/Library/js/DBUtility.js new file mode 100644 index 0000000..5904455 --- /dev/null +++ b/src/qml/Library/js/DBUtility.js @@ -0,0 +1,135 @@ +/* +@version: 0.1 +@author: Sudheer K. +@license: GNU General Public License +*/ + +function getDatabase() { + logMessage("Opening MarketsToday database.."); + return openDatabaseSync("MarketsToday", "1.0", "StorageDatabase", 100); +} + +function logMessage(strMessage){ + if (logUtility){ + logUtility.logMessage(strMessage); + } + else{ + console.log(strMessage); + } +} + +// Initialize tables +function initialize() { + var db = getDatabase(); + db.transaction( + function(tx) { + // Create the settings table if it doesn't already exist + // If the table exists, this is skipped + tx.executeSql('CREATE TABLE IF NOT EXISTS settings(setting TEXT UNIQUE, value TEXT)'); + tx.executeSql('CREATE TABLE IF NOT EXISTS tickers(symbol TEXT UNIQUE)'); + }, + function(error) { + logMessage("Error ["+error.code +"] - " + error.DOMString+" occurred."); + }); +} + +function getSetting(setting) { + var db = getDatabase(); + var res=""; + db.transaction( + function(tx) { + var rs = tx.executeSql('SELECT value FROM settings WHERE setting=?;', [setting]); + if (rs.rows.length > 0) { + res = rs.rows.item(0).value; + logMessage(setting+" is "+res); + } else { + res = "Unknown"; + } + }, + function(error) { + logMessage("Error ["+error.code +"] - " + error.DOMString+" occurred."); + } + ); + return res; +} + + +function setSetting(setting, value) { + var db = getDatabase(); + var res = ""; + db.transaction( + function(tx) { + var rs = tx.executeSql('INSERT OR REPLACE INTO settings VALUES (?,?);', [setting,value]); + if (rs.rowsAffected > 0) { + res = "OK"; + logMessage("Updated "+setting+" to "+value); + } else { + res = "Error"; + } + }, + function(error) { + logMessage("Error ["+error.code +"] - " + error.DOMString+" occurred."); + } + ); + return res; +} + +function addSymbol(symbol){ + logMessage('SQL> INSERT OR REPLACE INTO tickers VALUES ('+[symbol]+')'); + var db = getDatabase(); + var res = ""; + logMessage("Opened MarketsToday database.."); + + db.transaction(function(tx) { + var rs = tx.executeSql('INSERT OR REPLACE INTO tickers VALUES (?);', [symbol]); + logMessage("Inserted/replaced "+rs.rowsAffected+" rows"); + if (rs.rowsAffected > 0) { + res = "OK"; + } else { + res = "Error"; + } + }, + function(error) { + logMessage("Error ["+error.code +"] - " + error.DOMString+" occurred."); + } + ); + return res; +} + +function removeSymbol(symbol){ + logMessage('SQL> DELETE FROM tickers WHERE symbol = '+[symbol]); + var db = getDatabase(); + var res = ""; + db.transaction(function(tx) { + var rs = tx.executeSql('DELETE FROM tickers WHERE symbol = ?;', [symbol]); + logMessage("Deleted "+rs.rowsAffected+" rows"); + if (rs.rowsAffected > 0) { + res = "OK"; + } else { + res = "Error"; + } + }, + function(error) { + logMessage("Error ["+error.code +"] - " + error.DOMString+" occurred."); + } + ); + return res; +} + +function getAllSymbols(){ + var db = getDatabase(); + var symbolsArray = new Array(); + db.transaction(function(tx) { + var rs = tx.executeSql('SELECT symbol FROM tickers'); + logMessage("Fetched "+rs.rows.length+" rows"); + var i = 0; + for (i = 0; i < rs.rows.length; i++){ + symbolsArray[i] = rs.rows.item(i).symbol; + } + }, + function(error) { + logMessage("Error ["+error.code +"] - " + error.DOMString+" occurred."); + } + ); + return symbolsArray; +} diff --git a/src/qml/Library/js/ISODate.js b/src/qml/Library/js/ISODate.js new file mode 100644 index 0000000..1b85f88 --- /dev/null +++ b/src/qml/Library/js/ISODate.js @@ -0,0 +1,35 @@ +//Source: http://stackoverflow.com/questions/498578/how-can-i-convert-a-date-value-in-utc-format-to-a-date-object-in-javascript +var ISODate = { + convert : function (input){ + if (!(typeof input === "string")) throw "ISODate, convert: input must be a string"; + var d = input.match(/^(\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2}):(\d{2}(?:\.\d+)?)(Z|(([+-])(\d{2}):(\d{2})))$/i); + if (!d) throw "ISODate, convert: Illegal format"; + return new Date( + Date.UTC(d[1],d[2]-1,d[3],d[4],d[5],d[6]|0,(d[6]*1000-((d[6]|0)*1000))|0,d[7]) + + (d[7].toUpperCase() ==="Z" ? 0 : (d[10]*3600 + d[11]*60) * (d[9]==="-" ? 1000 : -1000)) + ); + }, + format : function(t,utc){ + if (typeof t === "string") t = this.convert(t); + if (!(t instanceof Date)) throw "ISODate, format: t is not a date object"; + t = utc ? + [t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds()] : + [t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds()]; + + return this.month[t[1]] + " " +this.ordinal(t[2]) + ", " +t[0] + + " @ " + this.clock12(t[3],t[4]); + }, + month:["January","February","March","April","May","June","July","September","October","November","December"], + ordinal:function(n) { + return n+(["th","st","nd","rd"][(( n % 100 / 10) | 0) ===1 ? 0 : n % 10 < 4 ? n % 10 : 0 ]); + }, + clock12:function(h24,m,s){ + h24%=24; + var h12 = h24 % 12; + if (h12===0) h12=12; + return h12 + ":" + + (m<10 ? "0" + m : m) + + (isFinite(s) ? ":" + (s<10?"0"+s:s): "") + + (h24<12 ? "AM":"PM"); + } +}; diff --git a/src/qml/MarketsToday.qml b/src/qml/MarketsToday.qml new file mode 100644 index 0000000..b0f0433 --- /dev/null +++ b/src/qml/MarketsToday.qml @@ -0,0 +1,212 @@ +/* +@version: 0.1 +@author: Sudheer K. +@license: GNU General Public License +*/ + +import Qt 4.7 + +import "Library" as Library +import "Library/js/ISODate.js" as DateLib +import "Library/js/DBUtility.js" as DBUtility +import "Library/js/Common.js" as Common + +Item { + id: screen; width: 400; height: 325 + + signal showConfigInNewWindow + signal quoteRefreshStarted + signal quoteRefreshCompleted + + property int autoUpdateInterval: 300000 + property bool updateWeekDaysOnly: false + + function getQuery(){ + var query; + var symbolsArray = DBUtility.getAllSymbols(); + if (symbolsArray && symbolsArray.length > 0){ + var i = 0; + for (i = 0; i< symbolsArray.length; i++) { + logUtility.logMessage("Appending "+symbolsArray[i]+ " to Query"); + + if (!query){ + query = '"'+symbolsArray[i]+'"'; + } + else{ + query = query + ',"' + symbolsArray[i]+'"'; + } + } + } + + return query; + } + + + function reloadQuotes(){ + var query = getQuery(); + if (query){ + screen.quoteRefreshStarted(); + logUtility.logMessage("Reloading Data.."); + + //var queryURL = 'http://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.quotes where symbol in ("INDU","^IXIC","^GSPC","CLJ11.NYM","YHOO","AAPL","GOOG","MSFT")&env=store://datatables.org/alltableswithkeys'; + var queryURL = 'http://query.yahooapis.com/v1/public/yql?q=select Symbol,Name,LastTradePriceOnly,Change,ChangeinPercent from yahoo.finance.quotes where symbol in ('+query+')&env=store://datatables.org/alltableswithkeys'; + logUtility.logMessage(queryURL); + + var response = new XMLHttpRequest(); + response.onreadystatechange = function() { + if (response.readyState == XMLHttpRequest.DONE) { + stockQuoteDataModel.xml = response.responseText; + lastUpdatedDateModel.xml = response.responseText; + logUtility.logMessage("Data Reload Completed.."); + screen.quoteRefreshCompleted(); + } + } + + response.open("GET", queryURL); + response.send(); + } + else{ + logUtility.logMessage("No stock symbols found in configuration."); + } + } + + function loadSettings(){ + var value; + value = DBUtility.getSetting("UpdateFreqency"); + if (!value || value == "0.0" || value == ""){ + autoUpdateInterval = 0; + } + else{ + autoUpdateInterval = parseInt(value)*60*1000; //Convert minutes to milliseconds + } + value = DBUtility.getSetting("UpdateWeekdaysOnly"); + if (!value || value == "0.0" || value == ""){ + updateWeekDaysOnly = false; + } + else{ + updateWeekDaysOnly = true; + } + } + + function initialize(){ + if (autoUpdateTimer.running) autoUpdateTimer.stop(); + loadSettings(); + reloadQuotes(); + if (autoUpdateInterval != 0) { + logUtility.logMessage("Starting Timer.."); + autoUpdateTimer.start(); + } + } + + Component.onCompleted: { + initialize(); + } + + Timer { + id: autoUpdateTimer + interval: autoUpdateInterval + //running: (autoUpdateInterval == 0? false:true) + repeat: true + onTriggered: { + if (!updateWeekDaysOnly){ + logUtility.logMessage("Update triggered: Allowed to update all days of the week"); + reloadQuotes(); + } + else if (Common.isTodayAWeekDay()){ + logUtility.logMessage("Update triggered: Today is a weekday"); + reloadQuotes(); + } + else{ + logUtility.logMessage("Update not triggered: Today is not a weekday"); + } + } + } + + XmlListModel{ + id: stockQuoteDataModel + query: "/query/results/quote" + + XmlRole { name: "symbol"; query: "Symbol/string()" } + XmlRole { name: "stockName"; query: "Name/string()" } + XmlRole { name: "lastTradedPrice"; query: "LastTradePriceOnly/string()" } + XmlRole { name: "change"; query: "Change/string()" } + XmlRole { name: "changePercentage"; query: "ChangeinPercent/string()" } + + onStatusChanged: { + if (status == XmlListModel.Ready){ + logUtility.logMessage("No. of tickers: "+stockQuoteDataModel.count); + } + } + } + + XmlListModel { + id: lastUpdatedDateModel + query: "/query" + namespaceDeclarations: "declare namespace yahoo='http://www.yahooapis.com/v1/base.rng';" + XmlRole { name: "timestamp"; query: '@yahoo:created/string()'} + + onStatusChanged: { + if (status == XmlListModel.Ready && lastUpdatedDateModel.get(0)){ + logUtility.logMessage("Updated: "+DateLib.ISODate.format(lastUpdatedDateModel.get(0).timestamp)); + } + } + } + + Rectangle { + id: background + anchors.fill: parent; + color: "#343434" + clip: true + property int itemHeight: 50 + + Library.TitleBar { + id: titleBar; + width: parent.width; height: 60; + anchors.top: parent.top + title: "Markets Today"; + buttonType: "Config"; + onSettingsClicked: { + screen.showConfigInNewWindow(); + } + + onCloseClicked: { + Qt.quit(); + } + } + + Loader { + id: marketsTodayLoader + anchors.top: titleBar.bottom + anchors.bottom: parent.bottom + width: parent.width + sourceComponent: stockQuotesParentComponent + } + + Component { + id: stockQuotesParentComponent + StockQuotesComponent{ + id:stockQuotesComponent + componentWidth: background.width + stockQuotesListModel: stockQuoteDataModel + lastUpdatedModel: lastUpdatedDateModel + + Connections { + target: screen + + onQuoteRefreshStarted: { + stockQuotesComponent.updateStarted(); + } + + onQuoteRefreshCompleted: { + stockQuotesComponent.updateCompleted(); + } + } + + Component.onCompleted: { + titleBar.title = "Markets Today"; + titleBar.buttonType = "Config"; + } + } + } + } +} diff --git a/src/qml/StockQuoteDelegate.qml b/src/qml/StockQuoteDelegate.qml new file mode 100644 index 0000000..e647282 --- /dev/null +++ b/src/qml/StockQuoteDelegate.qml @@ -0,0 +1,29 @@ +/* +@version: 0.1 +@author: Sudheer K. +@license: GNU General Public License +*/ + +import Qt 4.7 + +Component { + Item { + id: wrapper; width: wrapper.PathView.view.width; height: 50 + Rectangle { color: "black"; opacity: index % 2 ? 0.2 : 0.4; height: wrapper.height; width: wrapper.width; y: 1 + Row { + anchors.verticalCenter: parent.verticalCenter + anchors.left: parent.left + width: wrapper.PathView.view.width - 70; + spacing: 5 + Text { text: symbol; width: parent.width * 35/100; font.pixelSize: 18; font.bold: true; elide: Text.ElideRight; color: "white"; style: Text.Raised; styleColor: "black" } + Text { text: lastTradedPrice; width: parent.width * 25/100; font.pixelSize: 18; elide: Text.ElideLeft; color: "#cccccc"; style: Text.Raised; styleColor: "black" } + Text { text: change; width: parent.width * 20/100; font.pixelSize: 18; elide: Text.ElideRight + color: if(change >= 0){"green";} else {"red";} + style: Text.Raised; styleColor: "black" } + Text { text: changePercentage; width: parent.width * 20/100; font.pixelSize: 18; elide: Text.ElideRight; + color: if(change >= 0){"green";} else {"red";} + style: Text.Raised; styleColor: "black" } + } + } + } +} diff --git a/src/qml/StockQuotesComponent.qml b/src/qml/StockQuotesComponent.qml new file mode 100644 index 0000000..f37cf91 --- /dev/null +++ b/src/qml/StockQuotesComponent.qml @@ -0,0 +1,122 @@ +/* +@version: 0.1 +@author: Sudheer K. +@license: GNU General Public License +*/ + +import Qt 4.7 +import "Library" as Library +import "Library/js/ISODate.js" as DateLib + +Rectangle { + id: stockQuotesComponent + clip: true + color: "#343434" + + signal updateStarted + signal updateCompleted + + property XmlListModel stockQuotesListModel + property XmlListModel lastUpdatedModel + property int componentWidth + property int componentHeight + property int itemHeight: 50 + + Component { + id: stockQuotesDelegate + + Item { + id: wrapper; width: componentWidth; height: itemHeight + Item { + Rectangle { color: "black"; opacity: index % 2 ? 0.2 : 0.4; height: wrapper.height - 2; width: wrapper.width; y: 1 } + Row { + x: 30;y: 15; + width: componentWidth - 40; + spacing: 5 + + Text { text: if (width >= 250) {stockName;} else {symbol;} width: parent.width * 35/100; font.pixelSize: 18; font.bold: true; elide: Text.ElideRight; color: "white"; style: Text.Raised; styleColor: "black" } + Text { text: lastTradedPrice; width: parent.width * 25/100; font.pixelSize: 18; elide: Text.ElideLeft; color: "#cccccc"; style: Text.Raised; styleColor: "black" } + Text { text: change; width: parent.width * 20/100; font.pixelSize: 18; elide: Text.ElideRight + color: if(change >= 0){"green";} else {"red";} + style: Text.Raised; styleColor: "black" } + Text { text: changePercentage; width: parent.width * 20/100; font.pixelSize: 18; elide: Text.ElideRight; + color: if(change >= 0){"green";} else {"red";} + style: Text.Raised; styleColor: "black" } + } + } + } + } + + Rectangle{ + id: pathViewWrapper + width: parent.width + anchors.top: parent.top + anchors.bottom: footerText.top + color: "#343434" + + PathView{ + id: stockQuotesView + flickDeceleration: 500 + //preferredHighlightBegin: 1/stockQuotesView.count + //preferredHighlightEnd: 1/stockQuotesView.count + //pathItemCount: count + focus: true + interactive: true + model: stockQuotesListModel + delegate: stockQuotesDelegate + path: Path { + startX: width / 2 + startY: itemHeight/2 + PathLine { + x: width / 2 + y: stockQuotesView.count * itemHeight + itemHeight/2 + } + } + Keys.onDownPressed: if (!moving && interactive) { + console.log(stockQuotesView.height); + incrementCurrentIndex(); + } + Keys.onUpPressed: if (!moving && interactive) decrementCurrentIndex() + } + } + + Rectangle{ + id: footerText + width: parent.width + height: 25 + color: "#343434" + anchors.bottom: toolBar.top + ListView { + anchors.fill: parent + model: lastUpdatedModel + delegate: + Text { + text: "Updated: "+DateLib.ISODate.format(timestamp) + horizontalAlignment: Text.AlignRight; verticalAlignment: Text.AlignVCenter + width: parent.width; font.pixelSize: 12; elide: Text.ElideRight; + color: "#cccccc" + style: Text.Raised; styleColor: "black" + } + } + } + + Library.ToolBar { + id:toolBar + width: parent.width; height: 40 + anchors.bottom: parent.bottom + opacity: 0.9 + onReloadButtonClicked: reloadQuotes(); + onDownButtonClicked: if (!stockQuotesView.moving && stockQuotesView.interactive) stockQuotesView.currentIndex = stockQuotesView.currentIndex + 1 + onUpButtonClicked: if (!stockQuotesView.moving && stockQuotesView.interactive) stockQuotesView.currentIndex = stockQuotesView.currentIndex - 1 + onNewsButtonClicked: Qt.openUrlExternally("http://finance.yahoo.com"); + Connections { + target: stockQuotesComponent + onUpdateStarted:{ + if (!toolBar.updatePending) toolBar.updatePending = true; + } + onUpdateCompleted:{ + toolBar.updatePending = false; + } + } + } +} diff --git a/src/resources.qrc b/src/resources.qrc new file mode 100644 index 0000000..0e9d964 --- /dev/null +++ b/src/resources.qrc @@ -0,0 +1,37 @@ + + + qml/Library/ToolBar.qml + qml/Library/images/titlebar.png + qml/Library/images/lineedit.png + qml/Library/images/gloss.png + qml/Library/images/loading.png + qml/Library/images/lineedit.sci + qml/Library/images/titlebar.sci + qml/Library/TitleBar.qml + qml/Library/js/ISODate.js + qml/Library/js/DBUtility.js + qml/Library/images/config.png + qml/Library/images/close.png + qml/Library/images/reload.png + qml/Library/images/down.png + qml/Library/images/up.png + qml/Library/images/add.png + qml/Library/images/remove.png + qml/Library/images/news.png + qml/Library/images/checkbox_unchecked.png + qml/Library/images/checkbox_checked.png + qml/Library/images/icon_settings.png + qml/Library/images/icon_stocks.png + qml/Library/images/back.png + qml/Library/images/toolbar.png + qml/Library/images/toolbar.sci + qml/StockQuoteDelegate.qml + qml/StockQuotesComponent.qml + qml/ConfigOptionsComponent.qml + qml/ConfigTickersComponent.qml + qml/Config.qml + qml/MarketsToday.qml + qml/ConfigParametersComponent.qml + qml/Library/js/Common.js + + diff --git a/src/src.pro b/src/src.pro new file mode 100644 index 0000000..5872b08 --- /dev/null +++ b/src/src.pro @@ -0,0 +1,55 @@ +TEMPLATE = app + +QT += script \ + declarative \ + sql + +TARGET = marketstoday +HEADERS += \ + cpp/marketstodayqmlview.h \ + cpp/configqmlview.h \ + cpp/logutility.h +SOURCES += cpp/main.cpp \ + cpp/marketstodayqmlview.cpp \ + cpp/configqmlview.cpp +VPATH += cpp + +MOC_DIR = cpp/.mocs +OBJECTS_DIR = cpp/.objs + +OTHER_FILES += qml/MarketsToday.qml \ + qml/Config.qml \ + qml/ConfigOptionsComponent.qml \ + qml/ConfigParametersComponent.qml \ + qml/ConfigTickersComponent.qml \ + qml/StockQuoteDelegate.qml \ + qml/StockQuotesComponent.qml \ + qml/Library/TitleBar.qml \ + qml/Library/ToolBar.qml \ + qml/Library/js/DBUtility.js \ + qml/Library/js/ISODate.js \ + qml/Library/js/Common.js + +RESOURCES += \ + resources.qrc + +INSTALLDIR = /../debian/marketstoday + +symbian { + + TARGET.UID3 = 0xE6159209 + # Allow network access on Symbian + TARGET.CAPABILITY += NetworkServices +} + +unix { + INSTALLS += target desktop icon48 + target.path = $$INTSALLDIR/opt/marketstoday/ + desktop.path = /usr/share/applications/hildon-home + desktop.files += data/marketstoday.desktop + icon48.path = /usr/share/icons/hicolor/48x48/apps + icon48.files += data/icons/marketstoday.png +} + +# Include Qt Maemo 5 Home screen widget adaptor +include(qmaemo5homescreenadaptor/qmaemo5homescreenadaptor.pri) -- 1.7.9.5